app = Flask(__name__) @app.route('/') def index(): return render_template('index.html',relays = Relay.relays) @app.route('/api') def api(): mode = int(request.args.get('mode')) relayNumber = int(request.args.get('relay'))-1 Relay.relays[relayNumber].mode=mode return "" @app.route('/states.json') def states(): d = [relay.state for relay in Relay.relays] return jsonify(d) @app.route('/favicon.ico') def favicon(): return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico', mimetype='image/vnd.microsoft.icon') if __name__ == '__main__': Relay.start() app.run(host='0.0.0.0') Relay.clean()
else: logger.debug( "gpio-subscriber: receive_command: unmatched %s not_in %s" % (args.name, str(message_json))) # debug # parse arguments parser = argparse.ArgumentParser() parser.add_argument("-e", "--endpoint", help="AWS IoT endpoint", required=True) parser.add_argument("-r", "--ca_file", help="Certificate Authority file", default='rootCA.pem') parser.add_argument("-c", "--client_cert_file", help="Client certificate file", default='certificate.pem') parser.add_argument("-k", "--client_key_file", help="Client Key File", default='private.pem') parser.add_argument("-p", "--port", help="MQTT port", type=int, default=8883) parser.add_argument("-q", "--qos", help="MQTT QoS", type=int, default=1) parser.add_argument("-t", "--topic", help="MQTT topic") parser.add_argument("-i", "--pin", help="gpio pin (using BCM numbering)", type=int, required=True) parser.add_argument("-s", "--name", help="topic name", required=True) parser.add_argument("-g", "--log_level", help="log level", type=int, default=logging.INFO) args = parser.parse_args() # logging setup logger = set_logger(level=args.log_level) relay = Relay(args.pin) relay.start() mqtt = MqttClient(args.endpoint, args.log_level, args.port) mqtt.set_tls(args.ca_file, args.client_cert_file, args.client_key_file) mqtt.add_callback(args.topic, receive_command) mqtt.add_subscription(args.topic, qos=args.qos) # subscribe or not? mqtt.run()