pkgbuilds/aquaponic-receiver/aquaponic-receiver.py

65 lines
2.6 KiB
Python
Executable File

import os
import paho.mqtt.client as mqtt
from influxdb_client import InfluxDBClient
from influxdb_client import Point
from influxdb_client.client.write_api import SYNCHRONOUS
import json
import logging
logging.basicConfig(level=logging.DEBUG)
# mqttc = mqtt.Client("client-id")
# but note that the client id must be unique on the broker. Leaving the client
# id parameter empty will generate a random id for you.
mqttc = mqtt.Client()
influx_client = InfluxDBClient(url="http://localhost:8086", token="bjzIaf-hQU6eUf7-Sk9XvmjPNBG6EXuYg6iEjFhHfd2ggdqtL_5WpQxKBCRxWChB31YYXPoVrG2X0faoTZl1Eg==", org="sensors")
write_api = influx_client.write_api(write_options=SYNCHRONOUS)
def messageReceived(client, userdata, message):
print("received topic" + str(message.topic) + "with payload:" + str(message.payload))
message_as_json = json.loads(message.payload.decode("utf-8"))
#extract fields from json
CmToWater = float(message_as_json["uplink_message"]["decoded_payload"]["CmToWater"])
Temperature1 = float(message_as_json["uplink_message"]["decoded_payload"]["Temp1"])
Temperature2 = float(message_as_json["uplink_message"]["decoded_payload"]["Temp2"])
Temperature3 = float(message_as_json["uplink_message"]["decoded_payload"]["Temp3"])
Temperature4 = float(message_as_json["uplink_message"]["decoded_payload"]["Temp4"])
Temperature5 = float(message_as_json["uplink_message"]["decoded_payload"]["Temp5"])
Temperature6 = float(message_as_json["uplink_message"]["decoded_payload"]["Temp6"])
Datapoint = Point("environment_measurement")\
.field("CmToWater", CmToWater)\
.field("Temperature1", Temperature1)\
.field("Temperature2", Temperature2)\
.field("Temperature3", Temperature3)\
.field("Temperature4", Temperature4)\
.field("Temperature5", Temperature5)\
.field("Temperature6", Temperature6)\
print("writing Datapoint", Datapoint)
write_api.write("abfd776339848ad0", "cccp", Datapoint)
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
if (rc == 0):
print("(Success)")
else:
print("(Fail)")
# Subscribing in on_connect() means that if we lose the connection and
# reconnect then subscriptions will be renewed.
client.subscribe("#", 0)
appid = "freiland-sensors@ttn"
key = "NNSXS.LDAC6EEMEJNHGGWH44PKTWVB4VJWR7BAOS4CQJY.G7IEQBYOANUEMBGWOLL6WRC6QXYSFWJZLK2GK6J2Z6TNYFT73EEA"
devid = "board1"
mqttc.username_pw_set(appid, key)
mqttc.on_message = messageReceived
mqttc.on_connect = on_connect
mqttc.connect("eu1.cloud.thethings.network", 1883, 60)
mqttc.loop_forever()