#!/usr/bin/python3 import sys import json import time import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("connected") def on_disconnect(client, userdata, rc): print("disconnected") def main(): if len(sys.argv) < 3: print(len(sys.argv)) print(f'usage: {sys.argv[0]} json-file mqtt-host') return 1 filename = sys.argv[1] mqtthost = sys.argv[2] client = mqtt.Client() client.on_connect = on_connect client.on_disconnect = on_disconnect pvalues = {} while True: if not client.is_connected(): client.connect(mqtthost, 1883) with open(filename, 'r', encoding = 'utf-8') as f: values = json.loads(f.read()) for key in ('co2', 'temperature', 'humidity'): curr = values.get(key) prev = pvalues.get(key) if prev and prev == curr: continue topic = f'sensors/{key}/scd4x/{values.get("serial")}' #print(f'{topic} = {curr}') client.publish(topic, curr) pvalues = values time.sleep(10) if __name__ == '__main__': sys.exit(main())