from bottle import route, run, template, request import RPi.GPIO as GPIO import paho.mqtt.publish as publish def transmitMQTT(strMsg): strMqttBroker = "192.168.1.200" strMqttChannel = "home/inside/zonneboiler/stat" print('strMsg is:') print(strMsg) publish.single(strMqttChannel, strMsg, hostname=strMqttBroker, qos=1, auth={'username': 'esp', 'password': 'kmfpkylf'}) def relayClose(): GPIO.output(CONTROL_PIN, True) f = open("/home/pi/relay/status.txt","w+") stat = "CLOSED" f.write(stat) f.close() transmitMQTT(stat) def relayOpen(): GPIO.output(CONTROL_PIN, False) f = open("/home/pi/relay/status.txt","w+") stat = "OPEN" f.write(stat) f.close() transmitMQTT(stat) def relayCloseManual(): GPIO.output(CONTROL_PIN, True) f = open("/home/pi/relay/status.txt","w+") stat = "CLOSEDMANUAL" f.write(stat) f.close() transmitMQTT(stat) def relayOpenManual(): GPIO.output(CONTROL_PIN, False) f = open("/home/pi/relay/status.txt","w+") stat = "OPENMANUAL" f.write(stat) f.close() transmitMQTT(stat) GPIO.setmode(GPIO.BCM) CONTROL_PIN = 2 stat = "STARTING" transmitMQTT(stat) GPIO.setup(CONTROL_PIN, GPIO.OUT) @route('/') def index(): f=open("/home/pi/relay/status.txt","r") if f.mode=='r': stat=f.read() f.close() transmitMQTT(stat) return template('/home/pi/relay/home.tpl', status=stat) @route('/closed') def index(): relayClose() return template('/home/pi/relay/home.tpl', status="closed") @route('/open') def index(): relayOpen() return template('/home/pi/relay/home.tpl', status="open") @route('/stats') def index(): f=open("/home/pi/relay/status.txt","r") if f.mode=='r': stat=f.read() f.close() transmitMQTT(stat) return template('/home/pi/relay/stats.tpl', status=stat) @route('/closeManual') def index(): relayCloseManual() return template('/home/pi/relay/home.tpl', status="closed") @route('/openManual') def index(): relayOpenManual() return template('/home/pi/relay/home.tpl', status="open") try: relayClose() run(host='0.0.0.0', port=80) finally: print('Cleaning up GPIO') GPIO.cleanup() transmitMQTT("STOPPING")