Titulek: tady je Davidovo (osobni nastenka)

Tady je Davidovo

(osobní nástěnka)

Tady by měl být obrázek. Že vy máte zakázané zobrazování obrázků... Povolit!


Zabezpečovací kamera (fotopast) s Raspberry Pi

David Pleskot, 13.12.2016

Tenhle článek není podrobný návod na výrobu zabezpečovací kamerky. Kde to má smysl, tam půjdu do podrobností. Tam kde předpokládám že každý bude muset improvizovat s tím co sežene popíšu jen základní princip. Je možno použít vše, nebo jen některé části a nebo se jen inspirovat.

Obsah:

  1. Hardware
  2. Software

Hardware

Základem je samozřejmě Raspberry Pi, v tomto případě je to model B+ s 512MB RAM. Ve fázi vývoje k němu připojuji USB hub s vypínatelným napájením jednotlivých větví (šikovná věcička) s Wifi adaptérem, klávesnicí a myší a monitor s DVI vstupem. K RasPi mám přes GPIO konektor připojenou pomocnou desku, na kterou připojuji další moduly a to hodiny reálného času, GSM modul, čidlo atmosférického tlaku a teploty (blbost, ale válelo se mi v šuplíku) a modul IR přisvícení s PIR pohybovým čidlem, viz blokové schéma. Přes USB mám připojenou 2Mpix webkamerku Hama a přes kamerový konektor modul Pi NoIR (resp. jeho čínskou kopii). Celé to napájí zdroj zálohovaný olověným akumulátorem. Tady je rozpiska součástek. Není úplná, berte ji spíš jako inspiraci ve smyslu jakou vzdálenost vývodů má mít který kondenzátor aby pasoval do desky atp..

Zdroj

Zdroj je základ, takže začnu s ním. Celá kamerka je napájená ze zabezpečovací ústředny napětím zhruba 15V DC. Z něj se přes diodu a pojistku dobíjí záložní akumulátor (pojistka není nutná, ale olověný akumulátor umí nadělat pěknou paseku když se omylem zkratuje). Zdroj má dvě větve, v obou jsou použity IO LM2576 v ktalogovém zapojení (spínaný zdroj). Větev 5V je určena pro napájení samotného RasPI a kontroléru ATiny, který řídí zdroj. Druhá větev s nastavitelným napětím je určena pro napájení GSM modulu. 5V větev je zapnutá trvale, ale dá se pomocí tranzistoru T1 odpojit od výstupní svorkovnice. Ve větvi napájení GSM modulu se vypíná celý spínaný zdroj vstupem ON/OFF IO LM2576. Kontrolér ATiny má na konektor do RasPI vytaženy signály SDA a SCL sériového interface (TWI) a signál ve schématu nazvaný WDT, pomocí kterého Raspi dává ATiny najevo že žije, tzn. reset watchdog čítače.

Celý zdroj mám pro jistotu v plechové krabiččce s odnímatelnými víky. Deska je do ní zapájená. Chladiče LM2576 jsou přišroubované na kousky měděného plechu připájené ke stěnám krabičky.

RasPi je ke zdroji připojené kablíkem s USB konektorem. Dalo by se připojit napájení přímo na pin 2 nebo 4 GPIO konektoru, ale pak by byla ze hry pojistka, která je mezi USB konektorem a 5V sběrnicí.

Trochu jsem nedomyslel připojení modulu IR přisvícení, který má být napájen 12 až 15V. Když se připojí k akumulátoru, tak to bude nejištěný přívod. Funkční řešení, ale nesmí se povést zkrat. Když se připojí přímo k napájecímu vstupu, tak přisvícení a PIR čidlo, které je na stejné desce, nebude funguvat pokud zdroj pojede ze zálohy. Chtělo by to ještě jednu svorku na katodu diody D2.

obrazek
osazovací výkres
obrazek
DPS horní strana
obrazek
DPS spodní strana
obrazek
schéma zdroje
obrazek
sestavený zdroj

Pomocná deska

To co jsem pracovně nazval pomocná deska je kousek ručně kresleného plošňáku, který v podstatě slouží jen k pospojování několika modulů a jejich připojení k RasPi. Vzhledem k tomu že záleží na tom jaké moduly kdo chce připojit a jaké se komu podaří koupit, tak ani nezveřejňuji svůj návrh DPS. Je na ní GSM modul, RTC modul, konektor pro seriovou linku ze zdroje, konektor pro PIR snímač pohybu a pro ovládání IR přisvícení.

GSM modul jsem koupil z nějakého doprodeje skladových zásob. Když jsem chtěl další, tak už neměli. Je to modul SIM800, nebo SIM900 na kousku plošňáku. Na konektory má vytažené napájení, seriovou linku a anténu. Z druhé strany desky je slot pro SIM kartu. Samolepicí anténu s kablíkem a konektorem jsem dostal k tomu. Dokumentace k modulu SIM900 od výrobce Shanghai SIMCom wireless solutions Ltd. je na netu celkem dost, včetně přehledu AT příkazů. Doporučuju koupit modul s firmwarem umožňujícím práci s MMS. Já jsem bohužel takové štěstí neměl, můj modul to neumí.

Při oživování se ukázalo, že GSM modul se chová poněkud nestřídmě co se spotřeby energie týče. Přímo na desku co nejblíž napájecím pinům jsem musel dobastlit poměrně velký kondenzátor, řádově stovky uF low ESR, takže tantal. K němu pak ještě dva 4700uF elektrolity. Teprv potom byl modul schopen se přihlásit do sítě. Předtím se po zadání PIN díky poklesu napětí způsobeném špičkami spotřeby vf části pravidelně restartoval.

Modul hodin reálného času, který jsem použil, je zřejmě určen pro Arduino. Koupil jsem ho GM Electronic v Praze. Žádné typové označení nemá, jsou na něm jen nápisy "Tiny RTC" a "I2C modules". Základem modulu je obvod DS1307. Kromě něj je na desce krystal, pár pasivních součástek a peměť EEPROM. Teploměr DS18B20, na který je na DPS místo, v mojí verzi není osazen.

Tento modul není úplně ideální, ale je po menších úpravách použitelný. První problém je napětí. Arduino pracuje s 5V, RasPi běží na 3,3V. To jsem poměrně jednoduše vyřešil lewel shifterem ze dvou tranzistorů, viz schéma. Druhý problém je fakt že modul je navržen pro použití dobíjecího článku. Ten je bohužel dost drahý. Při použití nedobíjecího článku CR2032 zálohování hodin nefunguje. Dá se tomu pomoct jednoduchou úpravou. Odpojí se dobíjení (rezistor R5 a dioda D1) a zruší se dělič napětí R6 a R4 (R6 se proklemuje). Technik se vyjadřuje zásadně grafem, rovnicí, nebo schématem. Takže tady je schéma.

AMS5915 je snímač absolutního tlaku, který má na čipu integrovaný teploměr. Má od výrobce napevno nastavenou adresu na I2C, naštěsní s ničím nekoliduje. Zbyl mi po testování dlouhodobé stability low-cost snímačů tlaku. Dostal natolik do těla, že už se na nic seriozního nedá použít. Tak jsem ho připlác sem s tím že můžu třeba předpovídat počasí.

Protikus GPIO konektoru je samec, dvouřadá lámací lišta, stejně jako na desce RasPi. Na propojení jsem si udělal mezikus ze dvou spojených lišt - samic. V rozpisce je ta dutinková lišta jen jednou. Původně jsem si totiž neuvědomil jak vysoké budou muset být distanční sloupky a pak jsem musel improvizovat, viz fotka.

obrazek
blokové schema
obrazek
schéma pom. desky
obrazek
úprava RTC
obrazek
sestava

Modul IR přisvícení a kamery

Nejdůležitější součástí celého projektu je NoIR kamerka. Původně jsem koupil originální Raspberry Pi NoIR V2.1 modul. Ten má ale místo objektivu jen jednoduchou čočku, což mi nevyhovovalo. Modul s rozlišením 8Mpix je dost nanic když je před ním objektiv který vůbec nekreslí. Napadlo mě použít miniaturní objektiv určený pro CCTV kamery. Ten má ale závit M12x0,5. To v podstatě není závit, to je jen lehce poškrábaný povrch materiálu. To mě neodradilo a pustil jsem se do výroby redukce. Samozřejmě jsem to zvoral, závit vyšel moc volný. Další řešení bylo koupit na AliExpresu jednoduchou webkamerku za necelé 4 USD a redukci z ní vykuchat. Objevil se ale problém v tom že objektivu s ohniskovou vzdáleností kolem 3mm vadil držák původního objektivu. Nešlo to zaostřit. Nezbylo než ho z čipu uloupnout. I to se podařilo. Na fotce je vidět vpravo dole. Je tam taky pěkně vidět proč se ten modul jmenuje NoIR. Znamená to No IR filter, bez infra filtru. U modulu s IR filtrem (zelená deska) je tento vlepen v držáku objektivu. Samotný čip je totiž narozdíl od lidského oka citlivý i v blízkém IR pásmu, což je pro normální zobrazení nevhodné. Po namontování nového objektivu a připojení k RasPi jsem dostal zelený a hodně tmavý obraz. Tenkrát jsem nevěděl co to je (chyba softwaru) a myslel jsem že je špinavý čip. Pokus o vyčištění klasickým štětečkem s balónkem byl pro tenhle čip bohužel konečná. Podařilo se mi potrhat vlasové drátky, kterými je připojen k destičce. I chybami se člověk učí. Nezbylo než zamáčknout slzu a objednat nový modul, tentokrát čínskou napodobeninu z AliExpresu. Typové označení na tom žádné není. Má čip OV5647 s rozlišením 5Mpix a objektiv 3,6mm bez IR filtru. Dá se vyhledat podle toho označení čipu, nabízí ho hodně prodejců. Ten můj modul má dokonce stejně umístěné otvory pro šrouby jako originál. Na desce je vedle objektivu LED, která indikuje činnost kamery. Tu jsem stejně jako LED na desce RasPi zakápnul černou barvou. Jejich světlo by se odráželo v plexiskle krytu do objektivu.

Druhá kamera je jednoduchá levná 2Mpix webkamerka Hama AC-150. Prodává ji např. Alza.cz. Demontoval jsem z ní kryt a uštípal zbytečné LED, tlačítko, mikrofon a audio kabel. USB kabel jsem zkrátil na délku cca 30 cm.

Pohybové PIR čidlo je z GM Electronic. Prodává se pod označením PIR modul SB00312A-1. Funguje poměrně jednoduše - pokud vidí pohyb, tak se veho výstup na zhruba 4s překlopí z nuly do jedničky. Log. 1 na jeho výstupu jsou 3V, takže je možné ho přímo připojit k RasPi.

IR LED jsou rozděleny do čtyř větví po pěti. Je to proto aby v případě poruchy jedné diody nezhasnul celý reflektor. Každá větev má svůj zdroj konstantního proudu tvořený stabilizátorem napětí a rezistorem. Ty odpory trochu topí, je dobré je při osazování nepřiplácnout na desku. Napájení by mělo být 12 - 15V. Tranzistor T1 se spíná přizemněním jeho gejtu.

obrazek
schéma IR a PIR
obrazek
osazení zeshora
obrazek
osazení zespoda
obrazek
DPS horní strana
obrazek
DPS spodní strana
obrazek
sestavený modul
obrazek
zbytky Pi NoIR modulu

Mechanická konstrukce, kryt

Jak je vidět na fotkách v předchozích odstavcích, celé zařízení je namontované v konstrukci z mosazného svářecího drátu. Deska s IR diodami, PIRkem a kamerami tvoří čelo konstrukce. K ní je přes distanční sloupky (ty červené) našroubováno víčko plastové odpadní trubky o průměru 100mm. V něm je vyříznuta díra a zasklená plexisklem. Všechno je utěsněno silikonem. Průměr DPS čelního modulu je zvolen tak, že pasuje do vnitřního průměru víčka. Celé zařízení je vsunuto do kusu odpadní trubky zkrácené na míru a uzavřené na druhém konci víkem s průchodkou. Tohle víko jsem vytočil z nějaké pertinaxové kladky. Průchodka je dělená. Kabel se při finální montáži napakuje samovuklanizační páskou, pak se namontuje průchodka, utěsní se to silikonem a nakonec se na to natáhne smršťovací bužírka. Pojmem kabel je míněna napájecí dvojlinka a kroucený čtyřpár (UTP, Eternet). Kabel musí být delší, aby bylo možné zařízení vysunout z krytu dopředu a příp. odpojit.



obrazek
kryt zepředu
obrazek
kryt zezadu

Pozn.: Při pokusu o "ostré" nasazení ve vodotěsném krytu jsem zjistil, že PIR snímač nefunguje. Na vině je přední kryt z plexiskla. V pásmu v kterém snímač pracuje je skoro dokonale nepropustný. Budu ho muset dát na kabel do samostatného krytu a připevnit pod těleso kamery.

Software

Ve zdroji v procesoru ATtiny běží kousek softwaru, který měří vstupní napětí a posílá ho RasPi. Zároveň kontroluje jestli RasPi žije a pokud ne, tak ho natvrdo restartuje (power-cycle).

V RasPi mám Raspbian Jessie, verzi z 27.5.2016. Pod ním běží několik skriptů v Pythonu a program Motion. Všechny skripty a Motion pouštim z /etc/rc.local. Každý má svůj řádek ve formátu:

nohup /home/pi/xxx.py >/dev/null 2>&1 &

Nejsem si jistý jestli tam ten příkaz nohup je potřeba, ale sichr je sichr. Znamená to že proces má ignorovat signál hangup terminálu z kterého byl spuštěn. Zbytek řádku znamená že výstup zahazuju a skripty pouštim na pozadí.

Program Motion spouštim s odkazem na konfigurační soubor (-c cesta_k_souboru), který mám jednoduše ve svém domovském adresáři (/home/pi).

Kvůli přístupu k datům jsem nainstaloval Sambu a ftp server. Návodů na instalaci a setup je na internetu spoustu, tím se tu nebudu detailně zabývat. Samba např. na webu www.theurbanpenguin.com, ftp server např na www.raspberrypi.org. Sambu prakticky nepoužívám, je tam totiž problém s pravidly pojmenování souborů v Linuxu a ve Woknech. Dá se to nakonfigurovat, povolit dlouhá jména souborů atp., ale zlobí to. Jako nouzovka to funguje dobře s krátkými jmény souborů, orientovat se dá podle data a času vzniku souboru. V domovském adresáři je potřeba si vytvořit poadresář /home/pi/zaznamy, pokud chcete používat moje skripty. Na něj se pak omezí přístup přes ftp a Sambu.

Doporučuji v RasPi povolit SSH a nainstalovat VNC server, třeba x11vnc. VNC připojení se hodí, když si chce člověk třeba prohlédnout nafocené obrázky aniž by je stahoval. Já to dělám tak že VNC server pouštím ručně přes SSH vždy pro jednu session.

Nezatěžoval jsem se se zabezpečením a nějakým user-friendly rozhraním. Počítám s tím že ta věc bude připojená jen ke kabelu, jehož druhý konec bude v mém notebooku.

Firmvare zdroje

Tady jsou zdrojáky a přeložený (.hex) program pro ATtiny. Driver pro atmelovský USI TWI a knihovnu TinyWireS jsem stáhnul odněkud z netu. Obojí jsem si trochu upravil. Program po spuštění zapne vlastní watchdog, nastaví I2C jako slave na adrese 0x24, nakonfiguruje vstupy a výstupy a AD převodník nastaví na vnitřní referenci 2,56V. Napájení RasPi i GSM modulu je defaultně vypnuté. Následně se rozběhne while(1) smyčka v které se měří napětí a pokud je dostatečné (cca 13,3V na vstupu, konstanta MIN_U + úbytek na diodě), tak se zapnou výstupy. Zároveň se čtou data z I2C. RasPi dává zdroji příkazy posíláním jednoho bajtu. Význam jednotlivých bitů je následující:

7(MSB)nepoužito, default 1
6nepoužito, default 0
5nepoužito, default 1
4nepoužito, default 0
31 vypne napajení GSM modulu, 0 zapne, default 0
21 zapne funkci wdt, 0 vypne, default 0
11 spustí odpočítávání vypnutí, default 0, zastavení není povolené (mohlo by se to teoreticky kousnout)
0(LSB)1 spustí odměr napětí, po dokončení spadne do 0, default 0, pošle odpověď XXS kde XX je napětí ADCW a S je status

Tento bajt se zapíše do proměnné status a program se následně podle toho chová. Jak je vidět, RasPi si pod sebou nemůže přímo podříznout větev, jedině se spožděním. To je tam proto aby se stihlo samo čistě vypnout. Bit 3 je sice po startu nastaven na 0, výstup napájení pro GSM modul je ale vypnutý dokud nepřijde příkaz že se má zapnout, nebo není naměřeno vyšší napětí než minimální povolené (konstanta MIN_U). Změřené napětí ATtiny posílá tak jak vypadlo z převodníku, tzn. maximum je 0x3FF což odpovídá 2,56V. Na vstupu převodníku je odporový dělič, viz schéma. Rozhodování jestli je napětí dostačující, nebo už bude vhodné se vypnout dělá Raspberry.

Funkce hlídacího psa pro RasPi (neplést s valstním WDT ATtiny) funguje tak, že při změně úrovně na pinu 1 procesoru (port B5) se snuluje čítač. Ten je nastaven aby přetekl zhruba za 5 minut a pokud k tomu dojde, tak se na zhruba 1s vypne napájení RasPi.

Ramdisk

Návod na vytvoření ramdisku jsem našel na webu www.astromik.org. Používám ho tam kde potřebuju něco dočasně a opakovaně uložit, abych zbytečně nepřepisoval stejné paměťové buňky SD karty a nezkracoval tak její životnost.

Nejprve je potřeba vytvořit adresář, který bude sloužit jako ramdisk. V mém případě mkdir /home/pi/ramdisk. Následně se upraví soubor /etc/fstab, já používám editor nano, takže sudo nano /etc/fstab. Sudo je tam protože právo zápisu do fstab má jen uživatel root. Název souboru fstab je zkratka pro File System Table. Do této tabulky je potřeba přidat adresář ramdisk jako další svazek, tzn. na nový řádek. Ten by měl vypadat takto:

tmpfs     /home/pi/ramdisk     tmpfs     defaults,size=4m     0     0

To znamená že připojené zařízení je dočasný souborový systém (Temporary File System) a připojí se do bodu /home/pi/ramdisk. Velikost bude mít 4MB.

Skript pro řízení zdroje

Tady je zdroják přejmenovaný na .txt. Doporučuji zobrazit v nějakém lepším editoru, např. Programmers Notepad a nastavit formát zobrazení pro Python. Musím se přiznat že jsem se na tomhle projektu učil Python úplně od nuly, takže je to psáno trochu podle pravidla "účel světí prostředky". Ale funguje to.

Úkolem tohoto skriptu je komunikovat se zdrojem, tzn. resetovat watchdog a sledovat napětí, posuzovat jestli je dostačující a případně vyvolat bezpečné vypnutí. Kvůli problémům s kousajícím se GSM modulem jsem tam přidal možnost jeho restartování. To se dělá pomocí souboru zdroj na ramdisku. Skript si ho přečte, provede příkaz a soubor smaže. Loguje do souboru zdroj.log a nemá hlídání velikosti logfajlu, protože zápisů by při běžném provozu nemělo být moc.

Spouští se při startu z /etc/rc.local. Pokud se spustí, tím se povolí ve zdroji funkce watchdog a pak se killne, tak zdroj po chvíli restartuje Raspi. Pozor na to.

Vypínací skript

Zjistil jsem, že když běží stahování a ukládání dat z kamer (skript pir.py a motion), samba a ftp server, tak se RasPi není schopno samo vypnout. Po příkazu sudo shutdown now se rozběhne vypnutí, ale po chvíli se to sekne. Proto jsem si napsal skript, který před vypnutím systému tyhle čtyři procesy sestřelí. Tady je opět ve formátu .txt. Loguje do souru vyp.log (jen tak pro kontrolu).

Spouští se ručně když je potřeba, nebo automaticky ze skriptu zdroj.py.

Řízení IR přisvícení

Základní fukce tohoto skriptu (přejmenovat na pir.py) je hlídání výstupu PIR snímače pohybu a rozsvěcení IR LED. Při detekci pohybu rozsvítí IR diody. Následně udělá fotku pomocí webkamerky a posoudí jak je tmavá. Pokud se rozhodne že je den, tak IR diody zas zhasne a fotku uloží. Pokud je tma, tak fotku zahodí a přisvícení nechá rozsvícené minutu.

Pokud je povoleno vyhlášení alarmu z PIR čidla, tzn. na ramdisku existuje soubor s názvem alarm_pir, tak tamtéž vytvoří soubor alarm. Tímto způsobem komunikuje se skriptem gsm.py, který pracuje s GSM modulem.

Loguje do souboru pir.log a hlídá si délku logfajlu. Pokud je delší jak 1000 řádků, tak nejstarší záznamy umazává.

Ukládá do adresáře /home/pi/zaznamy. Ten je mutno ručně vytvořit. Motion do něj zapisuje taky.

Spouští se při startu z /etc/rc.local.

Kontrola místa na kartě a archivování

Jelikož kamerka bude fungovat off-line, musí se data ukládat lokálně a následně jednou za čas přečíst. To jednou za čas ale může být dost dlouho a mohlo by se nedostávat místa jak u dlouho běžících Windows bez reinstalace. Proto je tam skript umazdir.py, který kontroluje zbývající místo na disku (kartě) a případně umazává nejstarší fotky v adresáři home/pi/zaznamy. Limit kolik místa má na kartě zůstat doporučuju nastavit tak aby obrázků nebylo moc, protože pak je problém např. s výpisem adresáře při vzdáleném přístupu.

Spouští se při startu z /etc/rc.local.

Doplněno 22.6.2017: Při ostrém provozu jsem zjistil, že Raspberry má velký problém s výpisem obsahu adresáře v kterém je větší počet souborů. Napsal jsem si skript zabal.py, který se pouští každý den o půlnoci a fotky pořízené ten den sbalí do archivu.

Spouští se pomocí cronu. Do crontab (crontab -e) jsem přidal následující řádek.

0 0 * * * /home/pi/zabal.py

Motion

Motion lze naistalovat jednoduše pomocí sudo apt-get install motion, pokud je RasPi připojené k internetu. Je to poměrně košatý kus softwaru. Já jsem si ho nakonfiguroval tak aby detekoval pohyb v obraze a následně uložil obrázky v kterých pohyb viděl. Video neukládám. Zároveň na začátku každé události udělá zápis do souboru motion.log. Konfigurační soubor vychází z defaultního motion.conf. Upravil jsem následující položky:

Motion se spouští při startu z /etc/rc.local. Skript motionloger.py se spouští automaticky při detekci pohybu. Zároveň vyhlašuje alarm (předává echo skriptu gsm.py), pokud je povolen.

GSM

Tenhle skript by se dal popsat slovy klasika "Teda, to muselo dát příšernou práci. Přitom taková blbost, co?". Je to spíš jen taková třešnička na dortu, ale dalo to bezkonkurenčně nejvíc práce. Ošetřit všechny možnosti které mohou nastat při komunikaci s GSM modulem pomocí AT příkazů je docela záhul. Tady je samotný skript. Opět přejmenovaný na .txt, má se jmenovat gsm.py. Využívá funkce z modulu gsmmodule.py. Pochopitelně jsem smazal svoje telofonní číslo a přístup ke svému ftp úložišti. Doplňte si tam svoje údaje.

Komunikuje se pomocí SMS. Jak už jsem psal, MMS můj modul bohužel posílat neumí. Na to je potřeba verze s větší pamětí. Pokud skript najde nějakou SMS v které nerozpozná příkaz pro sebe, tak ji přepošle tak jak přišla. V SMS rozpoznává následující příkazy:

Loguje do souboru gsm.log a kontroluje počet řádků, případně umazává. Přes soubor /home/pi/ramdisk/zdroj komunikuje se zdrojem. Pokud se sekne GSM modul tak vyvolá jeho restart.

Jak jsem psal výše, v souboru gsmmodule.py je potřeba doplnit cestu ke svému ftp úložišti, tzn. adresu (proměnná ftpserver), uživatelské jméno (proměnná ftpuser) a heslo (ftppassw). Dále je v tom samém souboru potřeba nastavit Access Point Name (APN, proměnná apn), což je údaj který by měl poskytnout operátor. V souboru gsm.py je nutné doplnit svoje tel. číslo (proměnná číslo).

Alarmy od detekce pohybu programem motion, nebo PIR čidlem se vytvářejí pomocí zápisu prázdného souboru s názvem alarm na ramdisk. Tam si ho přečte skript gsm.py, smaže ho a vytočí zadané číslo. Stejně tak povolování alarmů od obou zdrojů událostí se děje zápisem prázdných souborů se specifickým názvem na ramdisk. Není to moc elegantní řešení, ale je dostačující, vzhledem k tomu že nejde o nějaké přesné časování.

Spouští se při startu z /etc/rc.local.

Doplněno 20.6.2017: Po třech měsících ostrého nasazení při hlídání stavby mého domu se objevil problém. GSM modul přestal komunikovat. Na vině byla chyba ve skriptu gsmmodule.py a to ve funkcích pocitani_sms() a indexy_sms(). Smyčka while je tam pro sichr ukončena po padesáti řádcích. To není problém, protože při běžné funkci se na kartě tolik SMS nenashromáždí. Jenže situace se mění v okamžiku kdy dojde kredit a člověk to delší dobu neřeší. Naskáčou upozornění od operátora, pak se díky tomu bezpečnostnímu ukončení ty funkce neprokoušou ke konci k řetězci OK, vrátí chybu a celé to zamrzne. Řešení by bylo hlídat kredit a jeho stavem podmínit další fungování a nebo ho prostě nenechat dojít. Já jsem na hulváta zvýšil ten limit na 500.

Tlak a teplota

Tuhle část asi nikdo nevyužije. Dost pochybuju, že se někomu doma válí stejný snímač tlaku a kupovat ho k tomuhle účelu by nemělo smysl. Ale pro pořádek to sem dám. Skript tlakteplota.py měří tlak a teplotu každou minutu, počítá trend a výsledky ukládá na ramdisk. Odtamtud si je v případě potřeby přebírá skript gsm.py.

Spouští se při startu z /etc/rc.local.

Hlídač

Nakonec jsem si nechal skriptík, který to všechno hlídá. Přecejen občas se chybička vloudí a skript spadne, obzvlášť pokud ho psal začátečník jako např. já. Skript hlidac.py periodicky kontroluje jestli všechno co má běžet běží a pokud ne, tak to znovu nahodí. Hlídače nikdo nehlídá. Ale dal by se teoreticky nahodit SMSkou "DPC CMD /home/pi/hlidac.py &", kdyby z nějakého důvodu spadnul.

Spouští se při startu z /etc/rc.local.


A to je celé. Připomínky, dotazy atp. pište na majl uvedený v patce webu. Budu rád i když napíšete že jste si tu mou slohovku přečetli a že se vám něco z toho hodilo. Nemám (radši) na webu počítadlo přístupů, takže netuším jestli to vůbec někdo čte.

David Pleskot     david.pleskot(zavináč)seznam.cz     psáno v editoru Geany
světlemodrá šipka modrá šipka
Úvod
Auto/Moto
Elektro-bastlení
Cestování
Knihy
Různé
Guestbook
posl. aktualizace: 5.4.2023
RSS