You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
4 years ago
|
import json
|
||
|
import time
|
||
|
|
||
|
import paho.mqtt.client as mqtt
|
||
|
|
||
|
from os import path
|
||
|
import csv
|
||
|
import datetime
|
||
|
|
||
|
id = '<ID>'
|
||
|
|
||
|
client_telemetry_topic = id + '/telemetry'
|
||
|
server_command_topic = id + '/commands'
|
||
|
client_name = id + 'temperature_sensor_server'
|
||
|
|
||
|
mqtt_client = mqtt.Client(client_name)
|
||
|
mqtt_client.connect('test.mosquitto.org')
|
||
|
|
||
|
mqtt_client.loop_start()
|
||
|
|
||
|
temperature_file_name = 'temperature.csv'
|
||
|
fieldnames = ['date', 'temperature']
|
||
|
|
||
|
if not path.exists(temperature_file_name):
|
||
|
with open(temperature_file_name, mode='w') as csv_file:
|
||
|
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
|
||
|
writer.writeheader()
|
||
|
|
||
|
def handle_telemetry(client, userdata, message):
|
||
|
payload = json.loads(message.payload.decode())
|
||
|
print("Message received:", payload)
|
||
|
|
||
|
with open(temperature_file_name, mode='a') as temperature_file:
|
||
|
temperature_writer = csv.DictWriter(temperature_file, fieldnames=fieldnames)
|
||
|
temperature_writer.writerow({'date' : datetime.date.today(), 'temperature' : payload['temperature']})
|
||
|
|
||
|
mqtt_client.subscribe(client_telemetry_topic)
|
||
|
mqtt_client.on_message = handle_telemetry
|
||
|
|
||
|
while True:
|
||
|
time.sleep(2)
|