Interaktivní grafové výstupy - Highcharts
Highcharts je JavaScriptová knihovna pro kreslení grafů v prohlížeči. Pro použití se stavebnicí MLAB vznikl software, který data získaná pomoci python knihovny pymlab dokáže vykreslovat v podobě grafu do standardního webového prohlížeče.
Instalace
Pro správné spuštění musíte mít nainstalovanou knihovnu pymlab, h5py a tornado. Instalace knihovny pymlab je popsána na vlastní stránce. Ostatní nainstalujete takto.
sudo apt-get install python-h5py python-tornado
Samotný software si stáhnete z GitHubu.
git clone https://github.com/MLAB-project/i2c-ui.git
Použití
Pro spuštění samotného softwaru musí být vytvořena pravidla pro získávání dat. Tyto pravidla jsou vyřešena pomocí pythonovského skriptu.
Skript může vypadat takto: example_sht.py. Program se spouští s parametrem, který určuje název logu (bez přípony).
import logging import sys import time from pymlab import config from src import mv
Naimportování potřebných knihoven.
class dewpoint(): def __init__(self, temp=None, hum=None): self.sens_temp = temp self.sens_hum = hum self.temp=0 self.hum=0 self.dewpoint=0 def get_dp(self): if self.sens_temp: self.temp=self.sens_temp() self.hum=self.sens_hum() x = 1 - self.hum/100 dewpoint = (14.55 + 0.114 * self.temp) * x dewpoint = dewpoint + ((2.5 + 0.007 * self.temp) * x) ** 3 dewpoint = dewpoint + (15.9 + 0.117 * self.temp) * x ** 14 self.dewpoint = self.temp - dewpoint return self.dewpoint
Třída počítající rosný bod. Při její inicializaci se řekne, z jakých callback funkcí se data o teplotě a vlhkosti budou získávat. Při zavolání get_dp()
se navrátí hodnota rosného bodu.
def main(): if len(sys.argv) != 2: sys.stderr.write("Invalid number of arguments.\n") sys.stderr.write("Usage: %s Project_file (without extension)\n" % (sys.argv[0], )) sys.exit(1) filename = sys.argv[1]
cfg = config.Config( i2c = { "port": 1, }, bus = [ { "name": "sht25", "type": "sht25", }, ], ) cfg.initialize()
Konfigurace sítě knihovny pymlab.
teplomer01 = cfg.get_device("lts01") vlhkost = cfg.get_device("sht25") dp = dewpoint(teplomer01.get_temp, vlhkost.get_hum)
mVis = mv.MlabVisualiser(filename) mVis.addDataset("TempSHT", "Temperature [C]", vlhkost.get_temp) mVis.addDataset("HumiSHT", "RelativeHumidity [%]", vlhkost.get_hum) mVis.addDataset("DewpSHT", "Temperature [C]", dp.get_dp)
Jednotlivé senzory (zdroje dat) přidáme do vykreslovací třídy pomocí addDataset
s popiskem senzoru, typem dat a callback funkcí pro získání naměřených dat.
mVis.run(["TempSHT", "HumiSHT", "DewpSHT"], delay=1000, repeat=0)
Spustíme nekonečnou smyčku, která čte data a ty zaznamenává do souboru. V prvním poli jsou popisky senzorů, které se mají číst. Dále rychlost čtení (perioda) a počet opakování (0 je bez ukončení)
mVis.startWeb()
Spustíme webserver. Výchozí port je 8888
.
if __name__ == '__main__': main()
Prohlížeč dat HDF5 je například: HFDFwiev