====== Extra materiály k 9. cvičení ======
[[courses:b0b37nsi:hw:waveshare_env_sensors|Waveshare Enviroment Sensors Module]]
==== Skript pro výčet dat ze senzoru BME280 ====
{{ :courses:b0b37nsi:addons:extra:bme280.py |}}
==== Influx DB API key ====
b47XAhOjJ6GgykH_S5D3ZVWb0KYHyw6jEq7xDdKToy29W9GNfb7F9GsV08N_73klELhhYl5KESu8zaK4mXdOFA==
==== Parse response to CSV ====
CSV_PATH = "./lab09/pc/influx_data.csv"
# ---- Parse CSV ----
f = io.StringIO(response.text) #init buffer
reader = csv.DictReader(f) #pristup pomoci klicu k prvkum
data = {} #struktura slovniku parsed dat jednotlivych radku
for row in reader:
field = row.get("_field") #najdi co je v _field (temp/humi)
if field in ("temperature", "humidity"): #z fieldu vytahni temp nebo humi
time = row["_time"] #ziskej timestamp
value = float(row["_value"]) #ziskej hodnotu
machine = row.get("_measurement", "") #ziskej machine id
login = row.get("login", "") #ziskej login
if time not in data: #vytvor zaznam pro timestamp, pokud neni
data[time] = {
"time": time,
"temperature": None,
"humidity": None,
"login": login,
"machine": machine
}
data[time][field] = value #zapis hodnotu k timestampu
# ---- Write clean CSV ----
with open(f"{CSV_PATH}", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(
f,
fieldnames=["time", "machine", "temperature", "humidity", "login"]
)
writer.writeheader()
for row in data.values():
writer.writerow(row)