diff --git a/doorbell/klingel_sender_nano_serial/doorbell.py b/doorbell/klingel_sender_nano_serial/doorbell.py index b1fe600..f2d8b12 100644 --- a/doorbell/klingel_sender_nano_serial/doorbell.py +++ b/doorbell/klingel_sender_nano_serial/doorbell.py @@ -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) \ No newline at end of file