def check(): t = machine.RTC().datetime() for r in Relays.data.keys(): rel = Relays.data[r] pin = machine.Pin(rel["pin"], machine.Pin.OUT) toreplace = {"dow": t[6], "hod": t[4], "moy": t[1], "year": t[0]} for s in Sensors.data["roms"].keys(): toreplace["s%s" % s] = Sensors.getValue(s) si = rel["condition"] for r in toreplace.keys(): si = si.replace("{%s}" % r, toreplace[r]) Status.log("Eval condition: %s" % si) try: if eval(si): pin.value(1) else: pin.value(0) except Exception: Status.log("Bad condition!") pass
broker = "demo.thingsboard.io" #host name port = 1883 #data listening port def on_publish(client, userdata, result): #create function for callback print("data published to thingsboard \n") pass client1 = paho.Client(client_id="control1") #create client object client1.on_publish = on_publish #assign function to callback client1.username_pw_set(ACCESS_TOKEN) #access token from thingsboard device client1.connect(broker, port, keepalive=60) #establish connection sensors = Sensors() #create sensor obj while True: #get the values values = sensors.getValue() payload = "{" #create message payload payload += "\"Temperature\":" + values[0] + "," payload += "\"Humidity\":" + values[1] + "," payload += "\"WindDirection\":" + values[2] + "," payload += "\"WindIntensity\":" + values[3] + "," payload += "\"RainHight\":" + values[4] payload += "}" ret = client1.publish("v1/devices/me/telemetry", payload) #topic-v1/devices/me/telemetry print("Please check LATEST TELEMETRY field of your device") print(payload) time.sleep(5) #sleep for 5 seconds