83 lines
2.0 KiB
Python
83 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
import json
|
|
|
|
from flask_restful import Resource
|
|
from mqtt_flask_instance import mqtt
|
|
import config
|
|
|
|
"""
|
|
Flask Restful endpoints
|
|
"""
|
|
|
|
__author__ = '@tormakris'
|
|
__copyright__ = "Copyright 2020, Birbnetes Team"
|
|
__module_name__ = "resources"
|
|
__version__text__ = "1"
|
|
|
|
|
|
class DeviceOfflineResrouce(Resource):
|
|
"""
|
|
Bring a device offline
|
|
"""
|
|
def post(self, deviceid: str):
|
|
"""
|
|
Shut down a device
|
|
:param deviceid: ID of device
|
|
:return:
|
|
"""
|
|
mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}", json.dumps({"command": "offline"}))
|
|
|
|
|
|
class DeviceOnlineResrouce(Resource):
|
|
"""
|
|
Bring a device online
|
|
"""
|
|
def post(self, deviceid: str):
|
|
"""
|
|
Bring a device online
|
|
:param deviceid: ID of device
|
|
:return:
|
|
"""
|
|
mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}", json.dumps({"command": "online"}))
|
|
|
|
|
|
class SensorOfflineResource(Resource):
|
|
"""
|
|
Bring a sensor offline
|
|
"""
|
|
def post(self, deviceid: str, sensorid: str):
|
|
"""
|
|
Shut down a sensor of a device
|
|
:param deviceid: ID of device
|
|
:param sensorid: ID of sensor
|
|
:return:
|
|
"""
|
|
mqtt.publish(f"{config.MQTT_COMMAND_TOPIC}/{deviceid}/{sensorid}", json.dumps({"command": "offline"}))
|
|
|
|
|
|
class SensorOnlineResource(Resource):
|
|
"""
|
|
Bring a sensor online
|
|
"""
|
|
def post(self, deviceid: str, sensorid: str):
|
|
"""
|
|
Bring a sensor online
|
|
:param deviceid: ID of device
|
|
:param sensorid: ID of sensor
|
|
:return:
|
|
"""
|
|
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"}))
|