Initial commit of miflora mqtt daemon
This commit is contained in:
commit
56faebe142
|
@ -0,0 +1,16 @@
|
||||||
|
[mqtt]
|
||||||
|
|
||||||
|
hostname = homeassistant
|
||||||
|
port = 1883
|
||||||
|
timeout = 60
|
||||||
|
topic_prefix = miflora
|
||||||
|
|
||||||
|
[miflora]
|
||||||
|
|
||||||
|
timeout = 600
|
||||||
|
sleep = 120
|
||||||
|
|
||||||
|
[sensors]
|
||||||
|
|
||||||
|
Feinblatt=C4:7C:8D:61:7E:0B
|
||||||
|
Drachenbaum=C4:7C:8D:61:9D:8D
|
|
@ -0,0 +1,57 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import paho.mqtt.client as mqtt
|
||||||
|
import time
|
||||||
|
from miflora.miflora_poller import MiFloraPoller, \
|
||||||
|
MI_CONDUCTIVITY, MI_MOISTURE, MI_LIGHT, MI_TEMPERATURE
|
||||||
|
from configparser import ConfigParser
|
||||||
|
import json
|
||||||
|
|
||||||
|
parameters = [MI_TEMPERATURE,
|
||||||
|
MI_LIGHT,
|
||||||
|
MI_MOISTURE,
|
||||||
|
MI_CONDUCTIVITY]
|
||||||
|
|
||||||
|
config = ConfigParser(delimiters=('=', ))
|
||||||
|
config.read('config.ini')
|
||||||
|
|
||||||
|
sleep_time = config['miflora'].getint('sleep', 60)
|
||||||
|
topic_prefix = config['mqtt'].get('topic_prefix', 'miflora')
|
||||||
|
miflora_timeout = config['miflora'].getint('timeout', 600)
|
||||||
|
|
||||||
|
# The callback for when the client receives a CONNACK response from the server.
|
||||||
|
def on_connect(client, userdata, flags, rc):
|
||||||
|
print("Connected with result code "+str(rc))
|
||||||
|
|
||||||
|
# Initialize Flora sensors
|
||||||
|
|
||||||
|
flores = {}
|
||||||
|
for flora in config['sensors'].items():
|
||||||
|
print('Adding', flora[0])
|
||||||
|
flores[flora[0]] = MiFloraPoller(
|
||||||
|
mac=flora[1],
|
||||||
|
cache_timeout=miflora_timeout)
|
||||||
|
|
||||||
|
|
||||||
|
client = mqtt.Client()
|
||||||
|
client.on_connect = on_connect
|
||||||
|
client.connect(config['mqtt'].get('hostname', 'homeassistant'),
|
||||||
|
config['mqtt'].getint('port', 1883),
|
||||||
|
config['mqtt'].getint('timeout', 60))
|
||||||
|
client.loop_start()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
|
||||||
|
for flora in flores:
|
||||||
|
print('Publishing for', flora)
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
for param in parameters:
|
||||||
|
data[param] = flores.get(flora).parameter_value(param)
|
||||||
|
|
||||||
|
client.publish("{}/{}".format(
|
||||||
|
topic_prefix,
|
||||||
|
flora), json.dumps(data))
|
||||||
|
|
||||||
|
print('Sleeping ...')
|
||||||
|
time.sleep(sleep_time)
|
|
@ -0,0 +1,3 @@
|
||||||
|
miflora==0.1.15
|
||||||
|
paho-mqtt==1.2
|
||||||
|
wheel==0.24.0
|
Loading…
Reference in New Issue