How to check gpio pin input, when http-server is running?
Posted: Fri Aug 31, 2018 1:26 pm
Hello!
I have a mini project at home.
I want to send a notification, when motion sensor is active.
My problem is, how can i check the input value, when http server is running.
Is checks, and send the message to my phone, but only at once.
My program ask the User, from the wifi connection settings.
Board: Wemos D1 Mini
Motion sensor: hc-sr501
Here is my code:
I have a mini project at home.
I want to send a notification, when motion sensor is active.
My problem is, how can i check the input value, when http server is running.
Is checks, and send the message to my phone, but only at once.
My program ask the User, from the wifi connection settings.
Board: Wemos D1 Mini
Motion sensor: hc-sr501
Here is my code:
Code: Select all
import time
import usocket as socket
import network
from machine import Pin
import urequests
import machine
import os
time.sleep(5)
#SZERVER
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
ap_if = network.WLAN(network.AP_IF)
ap_if.active(True)
#szerver beállítások:
SSID='mozgaserzekelo'
JELSZO='12345678'
IPCIM='192.168.4.1'
ATJARO='192.168.4.1'
#szerver beállítások vége
ap_if.config(essid=SSID, channel=11, password=JELSZO)
ap_if.ifconfig((IPCIM,'255.255.255.0',ATJARO,'208.67.222.222'))
#SZERVER VÉGE
###########################################
wlan_list = sta_if.scan()
time.sleep(2)
mozgas = Pin(15, Pin.IN)#d8
hozzaferes = ["default","default","default"]
reset=0
tovabblepes=0
ido=time.ticks_ms()
elso_ertesites=0
idokoz=60000
bekapcs=0
jelzes=0
listazas='''<!DOCTYPE html><html>
<head><title>MOZGÁSÉRZÉKELŐ</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="about:blank">
<style>
td{padding: 15px;text-align: left;border: 1px solid #ddd;}
th {background-color: #4CAF50;color: white;}
table {font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
border-collapse: collapse;border: 1px solid #ddd;}
</style>
</head>
<body>
<TABLE align="center">
<form>
<tr>
<th>Wifi hálózatok</th>
<th>Kiválaszt</th>
</tr>%s
<tr>
<td></td>
<td><input type="submit" value="Tovább"></td>
</tr>
</form>
</table>
</body>
</html>'''
jelszobekeres='''<!DOCTYPE html><html>
<head><title>MOZGÁSÉRZÉKELŐ</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="about:blank">
<style>
td{padding: 15px;text-align: left;border: 1px solid #ddd;}
th {background-color: #4CAF50;color: white;}
table {font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
border-collapse: collapse;border: 1px solid #ddd;}
</style>
</head>
<body>
<TABLE align="center">
<form>
<tr>
<th>Wifi hálózat jelszava</th>
<th>Mentés</th>
</tr>
<tr>
<td><input type="text" name="jelszo"></td>
<td><input type="submit" value="Mentés"></td>
</tr>
</form>
</table>
</body>
</html>'''
erzekelo_neve='''<!DOCTYPE html><html>
<head><title>MOZGÁSÉRZÉKELŐ</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="about:blank">
<style>
td{padding: 15px;text-align: left;border: 1px solid #ddd;}
th {background-color: #4CAF50;color: white;}
table {font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
border-collapse: collapse;border: 1px solid #ddd;}
</style>
</head>
<body>
<TABLE align="center">
<form>
<tr>
<th>Mozgásérzékelő elnevezése</th>
<th>Mentés</th>
</tr>
<tr>
<td><input type="text" name="m_neve"></td>
<td><input type="submit" value="Mentés"></td>
</tr>
</form>
</table>
</body>
</html>'''
befejezes='''<!DOCTYPE html><html>
<head><title>MOZGÁSÉRZÉKELŐ</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="about:blank">
<style>
td{padding: 15px;text-align: center;border: 1px solid #ddd;}
th {padding: 15px;background-color: #4CAF50;color: white;}
table {font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
border-collapse: collapse;border: 1px solid #ddd;}
</style>
</head>
<body>
<TABLE align="center">
<form>
<tr>
<th colspan="2">Mozgásérzékelő</th>
</tr>
<tr>
<td><input type="button" value="BE" onclick="location.href='http://192.168.4.1/?be'"></td>
<td><input type="button" value="KI" onclick="location.href='http://192.168.4.1/?ki'"></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="RESET" onclick="location.href='http://192.168.4.1/?reset'"></td>
</tr>
</form>
</table>
</body>
</html>'''
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('', 80))
s.listen(5)
while True:
try:
conn, addr = s.accept()
print("Got a connection from %s" % str(addr))
request = conn.recv(2048)
#print("Content = %s" % str(request))
request = str(request)
print (request)
#print (request[8:11])
#parancsget = request[8:11]
if hozzaferes[0]=="default" or reset==1:
eleje=request.find("ssidk")
elsoszam=eleje+6
vege=request.find("HTTP/1.1")
vegeszam=vege-1
#print(request[elsoszam:vegeszam])
rows = ['<tr><td>%s</td><td><input type="radio" name="ssidk" value="%s"></td></tr>' % (str(i[0], 'utf8'), str(i[0], 'utf8')) for i in wlan_list]
response = listazas % '\n'.join(rows)
if eleje!=-1:
valasztott_ssid=request[elsoszam:vegeszam]
tovabblepes=1
hozzaferes[0]=str(valasztott_ssid)
response = jelszobekeres
print(hozzaferes)
print("hozzaferes_default")
conn.sendall(response)
time.sleep(0.2)
conn.close()
if tovabblepes==1:
eleje=request.find("jelszo")
elsoszam=eleje+7
vege=request.find("HTTP/1.1")
vegeszam=vege-1
print(request[elsoszam:vegeszam])
ssid_jelszava=request[elsoszam:vegeszam]
if eleje!=-1:
hozzaferes[1]=str(ssid_jelszava)
tovabblepes=2
response = erzekelo_neve
print(hozzaferes)
print("tovabblepes1")
conn.sendall(response)
conn.close()
if tovabblepes==2:
eleje=request.find("m_neve")
elsoszam=eleje+7
vege=request.find("HTTP/1.1")
vegeszam=vege-1
erzekelo_nev=request[elsoszam:vegeszam]
if eleje!=-1:
hozzaferes[2]=str(erzekelo_nev)
tovabblepes=3
response = befejezes
print(hozzaferes)
print("tovabblepes2")
conn.sendall(response)
conn.close()
if tovabblepes==3:
print("tovabblepes3")
response = befejezes
bekapcs=1
tovabblepes=0
conn.sendall(response)
conn.close()
if bekapcs==1:
print("Mozgásérzékelő bekapcsolva...")
ido2=time.ticks_ms()
eltelt_ido=ido2-ido
response = befejezes
conn.sendall(response)
conn.close()
if mozgas.value()==1:
print("mozgás")
jelzes=1
if jelzes==1:
if elso_ertesites==0 or eltelt_ido>=idokoz:
sta_if.active(True)
SSIDWIFI=hozzaferes[0]
JELSZOWIFI=hozzaferes[1]
hely=hozzaferes[2]
sta_if.connect(SSIDWIFI, JELSZOWIFI)
for x in range(1,15):
time.sleep(1)
if x ==14 and sta.isconnected()!=True:
machine.reset()
else:
break
ertesites = '***************'
response = urequests.post("http://api.pushingbox.com/pushingbox?devid="+ertesites+"&hely="+hely)
time.sleep_ms(250)
elso_ertesites=1
sta_if.active(False)
time.sleep_ms(500)
#ap_if.active(True)
#time.sleep_ms(500)
elso_ertesites=1
jelzes=0
except:
print('')