import json import time import numpy as np import paho.mqtt.client as mqtt import pandas as pd import plotly.express as px cols = ['temp', 'pres', 'humi', 'gas', 'rsrp', 'rsrq', 'snr', 'enerest', 'band', 'txp', 'dlpl', 'ltemode'] #dg = pd.DataFrame(columns=['lati', 'long', 'alti', 'rssi', 'snr', 'rttt', 'temp', 'humi', 'pres', 'voc'], dtype=float) dg = pd.DataFrame(columns=cols, dtype=float) def on_connect(client, userdata, flags, reason_code): client.subscribe("nrf/dk/#") inx = 0 def on_message(client, userdata, msg): global inx col = msg.topic[msg.topic.rfind('/')+1:] if col == 'temp': inx += 1 val = msg.payload.decode('utf-8') val = float(val) dg.at[inx, col] = val mqttc = mqtt.Client() mqttc.on_connect = on_connect mqttc.on_message = on_message mqttc.connect("mikehanus.xyz", 1883, 60) mqttc.loop_start() while True: time.sleep(1) if len(dg.index) > 1: with open('save.csv', 'a') as f: for inx in dg.index[:-1]: s = dg.loc[inx] d = s.to_dict() d['time'] = int(time.time()) sj = json.dumps(d) print(sj) f.write(sj + '\n') dg.drop(index=inx, inplace=True) mqttc.loop_stop()