Ha már amúgy is van OpenWrt-t futtató eszköz a lakásban, gondoltam miért ne használhatnám útválasztáson kívül másra is, ezért belevágtam a projektbe.
Szükséges eszközök:
- OpenWrt-t futtató router
- cp210x USB-UART Bridge
- DS18b20
- Működő Domoticz szerver
A Szenzor bekötése:
Csatalakozzunk SSH-n a routerünkre, majd telepítsük a cp210x-hez szükséges kernelmodult
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-serial-cp210x
Ha sikerrel jártunk csatlakoztassuk az eszközt majd ellenőrizzük.
root@OpenWrt:~# dmesg
[ 306.200000] usb 1-1: new full-speed USB device number 2 using ehci-platform
[ 306.360000] cp210x 1-1:1.0: cp210x converter detected
[ 306.360000] usb 1-1: cp210x converter now attached to ttyUSB0
Ilyesmit kell, hogy lássunk, az eszköz most már elérhető /dev/ttyUSB0 helyen. Szükségünk lesz a digitemp nevű programra ami az egyvezetékes hőmérőszenzort fogja olvasni a soros porton keresztül.
root@OpenWrt:~# opkg install digitemp
Ha nem találja a csomagot az opkg... (nálam Tplink mr3220 és 15.05.1 verzió alatt nem találta... (ne használjatok ilyen ócska routert :)) )
root@OpenWrt:~# opkg install
http://archive.openwrt.org/attitude_adjustment/12.09/ar71xx/
generic/packages/digitemp_3.6.05_ar71xx.ipk
Hozzuk létre a könyvtárat ahol a script fog lakni.
root@OpenWrt:~# mkdir /overlay/digitemp
root@OpenWrt:~# cd /overlay/digitemp
Majd inicializáljuk a digitempet.
root@OpenWrt:/overlay/digitemp# digitemp_DS9097 -i -s /dev/ttyUSB0
Turning off all DS2409 Couplers
.
Searching the 1-Wire LAN
28FF750059160425 : DS18B20 Temperature Sensor
ROM #0 : 28FF750059160425
Wrote .digitemprc
Ha ilyesmit látunk akkor jól dolgoztunk. A létrejött .digitemprc file tartalmazza a konfigurációs beállításokat, amiben a LOG_FOMAT kezdetű sort át kell írni.
root@OpenWrt:/overlay/digitemp# vi .digitemprc
LOG_FORMAT "%.1C"
Ebben az esetben a program csak a Celsius fokot fogja kiírni mégpedig egy tizedesjegy pontossággal, amit teszteljünk is le.
root@OpenWrt:/overlay/digitemp# digitemp_DS9097 -t 0 -q
24.8
root@OpenWrt:/overlay/digitemp#
Szükség lesz egy MQTT kliensre.
root@OpenWrt:/overlay/digitemp# opkg install opkg install mosquitto-client-nossl
Miután létrehoztuk a domoticzban az eszközt ami fogadni fogja az adatokat tegyünk egy próbát.(x.x.x.x helyére az mqtt szerver címe, idx: xy helyére meg értelem szerűen az eszköz azonosítója)
root@OpenWrt:/overlay/digitemp# mosquitto_pub -h x.x.x.x -t "domoticz/in" -m '{"idx": xy, "nvalue": 0.00, "svalue": "29.0"}'
Ennek hatására a Domoticz-ban lévő eszköz felveszi a 29-es értéket.
Hozzuk létre a működtető szkriptet.
root@OpenWrt:/overlay/digitemp# touch hofokmeres.sh
root@OpenWrt:/overlay/digitemp# vi hofokmeres.sh
#!/bin/sh
hofok=$(digitemp_DS9097 -t 0 -q -c /overlay/digitemp/.digitemprc)
mosquitto_pub -h x.x.x.x -t "domoticz/in" -m '{"idx":10, "nvalue": 0.00, "svalue": "'$hofok'"}'
chmod 777 hofokmeres.sh
Majd ütemezzük be crontabba, 5-perctől eltérő időzítés esetén segítségünkre lehet a Crontab Generator.
root@OpenWrt:/overlay/digitemp# crontab -e
*/5 * * * * /overlay/digitemp/hofokmeres.sh >/dev/null 2>&1
root@OpenWrt:/overlay/digitemp# /etc/init.d/cron start
root@OpenWrt:/overlay/digitemp# /etc/init.d/cron enable
Hasonló logika mentén más platformon is használható a megoldás, így például plusz eszköz nélkül mérhetjük egy szerverszoba hőmérsékletét.
Update by eNeS:
- Az RPIEasy mostantól támogatja a fenti módon a DS18B20 használatát, bármely Debian/Ubuntu/Raspbiant futtatni képes, USB csatlakozóval rendelkező gépen.
Hasonló eszköz:
A bejegyzés trackback címe:
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.