2019. júl 29.

Hőmérsékletmérés OpenWrt segítségével

írta: JannChee
Hőmérsékletmérés OpenWrt segítségével

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:

img_27072019_101217.jpg

A Szenzor bekötése:

dsuart.jpg

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:

 

Szólj hozzá

linux wifi csináld magad lan hőmérséklet router szkript szenzor okosház openwrt DIY okosotthon do-it-yourself