Forráskód plotter.py - rroman95/weather-station GitHub Wiki
/home/pi/weather-station/plotter.py
A kód a gyüjtött adatok vizualizására szolgál.
A klasszikus python plottert és a pandas nevezetü könyvtárat használja, mely a plotter animálására szolgál.
Használt könyvtárak:
#!/bin/env python3
from itertools import count
import pandas as pd # a plotter animálása
import matplotlib.pyplot as plt # python standard plotter
from matplotlib.animation import FuncAnimation
import bme280_output
import os.path #útvonalak összevonása
from datetime import date
import datetime
import time #idö adatok lekérdezése
Dátum változásakor a kód új fájlból olvassa be az adatokat. Ezt a dátumváltozást a jelenlegi idö és a végidö összehasonlításával figyeljük.
now = datetime.datetime.now()
endtime = now.replace(hour=23, minute=59,second = 0, microsecond= 0)
filename = str(date.today())
if (now>endtime):
A filename mindig az adott dátumnak felel meg.
Az alábbi kód segítségével állítjuk be a plotterre felvitt adatok kórdiátáit, melyeket a csv fájlból olvasunk be.
x = data['Time']
y1 = data['Temp']
y2 = data['Humidity']
y3 = data['Pressure']
y4 = data['Grnd.Temp']
min_temp = data['Min.Temp']
max_temp = data['Max.Temp']
avg_temperature = data['Avg.Temp']
A plottolási folyamat több adatra
plt.plot(x,y1, label = 'Temperature',color = 'red')
plt.plot(x,y2, label = 'Humidity', color = 'cyan')
plt.plot(x,y3, label = 'Bar', color = 'green')
plt.plot(x,y4, 'g--',label = 'Grnd.Temp', color = 'crimson')
A plotter gráfban azért, hogy az x tengely mentén megjelenített idök ne fedjék egymást, elfordítjuk azokat 90 fokos szögben plt.xticks(rotation=90)
.
Minden egyes vizualizálás után mentjük a jelenlegi gráfot a plt.savefig('/home/pi/weather-station/data/'+filename+'.png')
paranccsal az adott könyvtárba.
Magát a föfunkciónkat hívjuk meg: ani = FuncAnimation(plt.gcf(), animate, interval = 1000)
. Az interval
változóval állítjuk az animáció idejét , mely milliszekundumban van megadva. 1000 = 1 másodperc.