Sterowanie furtką i bramą poprzez przeglądarkę

User avatar
Charly
Posts: 26
Joined: Wed Mar 23, 2016 6:45 pm

Post

W przypadku braku internetu nie można sterować bramą i furtką przy pomocy aplikacji Supla, ale można sterować poprzez przeglądarkę w telefonie lub kompie, bo jest WiFi.
Mam zrobiony program w Pythonie który steruje otwieraniem furtki, ale potrzeba jeszcze sterować bramą.
I tutaj prośba do Programistów aby mi pomogli uruchomić drugi przycisk(czyli dopisać kawałek kodu obsługujący drugi button), który sterował by bramą.
Kod pliku button.py

Code: Select all

#! /usr/bin/env pyt
# -*- coding: utf-8 -*-
import time
import tornado.ioloop
import tornado.web
import RPi.GPIO as GPIO
import datetime
import glob
import os
from time import strftime
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
GPIO.setup(17,GPIO.OUT)#otwieranie furtki
GPIO.setup(18,GPIO.IN)#czujnik otwarcia bramy
GPIO.setup(23,GPIO.IN)#czujnik otwarcia furtki
GPIO.setup(27,GPIO.OUT)#otwieranie bramy

class MainHandler(tornado.web.RequestHandler):
	def get(self):
		self.write("""
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Furtka-Brama</title>
	</head>
	<body bgcolor="#FFFFFF" text="#333333">
	<font face="Verdana">
	<center>
	<table>
	<tr>
		<td style="color: #FFFFFF; background-color: #06C64F; font-size: 40px; height: 90px; width:1500px; text-align: center;">
		Sterowanie furtką i bramą:</td>
	</tr>
	</table>
	<hr />
	<table>
	<tr>
		<td style="font-size: 60px; font-weight: bold; text-align: center;">
		Furtka:</td>
	</tr>
	</table>
		<form method="post">
		<button type="submit" style="color: #FFFFFF; background-color: #06C64F; height: 180px; width:180px; font-size: 40px;" value="1" name="Ps">Otwórz</button>
		</form>
	<hr />
	<table>
	<tr>
		<td style="font-size: 60px; font-weight: bold; text-align: center;">
		Brama:</td>
	</tr>
	</table>
		<form method="post">
		<button type="submit" style="color: #FFFFFF; background-color: #06C64F; height: 180px; width:180px; font-size: 40px;" value="2" name="Ps">Otwórz<br />Zamknij</button>
		</form>
	<hr />
	</center>
	</font> 
	</body>
	</html>
		""".format(Ps=MyGlobals.Ps))

	def post(self):#tutaj nastawiamy Ps na stronie)
		MyGlobals.Ps = int(self.request.arguments.get('Ps')[0])
		if MyGlobals.Ps==1:#otwieranie furtki
			GPIO.output(17,GPIO.HIGH)
			time.sleep(4)#czas otwierania furtki 4s
			GPIO.output(17,GPIO.LOW)
			MyGlobals.Ps=0
		elif MyGlobals.Ps==2:#otwieranie bramy
			GPIO.output(27,GPIO.HIGH)
			time.sleep(1)#impuls otwierania bramy 1s
			GPIO.output(27,GPIO.LOW)
			MyGlobals.Ps=0
		self.redirect(r"/")

def make_app():
    return tornado.web.Application([(r"/", MainHandler),])

class MyGlobals(object):
	Ps =0

def callback(*args, **kwargs):	
	tornado.ioloop.IOLoop.instance().add_timeout(time.time() + 1, callback)

if __name__ == "__main__":
    app = make_app()
    app.listen(8000)		
    tornado.ioloop.IOLoop.instance().add_timeout(time.time() + 1, callback)
    tornado.ioloop.IOLoop.current().start()
Last edited by Charly on Mon Jul 18, 2016 9:31 pm, edited 1 time in total.
User avatar
Charly
Posts: 26
Joined: Wed Mar 23, 2016 6:45 pm

Post

Dobra, poradziłem sobie sam, mogę mieć bądź ile przycisków i sterować urządzeniami przy braku połączenia z internetem, a efekt jest oto taki:

Przy okazji wyszło niedociągnięcie aplikacji Supla, a mianowicie gdy załączę zasilanie za pomocą mojego skryptu, Supla dalej pokazuje że wyłącznik jest wyłączony i odwrotnie, załączę zasilanie Suplą, moja aplikacja pokazuje dobrze że zasilanie jest załączone, następnie wyłączę zasilanie moją aplikacją, a Supla dalej pokazuje że jest załączone. A więc Supla nie sprawdza faktycznego stanu na określonym pinie RPi tylko sygnalizuje użycie swojego wyłącznika. Do poprawy.
You do not have the required permissions to view the files attached to this post.
User avatar
wojtas567
Posts: 2237
Joined: Sun Apr 03, 2016 7:16 pm
Location: Olsztyn

Post

Witam
czy jak już kolega się pochwalił swoją wersją aplikacji czy dodatkiem to jest możliwość po testować?
Pozdrawiam
Wojtek
User avatar
Charly
Posts: 26
Joined: Wed Mar 23, 2016 6:45 pm

Post

Jak najbardziej, proszę pobierać kod i wklejać, przerabiać jak się tylko podoba i używać.
Nie jest to żadna aplikacja, ani tym bardziej dodatek do niej, a skrypt napisany w Pythonie który waży zaledwie 10kb i można go sobie parę razy dziennie przerabiać według swoich potrzeb, znając tylko podstawy Pythona i HTML-a, a jego efekt działania jest wyświetlany za pomocą przeglądarki internetowej.
Zaletą jego jest to, że możemy go używać na telefonach z Windowsem (jak wiemy aplikacja Supla pod ten system póki co nie została zrobiona), na laptopach i każdych innych komputerach, a także na iPa-dach. Co prawda jest aplikacja Supla na iPhone, ściągnąłem ją na iPad ale nie działa.
Mało tego, możemy go używać także tam gdzie nie ma dostępu do internetu, a mamy zainstalowany jakiś stary niepotrzebny już router, który posiada WiFi.
vcompl
Posts: 158
Joined: Mon Apr 11, 2016 1:32 pm

Post

Jak najbardziej, proszę pobierać kod i wklejać, przerabiać jak się tylko podoba i używać.
A skąd można ściągnąć? prośba o link
User avatar
Charly
Posts: 26
Joined: Wed Mar 23, 2016 6:45 pm

Post

vcompl wrote:
A skąd można ściągnąć? prośba o link
W pierwszym poście jest kod już poprawiony i można go sobie skopiować i uruchomić.
Jest przystosowany do sterowania bramą i otwieraniem furtki, a reszta to już zależy od potrzeb i pomysłowości użytkownika.
Jak widać na zrzutach ja mam pomiary temperatur, sygnalizację otwarcia bramy i furtki, notowania Max i Min temperatury zewnętrznej w każdym dniu, resetowanej o północy lub ręcznie, zapisywanie do plików *,csv temperatur, otwarć bramy i furtki, sterowanie piecem CO itd., itp...
Zieciu971
Posts: 12
Joined: Wed Sep 21, 2016 7:49 pm

Post

Jak to uruchomić ?

Return to “Pomoc”