1. Upozornění
Tento návod vznikl jako soukromý nevýdělečný projekt. Autor nezodpovídá za funkci systému, správnost
návrhu a nenese zodpovědnost za jakékoliv vzniklé škody.
2. Úvod
Zdražování energií, produkce domy jsou v posledních letech v médiích omílány velmi často. Pokud však
chce běžný člověk lépe porozumět spotřebě energií ve svém bytě či domě, bez velkých investic mnoho
možností nemá. Přitom měření spotřeby je prvním nezbytným krokem k jejímu možnému snížení.
Samozřejmě existuje řada komerčně dostupných řešení. Ty se však vyznačují vysokou cenou,
nedostatečnými funkcemi nebo uzavřeností řešení.
Já se rozhodl si takový systém postavit sám a mnoho věcí jsem se u toho naučil. Kromě původního účelu
se dá tento postup využít k pro přenos jakýchkoliv naměřených informací po internetu (tzv. internet věcí)
a rovněž při výuce elektroniky a programování.
3. Motivace
Snažil jsem se vytvořit řešení pro sledování spotřeby energie a jiných veličin (meteorologická data,
zabezpečovací senzory atd.) podle těchto požadavků:
-
nízké pořizovací náklady
(téměř) nulové náklady na provoz
bezdrátová komunikace, aby nebylo nutné sekat zdi a tahat kabely
snadné přidávání dalších snímačů/kanálů
otevřené řešení s možností propojení k čemukoliv
Prošel jsem různá (samozřejmě ne všechna) komerční řešení, ale žádné z nich úplně nevyhovělo, a tak mi
nezbylo, než si takový systém postavit sám.
4. Architektura systému
Celý systém se skládá ze tří částí:
a) Snímače fyzikálních veličin a dat s jejich bezdrátovým přenosem do ústředny
b) Ústředna sbírající data ze všech senzorů a posílající je do databázového serveru
c) Webový/databázový server, který data uchovává, analyzuje a na žádost publikuje ve formě
webových stránek s tabulkami a grafy.
1
Tyto tři části fungují společně, ale do značné míry samostatně. Pokud např. nechci přístup po webu,
nemusím mít webový server a data můžu ukládat lokálně. Pokud chci snímat jen pár kanálů a dokážu je
k centrále připojit vodiči, není nutné implementovat bezdrátový přenos dat.
Popišme si nyní podrobněji jednotlivé komponenty systému i s jejich funkcemi a případnými
alternativami:
a) Snímače a bezdrátový přenos
Jelikož prvním adeptem na použití systému byl již stojící rodinný domek, tahání kabelů ze všech čidel
nepřipadalo v úvahu. Hledal jsem proto jednoduché a otevřené řešení pro bezdrátový přenos dat.
Požadavky na jsou zřejmé:
-
Možnost připojit různé druhy snímačů (analogové, pulzní, digitální…)
Nízká spotřeba a provoz na baterie
Samozřejmě provoz v bezlicenčním radiovém pásmu
Nakonec moje volba padla na český systém bezdrátových pojítek IQRF (www.iqrf.org). Oproti jiným
(zejména zahraničním) projektům je levnější a jeho hlavní výhodu vidím v tom, že již v sobě obsahuje
volně programovatelný procesor. To snižuje nároky na baterii i finance oproti RF modulům, ke kterým je
nutné procesor připojovat. Naopak dokumentace, počet nabízených koncových zařízení a zveřejněných
projektů není silnou stránkou této platformy (zde se v rámci svých skromných sil snažím přispět
zveřejněním svého projektu).
2
b) Ústředna sbírající data ze všech senzorů a posílající je do databázového
serveru
Centrální prvek systému se dá realizovat mnoha způsoby. Asi nejčastěji se pro tento účel používá PC, ale
to jsem zamítnul, protože účelem systému je uspořit energii a neustále puštěné PC.
Hledal jsem tedy vhodnou malou programovatelnou platformu s výstupem na Ethernet. Vzhledem
k jednoduchosti instalace, programování a spouště dostupných informací/projektů jsem se rozhodnul pro
Arduino (www.arduino.cc). To sice nemá Ethernet v základu, ale dá se dokoupit tzv. Ethernet Shield
(jakási dceřinná či periferní deska). Podobné platformy vznikají i nadále. V budoucnu určitě budou
zajímavé desky Nanode (www.nanode.eu) či Raspberry Pi (www.raspberrypi.org). V minulosti jsem
používal i vývojovou desku s procesorem ARM od firmy Kramara
(http://www.kramara.com/produkty/moduly-kity/at91sam7x512-kit-3), která by úlohu rovněž zvládla.
Alternativou k těmto deskám s mikrokontroléry jsou různé, nejčastěji linuxové jednodeskové počítače,
případně vykuchané routery s vhodnými rozhraními (alespoň sériový port a Ehternet).
c) Webový/databázový server
Senzory i ústředna data pouze měří a posílají, ale neumí je uschovat a zobrazit. (K Arduinu lze připojit LCD
i grafický displej a existují i jednoduché webservery, ale možnosti jsou velmi omezené). Proto jsem hledal
stránky umožňující tzv. Internet věcí (Internet of Things), které zprostředkovávají datové služby a grafické
rozhraní pro jednoduché „věci“ připojené na internet. Asi nepsanou jedničkou v tomto oboru jsou
stránky www.pachube.com (z nějakého důvodu se to vyslovuje „pečbej“). Stránky jsou to bezesporu
zajímavé, ale v inkriminované době měly dvě zásadní nevýhody: Zdarma dovolovaly uschovat data pouze
měsíc, neuměly zobrazit více průběhů v jednom grafu a datový přenos zbytečně zatěžují posíláním mapy
s umístěním čidla, což u vlastního domu nepotřebujeme. Existují i jiné podobné stránky, např.
open.sen.se (toho času v betaverzi s přístupem jen pro zvané – nechal jsem se tedy pozvat). Nakonec
jsem se rozhodl nezápasit s omezeními hotových řešení, ale něco se přiučit a jednoduché stránky si
naprogramovat sám včetně PHP skriptů a MySQL databáze. Hotové služby ale nezatracuji a posílání
(části) dat na Pachube jsem v projektu ponechal pro zájemce, kteří si web budovat nechtějí.
5. Co budeme k projektu potřebovat
Zde je seznam položek, které potřebujeme k rozchození základního systému včetně cen. V této sestavě
jsou 3 bezdrátové moduly, z nichž jeden musí být připojen k ústředně. Další dva můžeme použít pro
bezdrátové senzory (teploty, kontakty atd). Doporučuji pro začátek využít tyto dva moduly k měření
energie používané pro topení (elektřina či plyn) a druhý pro měření teploty.
Jeden bezdrátový modul dokáže bez problémů obsloužit několik snímačů, ale já raději uvádím
jednoduché příklady, maximálně jeden teplotní snímač a kontakt k jednomu modulu.
Systém lze libovolně rozšiřovat až na desítky modulů (snímačů). Pokud se smíříme s trochou pájení, stačí
k přidání dalšího bezdrátového uzlu tento materiál:
3
Název
Sada IQRF DS Start-02
SIM konektor
Arduino Uno
Arduino Ehternet Shield
Teplotní čidlo Dallas DS18B20
Fototranzistor L-NP-3C1
Akumulátor 3,6V B-Z3A80
Lišta s piny (cca 3ks)
Celkem
Kusů
1
2
1
1
Dodavatel
Microrisc
Microrisc
PV Elektronic
PV Elektronic
1
1
1
1
GM Electronic
GM Electronic
GM Electronic
GM Electronic
Cena
4475
48
624
1028
55
10
40
20
6300
Odkaz
http://www.iqrf.org/eshop/index.php?sekce=detail&idp=1989
http://www.iqrf.org/eshop/index.php?sekce=detail&idp=2022
http://pvelectronic.inshop.cz/podle-vyrobce/sparkfun/arduino-uno-r3-%5BDEV11021%5D?ItemIdx=0
http://pvelectronic.inshop.cz/podle-vyrobce/sparkfun/arduino-ethernet-shield%5BDEV-09026%5D?ItemIdx=1
http://www.gme.cz/teplotni-cidla-s-cislicovym-vystupem/ds18b20-p530-067/
http://www.gme.cz/fototranzistory/l-np-3c1-p520-014/
http://www.gme.cz/nimh-akumulatory-do-dps/nimh-akumulator-do-dps-z3alf380mah-vin-p540-030/
http://www.gme.cz/oboustranne-koliky/oboustranny-kolik-s1g40-p832-021/
Chcete-li cenu stlačit opravdu na minimum, lze místo Sady DS Start-02 objednat toto vybavení:
CK-USB-02
1
Microrisc
1225 http://www.iqrf.org/eshop/index.php?sekce=detail&idp=1340
TR-52BA
3
Microrisc
1575 http://www.iqrf.org/eshop/index.php?sekce=detail&psk=&sk=22&idp=1909
SIM konektor
3
Microrisc
85 http://www.iqrf.org/eshop/index.php?sekce=detail&idp=2022
Celkem
2885
Budete muset trochu více pájet, ovšem zato si můžete bezdrátových modulů objednat kolik chcete. První
položka (CK-USB-02) slouží k programování modulů a stačí vám jedna, ať už modulů (či systémů)
potřebujete libovolné množství. Lze se tedy např. dohodnout s kamarádem a tento „proramátor“ si
pořídit společně.
6. Instalace
Potřebná programovací prostředí
Jelikož se systém skládá z více částí, budeme potřebovat hned několik programovacích prostředí. Dobrou
zprávou je, že všechna jsou zdarma. K jejich instalaci pravděpodobně budete potřebovat
administrátorská práva ke svému počítači.
a) Vývojové prostředí pro bezdrátové moduly IQRF – IQRF IDE 3.0 beta
Stáhněte si vývojové prostředí IQRF IDE ze stránek www.iqrf.org: Klikněte na Support, Downloads a
vyberte položku IQRF Startup package, OS v3.00 – EXE. Spusťte tento program a rozbalte archiv do
vhodného adresáře, např. C:\IQRF.
V tomto balíku je obsaženo vývojové prostředí 2.08 (označení v3.00 patří k operačnímu systému
používanému bezdrátovými moduly).
Program ani není nutné instalovat, stačí rozbalit archiv do vhodného adresáře (např. C:\IQRF).
Zkuste k počítači připojit programovací modul CK-PGM-03 pomoc dodávaného USB kabelu. Nejspíše
obdržíte hlášku, že se nepodařilo nainstalovat ovladač. Zvolte možnost Vybrat ovladač ručně, klikněte na
tlačítko procházet a vyberte adresář C:\IQRF\IQRF3rdParties\USB_Custom_Driver.
4
Pokud by byl třeba, podrobný návod k instalaci prostředí IQRF (v angličtině) najdete zde:
http://www.iqrf.org/weben/downloads.php?id=109
Spusťte program iqrf_ide.exe
V adresáři se zdrojovým souborem (*.c) pro bezdrátové moduly IQRF musí být adresář includes
s hlavičkovými soubory. Ten patří vždy ke konkrétní verzi vývojového prostředí IQRF a k operačnímu
systému uvnitř bezdrátového modulu.
Dále musí být v adresáři se zdrojovým souborem soubor 16F886.h.
Nezapomeňte proto zkopírovat soubor a adresář, když si přesouváte nebo kopírujete projekty do nového
adresáře na disku.
Nainstalujte IQRF IDE. V něm nastavte Tools >> Compiler. Najděte CC5x.exe v adresáři C:\Program
Files\IQRF 3.0\3rdParties\CC5X.
a) Vývojové prostředí Arduino IDE
Stáhněte si verzi Arduino 0023 z www.arduino.cc. Až po dopsání příkladů se objevila novější verze 1.0,
v níž program bohužel nefunguje. Na vyřešení problému se pracuje…
b) PHP Editor
Pro programování PHP webového serveru si naštěstí vystačíme s textovým editorem. Já si oblíbil
Notepad++, který je součástí IQRF IDE. Hlavně z důvodu barevného rozlišování syntaxe.
Pro práci s webem se dále používá MySQL, které lze rovněž editovat v textovém editoru, nebo
interaktivně spravovat přes hostingový web (např. www.endora.cz).
c) Software pro správu webových stránek
Pro uspořádání jednotlivých stránek do podoby složitějšího webu (jako je např. www.mericidum.cz) se
hodí nějaký CMS (Content Management Software) – program pro správu (webového) obsahu. Já se
rozhodl pro Drupal (www.drupal.org). Existuje mnoho podobných systémů a necítím se kvalifikovaný je
srovnávat ani popisovat. Pro základní funkce celého systému ale žádný z těchto programů
nepotřebujeme, stačí nám jednoduché stránky napsané v PHP a HTML.
7. A jde se programovat!
a) Programování IQRF modulu
Spusťte prostředí IQRF IDE. Ve stavovém řádku se objevuje stav komunikace s IQRF modulem – teď tam
bude „USB device not connected“. Připojte k USB portu počítače kit CK-USB-04. Údaj ve stavovém řádku
by se měl změnit na SPI not active (sběrnice SPI je rozhraní, po kterém se programují IQRF moduly). Při
stisknutém tlačítku S2 (to blíže k SIM konektoru) na kitu CK-USB-04 do něj zasuňte bezdrátový modul.
Stavový řádek by nyní měl ukazovat Module ready – communication mode. Blahopřeji! Jsme připraveni
k prvnímu programování.
5
Pod menu v programu IQRF IDE vyberte typ modulu, který chcete programovat (nejspíše TR-52B). Další
písmenko (např. TR-52BA) pouze označuje druh antény a na programování nemá vliv.
Klikněte na tlačítko Open (c) a na disku najděte program MD01-TX_SPI. Tento program každé cca 3
sekundy vyšle jeden znak jak bezdrátovým vysílačem, tak po SPI sběrnici (tj. do PC). Aby to nebylo tak
monotónní, znak se neustále mění.
Pokud se vám automaticky neotevřel soubor se zdrojovým kódem (to lze zaškrtnout v menu Tools >>
Editor), můžete si jej otevřít příkazem Edit v modrém pruhu. Pokud v programu něco změníte (v této fázi
to nedoporučuji), musíte nejprve soubor uložit (Ctrl+S).
Nyní se přepněte zpět do programu IQRF IDE a klikněte na příkaz Compile v modrém menu (funguje též
klávesa F10). Na okamžik vyběhne černé okno kompilátoru a nejspíše opět zmizí (to záleží na tom, zda je
v programu nějaká chyba a také na nastavení v Tools >> Compiler.
Pokud překlad (kompilace) proběhl v pořádku, stane se aktivním tlačítko Upload (poslání přeloženého
programu do modulu). Klikněte tedy na něj (funguje i klávesa F5).
Postup úprava zdrojového kódu v editoru, stisk Ctrl+S, přepnutí do IQRF IDE a stisk F10 a F5 si při větším
programování a odlaďování dobře procvičíte. Nezapomeňte změněný kód vždy uložit, jinak budete
kompilovat pořád starou verzi programu a budete se divit, proč vám stále nemizí chyby ).
V tuto chvíli by vám měl v modulu běžet první program, což poznáme tak, že na něm každé asi 3 vteřiny
blikne červená LED dioda. Pokud se v IQRF IDE přepneme na záložku Communication, uvidíme zprávy,
které modul posílá po SPI sběrnici do kitu CK-USB-04, který je pak po USB sběrnici pošle dále do PC.
Modul posílá vždy jen jeden znak, ale výpis vypadá např. takto:
21:38:56.963
RxD: "M"
4D.
Je zde zobrazen čas, směr přenosu dat (RxD = příjem, TxD = vysílání, vždy z pohledu PC), v uvozovkách je
vypsán přijatý znak (zde písmeno M) a pod ním je jeho hexadecimální kód. Ten se hodí zejména u mnoha
tzv. netisknutelných znaků, které se všechny vypisují jako tečky.
Blahopřeji k první komunikaci! Komunikace s bezdrátovým modulem po drátech sice není ještě to pravé
ořechové, ale je to slibný začátek…
b) Opravdu bezdrátová komunikace
Zasuňte nyní modul naprogramovaný v předchozí kapitole do kitu DK-EVAL-04. V něm se moduly nedají
programovat, ale zato obsahuje akumulátor, takže dokáže napájet modul i bez připojení k PC. (Mikro-USB
konektor tohoto kitu slouží právě jen k dobíjení akumulátoru). Aby byl modul z kitu napájen, musí být
piny BAT PWR spojeny propojkou („jumperem“). Modul by se měl opět rozblikat. Pokud nebliká, nejspíš
bude potřeba dobít akumulátor připojením kitu k PC.
Nyní do programovacího kitu CK-USB-04 vložte druhý modul TR-52B. Pomocí aplikace IQRF IDE přeložte a
do modulu nahrajte program MD02-RX_SPI (tj. opět stisk F10 a poté F5). Když se potom přepnete
v programu IQRF IDE na záložku Communication, měli byste opět vidět příjem vzrůstajících čísel, ovšem
tentokrát je vysílá vzdálený modul a cesta je opravdu bezdrátová!
6
Když nám vše hezky funguje a nebudeme tento jednoduchý příklad již potřebovat, nahrajte do prostředí
a potom i do IQRF modulu program MD03-RX_UART. Ten funguje velmi podobně jako předchozí příklad,
ovšem bezdrátově přijatý paket vyšle po sériové lince (anglicky UART - Universal asynchronous
receiver/transmitter). A sériovou linkou bude modul propojen s Arduinem…
Nicméně program MD02-RX_SPI si nechte někde po ruce. S jeho pomocí totiž můžete modulem
zapojeným přes CK-USB_02 či 04 odposlouchávat radiovou komunikaci celého systému a odlaďovat tak
chyby, pokud by se systém nechoval správně…
c) Formát bezdrátových zpráv
Pro posílání bezdrátových zpráv jsem zvolil velmi jednoduchý protokol:
d) Bezdrátové Arduino
Za hlavní „mozek“ systému byla vybrána destička, Arduino, která obsahuje snadno programovatelný
mikroprocesor a v posledních několika letech slaví obrovské úspěchy právě u drobných kutilů. K ní je
dokoupen tzv. Ethernet shield (horní destička na fotografii), který se na Arduino nacvakne a umožňuje
data posílat na web. Jak vidíme na fotografii dole, jedinou prací zůstalo připájet 4 vodiče pro připojení
IQRF modulu (v popředí), který bezdrátově komunikuje se snímači. A samozřejmě celek naprogramovat.
USB kabel je použit pouze k napájení ústředny. Pro její provoz není potřeba počítač, čímž značně klesá
vlastní spotřeba celého systému.
Arduino lze místo USB kabelu napájet i konektorem „jack“. V obou případech použijeme nejlépe
stabilizované napětí 5V.
Zatímco Ethernet shield se k Arduinu dá dokupit a přímo nacvaknout, pro připojení bezdrátového
modulu IQRF k Arduinu budeme muset trochu pájet:
Spusťte Arduino IDE 0023 a načtěte soubor Arduino\Arduino.pde
Připojte Arduino k počítači pomocí USB kabelu a klikněte na tlačítko Upload.
Upozornění: Pokud máte na Arduinu již připojený Ethernet shield a při uploadu programu dostáváte
chybu „avrdude: stk500_getsync(): not in sync:“, zkuste Ethernet shield odpojit, program do Arduina
7
nahrát a potom Ethernet shield opět nasadit. Mně se tento problém projevuje trvale, i když jsem nikde
nenašel, že by tomu tak mělo být.
Poté připájíme SIM konektor pro IQRF modul drátky k lištám, které potom zasuneme do konektorů
Arduina. I když je na obrázku Adruino, ve skutečnosti je samozřejmě Arduino ještě přikryto Ethernet
shieldem, takže lišty samozřejmě zapíchneme do Ethernet shieldu.
Zde je na ukázku fotografie celé ústředny:
8
8. Internet
Teď, když už dokážeme data a zprávy posílat bezdrátově do počítače, budeme si je jistě chtít také
prohlížet. Kupodivu nejjednodušší to asi bude přes internet. Tak se totiž ke svým datům dokážeme
připojit prakticky odkudkoliv, z jakéhokoliv zařízení (PC, tablet, mobilní telefon…) a s pomocí
standardních nástrojů.
Nejprve si tedy budeme muset vytvořit webové stránky pro zobrazení dat. Takzvaných hostingů (kteří
„hostí“ vaše webové stránky) se nabízí nespočet. Já se rozhodl pro www.endora.cz, především jelikož si ji
můžete vyzkoušet (a vlastně i provozovat) zcela zdarma.
Endora poskytuje místo pro vaše data a webové stránky. Ty se jmenují např. mereni.8u.cz (slovo pokus si
můžete vybrat, ten zbytek už ne). Pokud byste si chtěli vybrat nějaký snáze zapamatovatelný název (např.
www. mojechaloupka.cz), musíte si pořídit svoji doménu. To stojí cca 200 Kč na rok a můžete to provést
např. na www.kvapem.cz. Tento krok sebou nese drobné náklady a lze jej provést dodatečně, zatím tedy
s vlastní doménou počítat nebudeme.
a) Vytvoření hostingu na endora.cz
Na www.endora.cz klikneme na Chci založit hosting zdarma a v následujícím výběru si zvolíme Založit
doménu 3. řádu. (počítá se odzadu, takže doména 1. řádu je .cz, 2. řád je např. endora.cz a 3. řád bude
např. pokus.8u.cz) Jiné možnosti jsou zpoplatněny.
Jako hostingový program vyberte Free.
Potom vyplníte přihlašovací údaje (jméno, email a heslo) a kliknete na Založit.
Do několika minut by na váš e-mail měly přijít všechny informace potřebné k zprovoznění účtu.
b) Vytvoření databáze a tabulek
Až se k účtu přihlásíte, zvolte příkaz Databáze a dále přidat uživatele. Přidejte nového uživatele (uživatel
databáze může být jiný nebo jich může být více než k celému účtu na Endoře) a heslo.
Dále zvolte Přidat databázi a jako její název zadejte mereni.
Kliknutím na název databázi mereni a zadáním jména uživatele a hesla se k databázi přihlásíte. Pro
správu se používá phpMyAdmin, interaktivní nástroj pro správu databází.
Jakmile se ocitnete v okně phpMyAdmin, vyberte v horní liště příkaz Databáze a vyberte databázi mereni.
Import a příkaz Procházet váš počítač. Na počítači najděte soubor mereni.sql. Ten obsahuje příkazy
v jazyce SQL, které vytvoří databázi a v ní potřebné tabulky.
Tabulky jsou prázdné (bez dat). U většiny tabulek nám to nevadí, data se budou vkládat automaticky
(naměřené hodnoty). Je však nutné vložit správné ceny energií do tabulky Cenik.
9
c)
Tabulka Cenik
Tato tabulka, jak již název napovídá, obsahuje ceny za jednotlivé energie:
Vaše tabulka Cenik má nyní stejnou strukturu (byla vytvořena SQL skriptem), ale bude obsahovat jen
nulové hodnoty. Otevřete si tabulku Cenik kliknutím na její nazev v leveém panelu (seznamu tabulek).
Pak klikněte postupně na tužku v každém ze tří řádků (příkaz Upravit):
V zobrazeném okně vždy zadejte správné hodnoty. Tomuto kroku doporučují věnovat pozornost.
Přečtěte si důkladně vyúčtování svých dodavatelů energií. Už jen to může vést k úsporám (přechodem
k levnějšímu dodavateli). Správně zadané cenové parametry pak dají grafům denní či měsíční spotřeby
mnohem větší smysl (kilowatthodinu elektřiny ještě nikdo v ruce nedržel, zatímco o penězích většinou
máme velmi konkrétní představu :-).
Pro správnou funkci musí být v tabulce údaje pro elekřinu (Nazev = El), plyn (Nazev = Gas) a DPH. Ve
sloupci Mesicne je pevná měsíční platba (paušál) a ve sloupci Za_Jednotku je cena za jednotku energie
(kWh u elektřiny a m3 u plynu). Obě ceny jsou bez DPH. Sazbu DPH pak zadejte ke kanálu DPH do sloupce
10
Za_Jednotku. DPH se udává v desetinném tvaru, tj. místo 20% zadáte 0.2 (s desetinnou tečkou, ne
čárkou!).
V ostatních tabulkách není potřeba cokoliv měnit, přikládám popis jejich struktury jen pro porozumění:
d) Tabulka Aktualni
Tabulka Aktualni obsahuje poslední hodnotu z každého kanálu a časovou značku, kdy byla tato hodnota
pořízena.
e) Tabulka Historie
Tabulka Historie obsahuje všechny historické hodnoty pro všechny kanály. Používá se pro vykreslení
grafů a veškeré výpočty. Tato tabulka asi bude zabírat nejvíce místa. Pokud by příliš narostla, můžete
vymazat nejstarší data, nebo data nějak „chytře“ promazat, např. tak, aby z každé hodiny (nebo dne) pro
každý kanál zůstala jen jedna hodnota.
Tabulka obsahuje Název kanálu, jeho Hodnotu a časovou značku (Timestamp), kdy byla tato hodnota
pořízena.
Teď již máme všechny tabulky v databázi připraveny a můžeme do nich začít zapisovat naše zajímavá
data…
11
9. PHP aneb server nám slouží…
Pro zápis (a posléze i zobrazení) dat budeme používat tzv. PHP skripty. Jedná se o programy napsané v
relativně jednoduchém programovacím jazyce PHP. Tyto skripty běží zásadně na straně serveru, tj.
počítači s naš databází a webovými stránkami – v našem případě na serveru www.endora.cz. Pokud byste
si chtěli vybrat (či provozovat) jiný server, ujistěte se, že umožňuje uživatelům spouštět PHP skripty (to je
drtivá většina serverů pro webhosting).
Hlavním účelem PHP bývá vytváření dynamických webových stránek (tj. stránek, jejichž obsah se mění
podle dat v databázi, vloženého dotazu apod.) K tomuto jej budeme využívat i my.
Stáhněte si ze serveru MěřicíDům.cz soubor s instalací systémů (instalace.zip). Rozbalte jej do vhodného
adresáře a v podadresáři PHP najděte soubor zapis.php. Otevřete jej ve vhodném editoru (např. Notepad
nebo Notepad++). Na řádku 10 přepište hodnoty „uzivatel“ a „heslo“ správnými údaji pro přístup k vaší
databázi (uvozovky ponechte, jak byly). Všimněte si, že příkaz @mysql_connect obsahuje parametry
server, uživatel a heslo. Jako server nedáváme adresu serveru (např. www.mujserver.cz), ale localhost,
neboť PHP skript poběží přímo na serveru, kde je uložena i databáze.
Poté soubor zapis.php uložte a přeneste na server endora.cz do adresáře web. Lze to provést buď
vestavěným nástrojem pro FTP, nebo pokročilejším programem, např. FileZilla. Do budoucna (pro přenos
častější přenos souborů) doporučuji FileZillu, neboť vám ušetří spoustu klikání.
Jakmile je skript na serveru, můžeme vyzkoušet jeho funkci:
Otevřete si webový prohlížeč a do adresního řádku napiště www.mujserver.cz/zapis.php (mujserver
samozřejmě musíte nahradit názvem svých stránek). Měli byste obdržet odpověď „Pozadavek
neobsahoval zadna data“, což je naprosto v pořádku. Skript se vykonal, ale neměl co zapsat do databází,
neboť jsme mu neposkytli žádná data. Hned to tedy napravíme: Adresní řádek změňte na
http://www.mujserver.cz/zapis.php?Nazev=Pokus&Hodnota=14
Když se teď na serveru Endora podívaáme do databáze na tabulku Aktualni (viz vytváření tabulek), měli
bychom tam vidět řádek se sloupci Nazev=Pokus a Hodnota=14. Blahopřeji! Přávě jste do databáze
zapsali první data! Můžete je hned smazat klepnutím na červené „mínus“, protože je již nebudeme
potřebovat :-).
a) Instalace JPgraph
Pro zobrazení dat ve formě grafů budeme potřebovat vhodnou knihovnu. Metod pro zobrazení existuje
spousta. Asi nejdokonalejší pro grafické zobrazení je Flash od firmy Adobe. Ten se mi alle nechtělo učit a
navíc podporuje jen některá zařízení. Můj mobil Blackberry ani prastaré PDA mezi ně bohužel nepatří.
Rozhodl jsem se tedy použít grafickou knihovnu jpGraph, která je napsána v PHP, tj. běží pouze na straně
serveru. U klienta nevyžaduje žádnou podporu, neboť grafy posílá jako hotové obrázky.
Zkopírujte tedy obsah složky Web ze staženého archivu Instalace do složky Web na Endoře. PHP soubory,
jejichž názvy končí graf, slouží k vykreslování grafů. Pro přístup k datům v databázi obsahují i jméno
uživatele a heslo k databázi. Tyto údaje budete muset nahradit skutečnými hodnotami.
12
b) Vytváření webových stránek
Graf lze do jiné webové stránky vložit jako odkaz na obrázek, který bude dynamicky vygenerován. Např.
graf denní spotřeby elektřiny můžete do HTML stránky s kompletním denním přehledem vložit jako
odkaz
<img src="http://www.mujweb.cz/den-el-graf.php?datum=2012-03-31">
Příklad poskládání několika grafů i tabulek najdete v souboru ukazka.PHP. Jenom grafy by šlo vložit i do
čistého HTML kódu (bez PHP).
10.
Vytvoření snímačů
Asi nejjednodušší je vytvoření teploměru. Spájíme si jednoduchý obvod dle obrázku. Nemáme-li kit CKUSB-04, lze se napojit i přímo na IQRF modul přes SIM konektor (použijeme odpovídající názvy pinů).
Budeme ale navíc muset připojit vhodnou baterii (např. 3 tužkové baterie v držáku).
Do IQRF modulu nahrajeme program MD04-Dallas. Na řádcích 104 si můžeme zvolit název kanálu, který
měříme (např. Tout pro venkovní teplotu). Doporučuji ponechat jeho délku na 4 znaky.
11.
Elektroměr a plynoměr
Měření elektřiny se provádí optickým snímáním blikající LED diody, kterou je dnes vybavena většina
elektroměrů. Montáž systému tedy nevyžaduje úpravu elektroinstalace ani zásah do částí pod napětím.
Přesto je na místě opatrnost, neboť se pracuje v jejich blízkosti.
Uprostřed vidíme rozsvícenou LED diodu. Ta svítí vždy jen krátký okamžik (méně než desetinu sekundy) a
bliknutí se opakuje při každé spotřebované watthodině (záleží na typu elektroměru).
13
Zapojení je jednoduché: stačí připájet Fototranzistor L-NP-3C1 nebo podobný.
Fototranzistor doporučuji připojit delšími vodiči, abychom jej mohli dobře nastavit proti blikající LED
diodě a nebyl zatížen modulem a akumulátorem.
Upozornění: Žádná část tohoto obvodu není spojena s nebezpečným napětím. Jelikož se ale pracuje
v jeho blízkosti, hrozí při montáži nebezpečí úrazu elektrickým proudem!!
Do IQRF prostředí načteme program MD05_Elektromer.c. Úplně na koci programu najdeme řádek
14
#pragma cdata[__EEAPPINFO] = "\x00\x10\x05\x02\x80\x80El=017783.400 "
//pocatecni stav elektromeru v kWh
Za znak“=“ napíšeme aktuální stav elektroměru, od kterého čidlo bude počítat. Při psaní hodnoty do
programu nesmíme změnit počet číslic a desetinná tečka musí zůstat na svém místě!
Podle hustoty impulzů může být nutné program mírně pozměnit kolem řádku 66. (Existují elektroměry
mimo jiné s 800, 1000 i 10000 impulzy na kilowatthodinu).
Podle hustoty impulzů a předpokládané spotřeby můžeme rovněž zvolit, zda se data z modulu (a i přes
internet) posílájí při každém impulzu, nebo jen např. při každém desátém (řádek 82).
Program občas aktuální hodnotu uloží i do paměti EEPROM, takže při výpadku napájení či resetu modulu
dojde jen k malé chybě (začne se od naposledy uložené hodnoty). Není však vhodné ukládat úplně
každou hodnotu, protože paměť EEPROM má omezenou životnost (počet zápisů).
Pak program uložíme, přeložíme a nahrajeme do modulu.
Fototranzistor pak nalepíme např. izolepou přímo proti blikající LED diodě. Pokud fototranzistor správně
snímá, měla by při bliknutí LED na elektroměru vždy bliknout i LED na modulu IQRF.
12.
Novinky a zpětná vazba
Děkuji vám za zájem o tento projekt a to zejména v případě, že jste se jej rozhodli postavit. Na projektu
hodlám dále pokračovat a dávat na web zdokonalené verze. Jakékoliv opravy, náměty či připomínky jsou
vítány na www.mericidum.cz nebo e-mailu [email protected]
13.
Závěrem už jen heslo:
MěřicíDům.cz – Projekt, který ušetří i vaši energii!
15
Download

merici-dum-Instalace4 pdf