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 intervalváltozóval állítjuk az animáció idejét , mely milliszekundumban van megadva. 1000 = 1 másodperc.