doorbell: 5s threshold for MQTT notifications

This commit is contained in:
2024-05-26 13:55:40 +02:00
parent 656579708f
commit 980234e1ff
@@ -20,6 +20,11 @@ logger.info('Initializing')
arduino = serial.Serial('/dev/Doorbell', 9600, timeout=.1)
# for ESP32
#arduino.setDTR(False)
#arduino.setRTS(False)
last_ring = time.time()
while True:
data = arduino.readline()[:-2] #the last bit gets rid of the new-line chars
@@ -35,14 +40,16 @@ while True:
try:
response = urllib.request.urlopen('http://192.168.178.60/bell/on', timeout=5).read().decode('utf-8')
# send MQTT
headers = {
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjYjY5NjA5NmY0N2E0NmZlOGEzYjczOGYzYmUzOTk5ZSIsImlhdCI6MTY2MTM0NDgxOSwiZXhwIjoxOTc2NzA0ODE5fQ.z9fzbVOA1Pbur3Zb07481n-SoYesj8cetw-CX6WPmTs",
"Content-Type": "application/json"
}
data = json.dumps({'payload': 'RING', 'topic': 'lewe/doorbell', 'retain': 'False'}).encode('utf8')
request = urllib.request.Request("https://www.nodebucket.de:8123/api/services/mqtt/publish", data, headers)
response = urllib.request.urlopen(request)
# send MQTT if last ring was more than 5 seconds ago
if ((time.time() - last_ring) > 5):
last_ring = time.time()
headers = {
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjYjY5NjA5NmY0N2E0NmZlOGEzYjczOGYzYmUzOTk5ZSIsImlhdCI6MTY2MTM0NDgxOSwiZXhwIjoxOTc2NzA0ODE5fQ.z9fzbVOA1Pbur3Zb07481n-SoYesj8cetw-CX6WPmTs",
"Content-Type": "application/json"
}
data = json.dumps({'payload': 'RING', 'topic': 'lewe/doorbell', 'retain': 'False'}).encode('utf8')
request = urllib.request.Request("https://www.nodebucket.de:8123/api/services/mqtt/publish", data, headers)
response = urllib.request.urlopen(request)
except Exception:
logger.error("Could not ring doorbell")
time.sleep(300)