Hálózati videórögzítő (Shinobi NVR)
2018. május 10. írta: eNeS

Hálózati videórögzítő (Shinobi NVR)

Korábban már felvázoltam egy IP kamera(szerűség) építésének mikéntjét, és már akkor elhintettem, hogy több kamera képének rögzítésére szükséges egy külön eszköz, egy hálózati videórögzítő, szép magyarosan Network Video Recorder. Nevezik még IP rögzítőnek is, azon egyszerű okból, mivel IP kamerák képeit rögzíti vezetékes vagy vezeték nélküli TCP/IP hálózaton keresztül. Erre a célra általában dedikált hardvereszközt szoktak vásárolni, ami egyébként egy beágyazott Linux rendszert tartalmazó, kifejezetten a H264 videofolyam dekódolására-kódolására optimalizált mikroszámítógép, amivel a SATA portján keresztül csatlakoztatott merevlemezekre történhet a rögzítés.
A fent hivatkozott cikk legvégén ajánlottam pár szoftveres megoldást, amit akár elfekvő PC-re is fel lehet telepíteni, és ellátja a fenti feladatot - persze azon ne lepődjünk meg, ha neadjisten lassú lesz, mint a dög, nem véletlenül emeltem ki a fentiekben a "dedikált" és az "optimalizált" szavakat. De egy próbát megér.

A fogyasztásra tekintettel (mivel természetesen állandóan kell működnie a rögzítőnek) egy olcsó minigéppel teszteltem ki némi utánaolvasás után a Shinobi CCTV nevű szoftvert, többek között azért, mert a Zoneminder JPEG képes tárolási módszerét nem tartom túl praktikusnak, a Shinobi már ismeri az ONVIF szabványt is, illetve teljesen nyílt forrású, ingyenes bármilyen platformra. Az Orchid Core ugyebár csak ARM-ra ingyenes, a RapidVMS meg lehet, hogy valamikor nyílt forrásúnak indult, de az 5.0-ás verziótól ez számomra igencsak kérdéses.

Hardver

Az egyértelmű volt számomra, hogy az egymagos Raspberry Pi Zero W erre kevés lesz, így a négymagos, olcsó Orange PI Zero felé fordultam - lehet végre megtaláltam a felhasználásának ésszerű módját? Ugyebár a 0,7-0,8W-ot fogyasztó RPI Zero tökéletesen alkalmas mindenféle érzékelőnek, IOT eszköznek, akár Domoticz szervernek. Az ehhez képest kb 10-szeres fogyasztású Orange Pi Zero (7-8W) meglehetős pazarlás ilyen célokra - szerintem legalábbis. Nem beszélve az Orange Pi gyengécske szoftveres támogatottságáról, de ezt már említettem, szóval lássuk erre jó lesz-e! (Megj: Természetesen nincs akadálya Raspberry Pi 3 használatának sem, akinek van)

opi_nvr.jpg

A hozzávalók beszerzését nyugodtan kezdjük hűtőventillátorral és valami módszerrel annak használatára, pl fixen megpróbálhatjuk rákötni az OPI 5VDC kimenetére, vagy külön tápról is járathatjuk, vagy hozzám hasonlóan az alábbi egyszerű (3 alkatrész) tranzisztoros vezérlésen keresztül. Az S8050-et már használtam korábban ellenállás nélkül, és köszöni szépen, fél éve nincs vele baj, de ezúttal a neten fellelhető leírások alapján megpróbáltam "rendesen" megcsinálni. Egy 330 ohmos áramkorlátozó ellenállás került az OPI GPIO és a tranzisztor bázisa közé, a ventillátor +/- közé pedig egy dióda, arra az esetre, ha valamiért visszafelé kezdene forogni, és áramot akarna visszatáplálni az OPI-nak, amit az némi füsttel honorálna. Valahogy így:

trans_vez.jpg

Vizuálisabbak kedvéért ez így sikerült: (egyszerűbb megoldás is elképzelhető természetesen)

trans_vez2.jpg

Kis segítség az S8050 lábainak azonosításához:

s8050-pinout.jpg

Lehet persze, hogyha nem lenne elfekvőben egy rakat S8050-em, akkor inkább egyszerűen egy relével kapcsolgatnám a ventilátort... :) Mindegy végül milyen utat választunk, a lényeg, hogy a hűtőborda kevés. Aki kételkedne, az alább mellékelt kép talán meggyőzi, az OPI bekapcsolása után kb 1 perccel már 65 fokon volt a CPU, és ahogy bekapcsoltam GPIO segítségével a ventilátort, 10 fokot hűlt a következő 1 perc alatt! Ezt persze praktikusabb, ha egy program kapcsolja be automatikusan, szükség szerint. (Összehasonlításképpen az RPI Zero-im 39-42 fokon mennek, hűtés nélkül, zárt dobozban)

orangepi_therm.jpg

Alapanyagok:

Eszköz Bruttó ár
Orange Pi Zero 512MB (*) 3900 Ft
8GB micro SD kártya, Class10 1500 Ft
32GB USB2 pendrive 3200 Ft
5V 2A tápegység micro USB csatlakozóval (*) 700 Ft
5VDC ventilátor (kétvezetékes) (*) 230 Ft
330 ohmos ellenállás x1 10 Ft
S8050 NPN tranzisztor x1 20 Ft
1N4001 dióda x1 10 Ft
410C4 Kötődoboz IP56 100x100x50mm 570 Ft
Összesen: 10140 Ft

 

A rendszer egy 8GB-s microSD kártyára került, a rögzítést pedig egy 32GB-s külső USB-s pendrive-ra terveztem. A protolapot meg a csavarokat nem számoltam... A kötődoboz helyett persze megvásárolható az OPI Zero saját háza is, nagyjából 1000Ft-ra jön ki, nekem azért kellett ez a doboz, hogy a pendrive is védve legyen.

Csak összehasonlításképpen: a legolcsóbb dedikált NVR-ek ott kezdődnek, hogy 20.000Ft+Áfa, és venni kell hozzá még egy merevlemezt is, ami majd még egyszer ennyi. Persze jobb is a teljesítményük, és összehasonlíthatatlanul könnyebb beállítani őket. :)

Szoftver

Az Orange Pi-n a korábban telepített Ubuntu Server van, ez legalább valamilyen szinten a szoftveres támogatás illúzióját nyújtja, mivel elég sok csomag és általános leírás van Ubuntuhoz. Az Ubuntut természetesen tetszőleges  PC-re is fel tudjuk telepíteni, így az alább írtak 99%-a igaz lehet más hardverekre is. És akkor folytassuk a lényegi NVR szoftverrel való ismerkedéssel, jöhet a Shinobi!

Az Ubuntu-t támogatja a Shinobi telepítője, csapjunk is bele, root-ként futtassuk az egysoros telepítőjét:

bash <(curl -s https://raw.githubusercontent.com/ShinobiCCTV/Shinobi-Installer/master/shinobi-install.sh)

A telepítés nagyjából 20 percig tart, kérdéseket fog feltenni nekünk, első körben a telepíteni kívánt verziót, a Pro magánfelhasználásra ingyenes, egyéb esetben a másikat válasszuk. Aztán rákérdez a linux disztribúció típusára az 1-es gombbal választhatjuk az Ubuntut.
Lesz egy pont, ahol dönteni kell, hogy Sqlite3 vagy MariaDB adatbázist akarunk használni, szerintem a MariaDB kevésbé terheli az SD kártyát, így azt választottam. Kérhetjük, hogy hozzon létre számunkra egy random nevű felhasználót, melynek nevét és jelszavát a telepítés végén kiírja, de szinte felesleges.

Némi idő után jön a végső, legfontosabb kérdés:

Shinobi - Finished
Shinobi - Start Shinobi and set to start on boot?
(y)es or (N)o

Természetesen az y-t válasszuk, ha nem csak próbából tettük fel.

Majd ez után:
||===== Install Completed =====||
|| Access the main Shinobi panel at ....

Az általa kiírt porton és IP címen elérhető web böngészőből a Shinobi felülete!
Kivéve ha nem, mert engem egy hibaüzenet fogadott, ez:
"Cannot GET /"

Erre is van persze magyarázat, jelenleg az ARM rendszerre nincs teljesen felkészülve a telepítő, ezért azt kézzel kell feltennünk és egy symlink-el becsatolni, hogy meg is találja. (a fenti rejtélyes hiba akkor áll elő, ha nem találja az ffmpeg-et...)

sudo apt-get install ffmpeg
sudo mkdir /home/Shinobi/node_modules/ffmpeg-static/bin/linux/arm
sudo ln -s /usr/bin/ffmpeg /home/Shinobi/node_modules/ffmpeg-static/bin/linux/arm/ffmpeg
sudo reboot

Az újraindítás után a 8080-as porton elérhető a Shinobi webes felülete.

Mielőtt belépnénk, érdemes szemügyre venni a "Super Admin" felületet, ahol felhasználókat adhatunk hozzá, újraindíthatjuk, illetve rendszerbeállításokat módosíthatunk, pl portot, SMTP szervert, vagy további tárhelyek hozzáadását.

Amennyiben a Super felületre be tudunk lépni, de minden mező üres, és nem tudunk felhasználót sem felvenni, akkor a MySQL/MariaDB adatbáziskezelőnk vagy nem fut, vagy nem érhető el a 3306-os porton!

Elérhető a "/super" elérési úthoz adásával:
http://xxx.xxx.xxx.xxx:8080/super

Az alapértelmezett superadmin felhasználó "admin@shinobi.video" a jelszava "admin", ezt érdemes alkalomadtán módosítani.

shinobi_config.jpg

A fenti képen látható, hogy az /mnt/pendrive elérési úton becsatolt (csatolása természetesen fixen, /etc/fstab-on keresztül) 32GB-s pendrive-ot "second" nevű tárolóként felvettem a Shinobiba - nem akarom a microSD kártyát túl hamar kinyírni. Valamint az Accounts-nál a + jellel tudunk magunknak új felhasználót létrehozni. Ezzel a felhasználóval tudunk aztán belépni a 8080-as porton alapértelmezetten előálló login ablakban:

shinobi_login.jpg

Belépés után a főablak fogad minket:

shinobi_main.jpg

A + jellel tudunk kézzel felvinni kamerát, de mi okosan nem ezt használjuk, a mellette jobbra levő Google Maps térképjelére hajazó ikon indítja az ún.Power Video Viewer-t, ami nagyon praktikus, később visszatérünk rá.
Balra a legelső ikon a telefonunkból ismerős lehet, a bal oldali beúszó menüt hozza elő, itt jelennek meg majd a felvett kamerák, illetve a fent előbukkanó e-mail címünkre kattintva érhetőek el nagyon hasznos beállítási lehetőségek, amikből először is az ONVIF lehetőséget kiválasztva tudjuk kameráinkat megkerestetni a helyi hálózatunkon.

shinobi_onvif.jpg

A bal oldalon az IP címtartományt megadjuk a látható formátumban, ha már beállítottuk a kamerákat (és feltehetően igen) akkor a konkrét tartományt, ha nem tudjuk, akkor 1-254 között is megadhatjuk a címek végét, végigkutatja. Persze sokkal valószínűbb, hogy tudjuk, hiszen ha nincs beállítva fixre a kamera IP címe (vagy a kamerán vagy a DHCP szerveren), akkor meg fogunk lepődni a legközelebbi újraindításkor, mikor minden szétugrik. :)

shinobi_onvif2.jpg
Megadjuk a portot, ami vesszővel elválasztva több is lehet, pl 80,8080 kameratípustól függően. Valamint a nevet és jelszót, amivel hozzáférhetőek ezek. (Megjegyzés: az új Hikvision kamerák firmware-én külön kell engedélyezni az ONVIF protokollt, valamint külön ONVIF felhasználókat kell létrehozni, az 5.5-ös firmware előttieken ezek alapból engedélyezettek) Amint látható megtalálta mind a négy kamerát, amelynek a tartományát megadtam ONVIF kompatibilis HIKVISION kamerákról van szó. A listában látható kék színű mappákra kattintva lehet beimportálni a felderített elérési utakról a videofolyamokat a Shinobi-ba.

Természetesen mielőtt nekiestem volna a keresésnek, beállítottam fixre minden kamera IP címét, jelszavát, valamint mindegyiken beállítottam az elsődleges stream-et HD/720p felbontásra, a másodlagost 640x480 vagy 640x352-re attól függően, milyen méretarányt támogattak. Ennek egyrészt a sávszélességgel és tárhellyel való spórolás az oka, másrészről az általam későbbiekben használni kívánt olcsó kamerák (pl a Wanscam, ESCAM) is csak HD felbontást tudnak.

A négy tesztkamera felvétele után, ha kiválasztom őket a stream listából az alábbi élőképeket láttam:

shinobi_watch1.jpg

Figyelmes szemlélők több dolgot is észrevételezhetnek: az idő nem igazán van szinkronban, igen, mert ez a kamerák által rányomott kameraidő, nem a rögzítő ideje és nincsenek NTP szinkronban sem. Ez orvosolható, vagy el kell tüntetni vagy beállítani.
A CPU terheltség a 4 magra 2%, ami megörvendezteti az egyszerű usert, de jobban megnézve látható, hogy minden streamnél "Watch only" a mód, vagyis csak élőkép van, semmilyen rögzítés nincs folyamatban!

Jöjjön némi finomhangolás, az automatikusan felismert és beállított paramétereken. A bal oldalon a streamek listájában látható mindegyik mellett egy csavarkulcs, erre kattintva érhetőek el a stream beállításai.

shinobi_stream_settings.jpg

A jobb lent Save mellett látható Simple helyett válasszuk az Advanced módot. A balra látható Options-ben az Add input field segítségével vigyünk fel egy új streamet, ez lesz a másodlagos.

Az általam használt beállítások az alábbiak:

Megjegyzés: az alábbi URL-ek Hikvision-re igazak, ESCAM és WANSCAM esetében a korábban leírtak szerintiek, de az automata kereső kitölti - legalábbis az elsődleges streamet (0), a másodlagos stream-et vegyük fel Input Map 1 néven értelemszerűen! Az fpst a kamerák webes felületén kézzel beállítottam 20 illetve másodlagos stream esetében 10 fps-re, az ott szereplő értékeket kell felvenni a Shinobi-ba is!

Mode: Record
Storage location: second (ez a pendrive ugyebár)
Input type: H264
Full URL Path: rtsp://FELHASZNÁLÓ:JELSZÓ@KAMERAIP:554/Streaming/Channels/101?transportmode=unicast&profile=Profile1
Monitor capture rate (FPS): 20
Input Map: 1
Full URL Path: rtsp://FELHASZNÁLÓ:JELSZÓ@KAMERAIP:554/Streaming/Channels/102?transportmode=unicast&profile=Profile2
Monitor capture rate (FPS): 10
Analyzation Duration: 1000000
Probe Size: 1000000
STREAM
Input Feed: Map 1
Stream type: Poseidon
Connection Type: Websocket
Video Encoder: copy
Audio Encoder: No Audio
JPEG API
Enabled: No
Recording
Input Feed: Map 0
Record File Type: MP4
Video Codec: copy
Audio Codec: No Audio
Recording segment interval (minute): 5
Detector Activated
Input Feed: Map 1
Enabled: Yes
Use Built-In: Yes
Save events to SQL: Yes
How to Record: Delete Motionless Videos (Record)
Delete Motionless Video: Yes
Detector Rate: 1
Feed-in Image Width: 640
Feed-in Image Height: 480
Indifference: 10

 

Az első STREAM blokk az élőképre vonatkozik, erre megadhatjuk a kisfelbontású 1-es folyamot, egymás mellett általában úgyis több kisebb élőképet látunk. De ha nem számít a teljesítmény, de jobban akarunk élőben is látni, megadhatjuk a 0-ás folyamot, ízlés dolga. (Dedikált rögzítőknél általában intelligensen választ a két stream közül megjelenítéskor, teljes képernyőn a "nagyfelbontásút", sok kicsi bélyegképnél a kisfelbontásúakat használja, a Shinobi - még - nem tud ilyet sajnos)
A JPEG API-val lehet állóképet kinyerni a rögzített folyamból, de hirtelen megugrott tesztjeim során a processzorterhelés tőle (2-ről 100-ra), így inkább lekapcsoltam mindenhol, elvagyok nélküle. Sajnos a praktikus Timestamp funkció, ami a rögzítő dátum-idejét tenné vízjelként a képre nem működik az egyszerű "copy" móddal, így ezt nem engedélyztem - a többi feldolgozó kodek viszont nagyon processzor-éhes. Bár ha van egy jó gyorsítással rendelkező videokártyánk, annak erőforrásait is tudja használni (Accelerator:Yes), de ARM architektúrán, amin a tesztet is folytatom, ez nem túl gyakori. (libx264 bekapcsolása azonnal 130% CPU terhelést nyomott) Elméletileg a Cedrus/VDPAU gyorsítást be lehet üzemelni Orange Pi-re, én azonban nem jártam sikerrel, meghagyom ezt a dicsőséget másnak.

A RECORDING blokkban természetesen az Input Feed Map 0-át vagyis a nagyfelbontású képet adjuk meg, ezt rögzíti a pendrive-ra a program. A felvételi szegmens méretét 5 percre állítottam, vagyis 5 percenként nyit új fájlt a felvételnek, és minden fájl végén végzi el a mozgásanalízist - ha engedélyezük. Ezt a következő beállítás, a DETECTOR alatti Enabled és a Use Built-In Yes-re állításával tehetjük meg. A DETECTOR blokkban a kisfelbontású stream-et adjuk meg, ez jó hatással lesz a CPU használatra! (Input Feed Map 1) A rögzítés módjára három lehetőség van:

  1. Traditional (Watch-Only, Includes Buffer) - ez lenne a legoptimálisabb, de feltehetőleg a mozgásérzékelés érzékelési problémái miatt ez tesztjeim során sosem működött megfelelően, remélhetőleg javítják. Az lenne a lényege egyébként, hogy csak Watch módban menne a stream, anélkül, hogy háttértárra rögzítene, egy memória-pufferben vizsgálná volt-e változás és ha igen, elmentené, így valamennyi videó a mozgás detektálása előttről is rögzíthető lenne.
  2. Hotswap Modes (Watch-Only) - ez a megoldás akkor kezd rögzíteni, miután a mozgást érzékelte, nincs tehát előzmény
  3. Delete Motionless Videos (Record) - ezt a megoldást választottam végül, igaz az állandó rögzítés folyamatos IO terhelést okoz a lemezírás miatt, viszont megmarad a mozgás előzménye is. Igazából elemez minden felvett sávot (ugye ezt én 5 percre állítottam az előbb) amikor lejár, és ha nem lát benne mozgást, akkor törli.

A negyedik lehetőség ugyebár, ha egyáltalán nem engedélyezzük a Detectort, így nincs mozgásérzékelés, hanem folyamatosan rögzítünk, csak hát a tárhelyünk véges.

Amennyiben rajta hagyjuk a képen a kamera saját dátum/idejét és nem szeretnénk, hogy mozgásnak detektálja a Shinobi, akkor a Region Editor segítségével tudjuk megadni, melyik területen vegye figyelembe a kép változásait, és az Indifference értéket ezen belül is meg kell adni.

Miután ilyen módon optimalizáltam mind a négy kamera beállításait, a CPU tehelés máris 50% fölé kúszott:

shinobi_recording.jpg

Ebből némi számolgatás után látható, hogy egy Orange Pi Zero 4-6 csatornás 720p HD rögzítőként alkalmazható - legalábbis ilyen beállítások mellett. További finomhangolással elképzelhetőnek tartom, hogy ez 8-ig is felvihető, de a pendrive/USB sebessége szűk keresztmetszet lehet a rögzítés számára. SATA port pedig csak a drágább eszközökön érhető el, pl a Banana Pi M1 még lehet ár/érték arányban megérné, de egy drágább Intel lapka helyett már inkább érdemesebb akkor dedikált NVR-be beruházni, minden szempontból. Esetleg ha van otthon egy elfekvő régi PC-nk, amiért nem kár, nem zavar az állandó zúgása, és a fogyasztásával is kiegyezünk, mely esetben használhatjuk erre a célra is. :)

Ha van már felvételünk, persze meg is szeretnénk nézni, egyszerű megoldásként a balra látható stream listán a  középső, szalagra hasonlító ikonra kattintva elérhetőek a felvételek kronológiai sorrendben, előnézet és letöltés is elérhető a felvételeken. De ami még jobb, a fentebb már hivatkozott Power Video Viewer:

shinobi_view.jpg

A jobbra fent látható "Monitor" legördülőből választhatjuk ki a kamerát, alatta a dátumot, alul láthatóak milyen időpontokra vannak felvételek és jobb oldalt középtájon van egy grafikon, ami az érzékelt mozgás valószínűségét részletezi, ebben is lehet adatpontokra kattintani és azonnal arra az időpontra ugrik az élőkép, tehát nem kell nagyon tekerészéssel keresgélnünk egy-egy felvételben, hogy ugyan mikor volt benne a mozgás. Ez nagyon praktikus és Pro rögzítőknél sem láttam még hasonló funkciót.

Extra beállítás mozgásérzékelés átjelzéséhez Domoticz felé: 

DETECTOR beállításblokk
Webhook: Yes
Webhook URL: http://DOMOTICZ_IP:DOMOTICZ_PORT/json.htm?type=command&param=switchlight&idx=4&switchcmd=On


Ha a 4-es IDX-ű eszköz egy mozgásérzékelő - és mivel KI üzenetet nem küld, nekünk kell beállítani, hogy pl 3 másodperc után kikapcsolja magát, ez a "Késleltetés kikapcsolása" Domoticz beállítás egyébiránt. Így a kamerával egyúttal egy (virtuális) mozgásérzékelőt is kapunk. Persze ha forgatható kamera, akkor a kamera forgatása is mozgás lesz. :)

domoticz_motion.jpg

Extra beállítások ESCAM G02 PTZ használatához:

CONTROL beállításblokk
Controllable: Yes
Custom Base URL: http://FELHASZNÁLÓ:JELSZÓ@KAMERAIPCIM:80
Call Method: GET
Stop Command: Yes
Center: /cgi-bin/hi3510/ptzctrl.cgi?-step=0&-act=home
Left: /cgi-bin/hi3510/ptzleft.cgi
Left Stop: /cgi-bin/hi3510/ptzctrl.cgi?-step=0&-act=stop
Right: /cgi-bin/hi3510/ptzright.cgi
Right Stop: /cgi-bin/hi3510/ptzctrl.cgi?-step=0&-act=stop
Up: /cgi-bin/hi3510/ptzup.cgi
Up Stop: /cgi-bin/hi3510/ptzctrl.cgi?-step=0&-act=stop
Down: /cgi-bin/hi3510/ptzdown.cgi
Down Stop: /cgi-bin/hi3510/ptzctrl.cgi?-step=0&-act=stop

 

Egyszerű szoftveres ventilátor vezérlés

A ventilátor szoftveres használatára először a WiringOP könyvtár használatát terveztem (igen, a neve nem véletlenül hasonlít a WiringPI-re), de megint közbejött a gyengécske szoftveres támogatás, a PA06 GPIO-ra csatlakoztattam a ventilátor vezérlését, ami a 7-es pin, de valamiért a "gpio" parancsal a 4-es számot kellett megvezérelnem, hogy változzon a GPIO6 állapota. Nagyon úgy tűnik, hogy a lábkiosztás nincs aktualizálva a Zero-hoz...
https://github.com/zhaolei/WiringOP

opi_pindetails.jpg
Vezérlés alatt egyszerű be-kikapcsolást értek, de vannak komplexebb megoldások feszültség/fordulatszabályzós vezérlésre is, ami annyira most nem szükséges nekem, így maradok az egyszerű tervnél.

Ám semmi gond, úgyis jobban szeretem a Python nyelvet, tovább nézelődtem, és találtam egy kifejezetten Orange Pi Zero-hoz aktualizált pyA20 könyvtárat. Telepítése a következőképpen működhet:

sudo apt-get install python3-dev python3-setuptools screen
git clone https://github.com/nvl1109/orangepi_zero_gpio.git
sudo python3 setup.py install

git clone https://github.com/eclipse/paho.mqtt.python
cd paho.mqtt.python
sudo python3 setup.py install

Az MQTT már csak extra, hogy tudjam logolni a változásokat, így a korábbi multiszenzorokhoz hasonló programot készítettem a ventilátor be (65 foknál) és kikapcsolására (42 foknál), valamint, bár tudom, hogy az Armbian-os fejlesztők nagyon ügyesen adaptálják a processzorteljesítményt a terheléshez, én inkább lekapcsolok mindig egy magot, ha 80% alatt van a használat, illetve visszakapcsolok mindig egyet, ha növekszik.

A főprogram githubon itt található:
https://github.com/enesbcs/multisensor-python-rpi/blob/master/ms_opieye.py

Aminek indítását az /etc/rc.local -on keresztül állítottam be, de kinek milyen megoldás szimpatikus az automatikus indításra...

Akinek elég csak a unit, az itt van:
https://github.com/enesbcs/multisensor-python-rpi/blob/master/unit_cputherm_opi.py

 

A bejegyzés trackback címe:

http://bitekmindenhol.blog.hu/api/trackback/id/tr213901082

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.