====== 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 [[cs:pymlab|pymlab]] dokáže vykreslovat v podobě grafu do standardního webového prohlížeče. {{ :cs:sw:highcharts_i2c.png?600 |}} === Instalace === Pro správné spuštění musíte mít nainstalovanou knihovnu [[cs:pymlab|pymlab]], h5py a tornado. Instalace knihovny [[cs:pymlab|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 [[https://github.com/MLAB-project/i2c-ui|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: [[https://github.com/MLAB-project/i2c-ui/blob/master/example_sht.py|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 [[cs:pymlab|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: [[https://apps.ubuntu.com/cat/applications/precise/hdfview/|HFDFwiev]]