kezdõlap | home

lapanet | blog | maroknyi VIII. - egy maroknyi szenzor


nem terveztem, hogy ezt most összefoglalom, de talán jobb is így. kezdjük az elején, a széppel. ha saját magad tervezte-kivitelezte megújuló energiás rendszert álmodsz meg, mindenképpen szükség lesz benne valamilyen logikára, ami vezérli azt. vezérlés pedig csak bemenõ információ alapján lehetséges, ami elektromos rendszernél a volt és amper, melegítési rendszernél pedig a hõmérséklet és adott esetben az áramló víz mennyisége.

bár szokásom a nem létezõ eszközöket elõnyben részesíteni (többféle értelemben is), mégsem lehet mindent bimetál termosztátokkal meg szelepekkel elintézni. így vagy úgy de szükséges egy rendszer, ami a lakásban bárhol képes mérni a hõmérsékletet, illetve legalább az áram fõ elosztója közelében számos feszültséget és áramerõsséget. persze nem csak a mérés a nagy ügy, hanem a mért értékek eljuttatása egy azt értelmezni tudó, és végül reléket vagy szelepeket kapcsolgató géphez. ha az ember felcsapja az internetet, a különbözõ gépészeti áruházakban kilóra mérik az erre alkalmas célrendszereket, csak épp aranyáron, jelentõs fogyasztással és mindenféle megkötéssel.

hogy kicsit domborítsam már elõre az én megközelítésem, jelenleg féltucat, de további legalább 1 tucat hõmérõ, valamint legalább két fesz, és két árammérõ lesz táplálva egy usb portról. pontosabban egy 2m usb kábelen lógó passzív 4-port hubról lógó további 5m usb vezeték utáni 70-90m vezetékrõl. igaz, hogy ebben az információk tárolása és relék nincsenek benne, de a relé elvileg szintén ráköthetõ a buszra, a manapság elterjedt usb-s routerekre meg telepíthetõ a loggolást végzõ csomag. aki nagyon akar akár memóriát is rakhat a vezetékre. az 1-wire eszközök elterjedt, kompakt formája az ibutton nevű fémdoboz, amiben lehet termochron vagy akármi.


java


a buszrendszer neve 1-wire, ami kezdjük ott, hogy hatalmas átverés. merthogy még a leglámább hõmérõszenzorhoz is két ér megy. sokat nem okoskodnék róla, én innen kezdtem az ismerkedést. mivel nem szeretném hosszú lére ereszteni és a célok remélhetõleg világosak, leírom a jelenlegi megoldást.

usb master (azért nem kicióccó, mert ez ipari gumizott kivitel, elvileg sok hibajavítással.)


host


a hõmérõket (ekkorka kis vackok) a fentebb linkelt útmutató alapján lehet összekötni, ahogy írva van ezekhez elegendõ két ér. óva intenék azonban attól, hogy valaki ne készítsen be egy lehetõleg testesebb (szvsz 0,5-1mm2) harmadik eret. késõbb lesznek még eszközeink.

a leírástól eltérõen nem digitemp lesz, mert az owfs fényévekkel jobb. gyorsan összetesszük ubuntu 10.04 alatt (bár lehet, hogy valamiért frisebb kellett végül):

apt-get install owfs
nano /etc/owfs.conf

ide lehet aliasokat képezni (majd késõbb látni fogjuk minden hõmérõ meg egyéb 1w eszköz egyedi rendszámát):

10.1E39AB010800 = 00_panel
10.415EAB010800 = 00_padlas
10.543AAB010800 = 00_fogyasztas
10.B950AB010800 = 00_szonda
10.FE4AAB010800 = 00_szoba
20.088108000000 = 00_volt


a "fogyasztas" ne zavarjon senkit, ahogy az elsõ két számból (eszközosztály) is látszik az egy hõmérõ. ez a hõmérõ viszont egy ideig rá volt szorítva egy olvadóbiztosítékra, amivel így egész tűrhetõen lehetett legalább áramot (a tobbé-kevésbé állandó dc 12v-on ez ~fogyasztás) mérni. ezen a grafikonon elég jól látszik. a felsõ, fekete buckás vonal nem óriáskígyó több elnyelt elefánttal, hanem a biztosíték hõmérséklete a lámpafelkapcsolás, videózás ésatöbbi fogyasztás függvényében. persze lesz rendes fogyasztásmérés is, de a híd messze.

térjünk vissza a jelenbe, van egy usb-s kütyünk, és egy szétbarmolt kínai aluméneum cat5 kábelen egy bekötött hõmérõnk. owfs telepítve, ubuntun udev-ben esetleg az adott eszköz a júzernek engedélyezve, és mehet a buli:

/usr/bin/owfs -a /etc/owfs.conf -d /dev/ttyUSB0 /mnt/1wire

nem fogok szájbarágni, könytárakat meg /dev/ azonosítókat mindenki kaparja össze. ha ezzel megvagyunk, akkor

lapa@inox:~$ ls -al /mnt/sensor
total 4
drwxr-xr-x 1 root root    8 2013-02-16 18:30 .
drwxr-xr-x 4 root root 4096 2012-11-19 11:24 ..
drwxrwxrwx 1 root root    8 2013-02-16 18:31 10.1E39AB010800
drwxrwxrwx 1 root root    8 2013-02-16 18:31 10.415EAB010800
drwxrwxrwx 1 root root    8 2013-02-16 18:31 10.543AAB010800
drwxrwxrwx 1 root root    8 2013-02-16 18:31 10.B950AB010800
drwxrwxrwx 1 root root    8 2013-02-16 18:31 10.FE4AAB010800
drwxr-xr-x 1 root root    8 2013-02-16 18:30 alarm
drwxr-xr-x 1 root root    8 2013-02-16 18:30 bus.0
drwxr-xr-x 1 root root    8 2013-02-16 18:30 settings
drwxrwxrwx 1 root root    8 2013-02-16 18:31 simultaneous
drwxr-xr-x 1 root root    8 2013-02-16 18:30 statistics
drwxr-xr-x 1 root root   32 2013-02-16 18:30 structure
drwxr-xr-x 1 root root    8 2013-02-16 18:30 system
drwxr-xr-x 1 root root    8 2013-02-16 18:30 uncached
lapa@inox:~$

ó, milyen szép. az one wire file system csinált egy fájlrencört. ide nagyjából 10 mp-ként (vagy 'uncached'-et használva asszem lekérdezésenként) megérkeznek az adatok:

lapa@inox:~$ cat /mnt/sensor/10.1E39AB010800/temperature
      -0.125
lapa@inox:~$

szóval majd ha fagy. remélem ez nem a benti hõfok. nem érdemes gyakrabban kérdezõsködni, mert idõbe telik, mire az összes hõmérõ visszaküldi az adatot. hozzáteszem ha nekem most be lennének állítva az aliasok, akkor itt már beszélõ nevek lennének. a hõmérõk amúgy 0.16 celsius pontosságúak, ez bõven elegendõ. lehet owfs-sel mindenféle vicces dolgot csinálni, például adatbázist meg webklikkolóst. mivel én túl egyszerű ember vagyok, nekem ilyet ne akarjon az owfs. ehelyett én beleírom egy ram fájlba az értékeket, aztán hdd-kímélés gyanánt fél óránként kiírom lemezre.

hogy ez a vérkezdõ hozzáállás még bizarabb legyen, nem daemonként fut az adatgyűjtés, hanem tray ikonba lemenõs-autorunos rettenetként. működik, és van jobb dolgom is, mint ezt csiszolgatni. szóval ubuntuban startup applicationban:

alltray "gnome-terminal -e /home/lapa/.desktop/sensor"

a sensor nevű fájl pedig:

#!/bin/bash

trap bashtrap INT

bashtrap()
{
 cat /tmp/sensor >> /media/valami/sensor
 rm /tmp/sensor
 fusermount -u /mnt/sensor
 exit 0
}

/opt/owfs/bin/owfs --link=/dev/ttyUSB0 -u /mnt/sensor/

while [ 1 -eq 1 ]
do
 trap bashtrap INT
 touch /tmp/sensor

 most=`date +%s`
 lejar=`date --date='3580 second' +%s`

 while [ $most -le $lejar ]
 do
  trap bashtrap INT
  most=`date +%s`
  miko=`date +"%Y.%m.%d %H:%M:%S"`
  mit=`cat /mnt/sensor/10.*/temperature`

  echo $miko$mit >> /tmp/sensor
  sleep 15
 done

 cat /tmp/sensor >> /media/valami/sensor
 rm /tmp/sensor
done


ezt végülis Jester01 és bambano lelkes shelltopik-jedik írták. mivel nekem a tmp ramdrive, ide írogat egy fájlba, aztán ami ebben van, azt félóránként vagy bármilyen leálláskor hozzáfűzi a korábbi, lemezen lévõ fájhoz. nagyjából így néz ki a belseje:

lapa@inox:~$ tail /tmp/sensor
2013.02.16 18:54:18 -0.5625 14.625 20.9375 8.3125 20
2013.02.16 18:54:39 -0.5625 14.625 20.9375 8.3125 20
2013.02.16 18:55:01 -0.5625 14.625 20.9375 8.3125 20
2013.02.16 18:55:22 -0.625 14.625 20.9375 8.3125 20.0625
2013.02.16 18:55:43 -0.625 14.625 20.9375 8.3125 20
lapa@inox:~$

oké, de jó lenne az adatokat valahogy megjeleníteni. itt persze vannak mindenféle csillivilli-prifiprofi grafikálóappok, én maradtam egyelõre a faék gnuplotnál. mondjuk az utolsó pár nap megnézése:

#!/usr/bin/gnuplot

set xlabel "time"
#set key below left
 set key default

set xdata time
set line style 1 lt 1 lw 1
set line style 2 lt 2 lw 1
set line style 3 lt 3 lw 1
set line style 4 lt 4 lw 1
set line style 5 lt 5 lw 1
set line style 6 lt 6 lw 2
set line style 7 lt 7 lw 2
set line style 8 lt 8 lw 2
set line style 9 lt 9 lw 2
set line style 10 lt 10 lw 2
set timefmt "%Y.%m.%d %H:%M:%S"
set format x "%Y.%m.%d %H:%M"
set yrange [-20:70]
set ytics 0,10,100
set ylabel "temp"
set tics rotate by 90
set grid
set output "/tmp/x.png"
set autoscale
plot "< tail -60000 /media/valami/sensor" using 1:3 title "panel" with line ls 1,
"< tail -60000 /media/valami/sensor" using 1:4 title "talajbe" with line ls 2,
"< tail -60000 /media/valami/sensor" using 1:5 title "fogy" with line ls 3,
"< tail -60000 /media/valami/sensor" using 1:6 title "padlas" with line ls 4,
"< tail -60000 /media/valami/sensor" using 1:7 title "nappali" with line ls 5

pause -1 "Nyomj entert!"

ennek eredményeként kapunk egy ilyet:


gnup_k.jpg


ahol a csíkok úgy keletkeztek, hogy kicsinylapa vs usb hub 1:0. csak széthúzta, mert kábelbuzi a csöppem. kitõl örökölhette vajon. itt még el lehet csámcsogni az adatokon, hogy iccakka még a legeslegnagyobb hidegben (a tavalyi -16.8 fokban) sem hűl le annyira a lakás, hogy a fűtés bekapcsoljon (világoskék). meghogy a földbe leásott rendkívül bonyolult műanyagcsövön sose jön be mínuszos levegõ (zöld). a letörések itt azt jelzik mikor indítottam be a szellõzést. természetesen nyáron is sokat jelent az állandó 7 fok 2 méter mélyben, nem izzad az ember annyira, mint mikor ki kell ásni a csõnek a gödröt. a 'panel' (piros) a napelem hátuljára ragasztott szonda, itt az odakinti napsütötte fekete felület értékei olvashatók, amibõl korábban elnagyolt termelési adatokat integráltam. persze ahhoz van offline sdkártyára mentegetõs megoldás a töltésvezérlõn, de nem az igazi úgy, meg fogyasztást nem is logol, csak termelést.

de majd most, mert ma - ha a jövõ nem is kezdõdött el - a múlt elmúlt. a múlt nagyon-nagyon sötét és vérzivatarokkal tarkított volt. mert hiába van relatíve egyszerű váltóáramú árammérõ, 20-30 amper környékére alkalmas 12v dc árammérõ az sehol. aztán kiderült, hogy nem vagyunk hall-hatatlanok. hogy ez a hall ez most valami vagy megy valahová, azt nem tudom. mindenesetre kiderült, hogy ez mérhetõ és elérhetõ közelségben van, de mégsem olyan közel, hogy galvanikusan összedörgölõzzenek a nagyárammal.

brilliáns, mondhatnánk. minimálfogyasztás, minimálméret, csak rá kell húzni a vezetékre, és egyszerű feszültségváltozást kapunk az átfolyó áram függvényében. ráadásul oda-vissza polaritáshelyesen, amivel így akksi töltés-kisütés kombóját is tudja mérni. hol a csavar? a csavar ott van, hogy a rézvezetékek nagyon hatékonyak, a hall-szenzor alig csinál némi feszkót. ezek a 80 amperesek például 23mv / ampert (pontosan offszetet, a nyugalmi feszültséghez képest). ehhez túrtam a neten egy voltmérõ chipet, név szerint a ds2438-at.


DSC09962_k.jpg


bár ennek a felbontása nagyjából 1 amperenként (azaz 12v révén 12w-onként) tudná kezelni a hall kimenetét, ezt a kütyüt nekem sose sikerült életre keltenem. próbáltam így, próbáltam úgy, összevissza és másképp, elektronikához nem értõként esélytelen voltam. kértem segítséget több helyrõl, hónapokon keresztül újra meg újra nekiálltam és törtem lábat, kötöttem vezetéket, mértem multiméterrel, semmi. valami elektronyos kütyüre lett volna igénye, de nem sikerült kideríteni mire. pedig tényleg harcoltam vele, csak fegyverem volt kevés.


DSC08149_k.jpg


aztán feladtam, és vettem egy ilyet. azaz csak majdnem, mert vagy én nyomtam rosszat lányos zavaromban, vagy pedig õk küldtek valami nem jót. ezzel megint ment a harc, kezdõdõen a vezetékek színeinek visszafejtésével, a betápon át a megfelelõ tesztkészülékig (ez a jansjö lámpesz akar lenni).



DSC01089_k.jpg


nagy küzdelmek árán ezt sikerült bebikázni, de mindig hülyeséget mutatott. a névleges 2,5v nyugalmi fesz helyett ez 1,8v-ot mutogatott folyton. no ezzel is legóztam egy darabig, aztán pár nap alatt végül rájöttem, hogy ez nem feszmérõ, hanem árammérõ kütyü. oké, itt már fapofával rendeltem meg a jó szenzort, ami - bár pár ellenállás híján ugyanúgy néz ki kívül-belül - azért a három fülhallgató-vezeték színe feszt totál más. ezt is szétszed, összeszínkódol, összerak. végül ma este hagytam az ikeás lámpeszt is, és elõkaptam a kabala kult legotrafót meg a klasszik 4,5v fekete mocit. az talán azért érdekes, mert mostanra elbizonytalanodtam, hogy a lámpesz dc-e. de szerintem az, csak még mindig nem elég áram folyt át rajta, hogy értékelhetõ eredményt adjon.


DSC01615_k.jpg


és lõn eljövé az igazság. bár a kép katasztrofális, nagyítva látható, ahogy a gnuplot grafikonja végre felkúszik, mikor elindítom a kis drágát. gyorsan hozzáteszem, a törés amiatt van benne, hogy elengedtem a kereket és nem volt terhelés. a grafikon amúgy nem real-time, csak a látvány kedvéért hagytam tovább pörögni a mocit. itt tartok most, megírtam mert gyõztem. a beszerelés után lesz valami update-poszt, hiszen itt még reléket kéne kapcsolni a feszültségtõl függõen. addig is ne feledjétek, hogy a 12v-nak elégnek kell lennie.