save
This commit is contained in:
parent
7092c79b56
commit
63ff5dd151
87
bin/mqtt_sensors_listener.py
Executable file
87
bin/mqtt_sensors_listener.py
Executable file
@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python3
|
||||
import include_homekit
|
||||
import sys
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from enum import Enum
|
||||
from typing import Optional, Union
|
||||
from telegram import ReplyKeyboardMarkup, User
|
||||
from time import time
|
||||
from datetime import datetime
|
||||
from aiohttp import web
|
||||
|
||||
from homekit.config import config, is_development_mode, AppConfigUnit
|
||||
from homekit.telegram import bot
|
||||
from homekit.telegram.config import TelegramBotConfig, TelegramUserListType
|
||||
from homekit.telegram._botutil import user_any_name
|
||||
from homekit.relay.sunxi_h3_client import RelayClient
|
||||
from homekit import http
|
||||
from homekit.mqtt import MqttNode, MqttWrapper, MqttPayload, MqttNodesConfig, MqttModule
|
||||
from homekit.mqtt.module.relay import MqttPowerStatusPayload, MqttRelayModule
|
||||
from homekit.mqtt.module.temphum import MqttTemphumDataPayload
|
||||
from homekit.mqtt.module.diagnostics import InitialDiagnosticsPayload, DiagnosticsPayload
|
||||
|
||||
|
||||
class MqttSensorsListenerConfig(AppConfigUnit):
|
||||
NAME = 'mqtt_sensors_listeners'
|
||||
|
||||
@classmethod
|
||||
def schema(cls) -> Optional[dict]:
|
||||
return {
|
||||
'http_listen': cls._addr_schema(required=True),
|
||||
'nodes': {
|
||||
'type': 'list',
|
||||
'required': True,
|
||||
'empty': False,
|
||||
'schema': {
|
||||
'type': 'string',
|
||||
'allowed': MqttNodesConfig.get_nodes(only_names=True)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# config.load_app(MqttSensorsListenerConfig)
|
||||
|
||||
routes = web.RouteTableDef()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
mqtt: MqttWrapper
|
||||
mqtt_node: MqttNode
|
||||
mqtt_relay_module: Union[MqttRelayModule, MqttModule]
|
||||
|
||||
time_format = '%d.%m.%Y, %H:%M:%S'
|
||||
|
||||
|
||||
class SensorStatus:
|
||||
last_time: int = 0
|
||||
last_boot_time: int = 0
|
||||
|
||||
|
||||
class TemphumStatus(SensorStatus):
|
||||
temp: float = 0.0
|
||||
rh: float = 0.0
|
||||
|
||||
|
||||
class RelayStatus(SensorStatus):
|
||||
opened = False
|
||||
|
||||
|
||||
class WateringMcuStatus(RelayStatus):
|
||||
ambient_temp: float = 0.0
|
||||
ambient_rh: float = 0.0
|
||||
|
||||
|
||||
@routes.get('/sensors')
|
||||
async def http_sensors_get(req: web.Request):
|
||||
return await http.ajax_ok({
|
||||
'hello': 'world'
|
||||
})
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
mqtt = MqttWrapper(client_id='mqtt_sensors_listener',
|
||||
randomize_client_id=is_development_mode())
|
||||
http.serve(addr=config.app_config['http_addr'],
|
||||
routes=routes)
|
Loading…
x
Reference in New Issue
Block a user