From 06597d46a5baf42a55450eab4188ab9f05897029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torma=20Krist=C3=B3f?= Date: Sat, 12 Jun 2021 21:07:43 +0200 Subject: [PATCH] add alert endpoint --- src/app.py | 12 ++++++------ src/resources.py | 23 +++++++++++++++++++---- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/app.py b/src/app.py index a14a436..15604b5 100644 --- a/src/app.py +++ b/src/app.py @@ -47,6 +47,12 @@ app.config['MQTT_REFRESH_TIME'] = 1.0 # refresh time in seconds api = Api(app) mqtt.init_app(app) +api.add_resource(DeviceOfflineResrouce, "/devices//offline") +api.add_resource(DeviceOnlineResrouce, "/devices//online") +api.add_resource(AlertResource, "/devices//alert") +api.add_resource(SensorOfflineResource, "/devices///offline") +api.add_resource(SensorOnlineResource, "/devices///online") + @mqtt.on_log() def handle_logging(client, userdata, level, buf): @@ -65,9 +71,3 @@ def handle_status_message_proxy(*args, **kwargs): """ with app.app_context(): handle_status_message(*args, **kwargs) - - -api.add_resource(DeviceOfflineResrouce, "/devices/{deviceid}/offline") -api.add_resource(DeviceOnlineResrouce, "/devices/{deviceid}/online") -api.add_resource(SensorOfflineResource, "/devices/{deviceid}/{sensorid}/offline") -api.add_resource(SensorOnlineResource, "/devices/{deviceid}/{sensorid}/online") diff --git a/src/resources.py b/src/resources.py index 4d1c1eb..0e258d3 100644 --- a/src/resources.py +++ b/src/resources.py @@ -1,4 +1,6 @@ #!/usr/bin/env python3 +import json + from flask_restful import Resource from mqtt_flask_instance import mqtt import config @@ -23,7 +25,7 @@ class DeviceOfflineResrouce(Resource): :param deviceid: ID of device :return: """ - mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}", {"command": "offline"}) + mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}", json.dumps({"command": "offline"})) class DeviceOnlineResrouce(Resource): @@ -36,7 +38,7 @@ class DeviceOnlineResrouce(Resource): :param deviceid: ID of device :return: """ - mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}", {"command": "online"}) + mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}", json.dumps({"command": "online"})) class SensorOfflineResource(Resource): @@ -50,7 +52,7 @@ class SensorOfflineResource(Resource): :param sensorid: ID of sensor :return: """ - mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}/{sensorid}", {"command": "offline"}) + mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}/{sensorid}", json.dumps({"command": "offline"})) class SensorOnlineResource(Resource): @@ -64,4 +66,17 @@ class SensorOnlineResource(Resource): :param sensorid: ID of sensor :return: """ - mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}/{sensorid}", {"command": "online"}) + mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}/{sensorid}", json.dumps({"command": "online"})) + + +class AlertResource(Resource): + """ + Force alert on device + """ + def post(self, deviceid: str): + """ + Shut down a sensor of a device + :param deviceid: ID of device + :return: + """ + mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}", json.dumps({"command": "doAlert"}))