Router oparty o OpenWrt posiada wiele możliwości, jedną z nich jest wykorzystanie GPIO do podłączenia czujników temperatury,wilgotności czy ciśnienia.
Niektóre routery takich firm jak np. GL-iNeT, Turris czy większość mikrokomputerów posiadają złącze wejścia-wyjścia które to umożliwia na podłączenia zewnętrznych peryferii. Dlatego dzięki Domoticzowi można zamienić domowy router w serwis pogodowy dla naszego domu czy mieszkania. Proces konfiguracji takiej platformy omówiłem w poście Domoticz: Konfiguracja w OpenWrt
Natomiast w przypadku kiedy router nie posiada takich portów można rozważyć małą modyfikacje. Wystarczy sprawdzić czy przypadkiem jakaś dioda lub guzik nie jest podłączona do GPIO. Co umożliwi na podłączenie czujników zamiast jednego z tych elementów. Jednakże nie jest to zalecane prze zemnie działanie, gdyż nieumiejętne wykonanie tej modyfikacji może doprowadzić do spalenia elementów znajdujących się na PCB.
1) Na pierwszy ogień idzie popularny DS18B20/DS18B20+
Termometr ten nie należy do najdokładniejszych lecz może świetnie się sprawować jako zewnętrzny termometr lub czujnik pomiarowy do pieca CO/bojlera.
Instalacja tego czujnika pod OpenWrt wygląda następująco:
opkg update opkg install kmod-w1 kmod-w1-master-gpio kmod-w1-gpio-custom opkg install kmod-w1-slave-therm
Następnie określamy GPIO do którego podłączyliśmy czujnik:
Gdy już wybraliśmy odpowiedni port wejścia-wyjścia w konsoli wpisujemy:
echo "w1-gpio-custom bus0=0,numer_portu,0" > /etc/modules.d/50-w1-gpio-custom
W miejsce numer_portu podajemy numer GPIO do którego podłączyliśmy „nóżkę danych” czujnika np. echo „w1-gpio-custom bus0=0,4,0” > /etc/modules.d/50-w1-gpio-custom
Wyłączamy urządzenie i podłączymy czujnik:
Przed podłączeniem sensora należy pamiętać o dodaniu rezystora 4.7k między „nóżkę” danych oraz zasilania!
poweroff
Uruchamiamy urządzenia i wykonujemy testowy odczyt:
cat /sys/bus/w1/drivers/w1_slave_driver/numer-seryjny_czujnika/w1_slave
Przykładowy wynik:
71 01 4b 46 7f ff 0c 10 03 : crc=03 YES 71 01 4b 46 7f ff 0c 10 03 t=23062
Gdzie t to temperatura.
Domoticz potrafi odczytać te dane i przekonwertować na np. stopnie Celsjusza, wystarczy dodać czujnik w zakładce sprzęt o typie 1-Wire (System). Po chwili powinien pojawić się automatycznie w zakładce urządzenia.
W przypadku problemów z zainicjalizowaniem czujnika należy usunąć zawartość wpisu:
OWFS Path:
Pozostawiając wpis pustym.
2) DHT11
Aktualnie w OpenWrt 18.06.1 (BRCM2708 – Raspberry Pi) występuje problem z odczytem danych z tego czujnika, prawdopodobnie jest to spowodowane straszą wersją kernela.
Instalacja wygląda standardowo:
opkg update opkg install kmod-iio-dht11 kmod-iio-core kmod-regmap
UWAGA: Poniższy punkt dotyczy tylko i wyłącznie Raspberry Pi!
vi /boot/config.txt
Na samym końcu dopisujemy:
dtoverlay=dht11,gpiopin=GPIO
Gdzie GPIO to numer portu wejścia-wyjścia do którego podłączyliśmy czujnik np.dtoverlay=dht11,gpiopin=4
Wyłączamy urządzenie i podłączamy sensor:
Przed podłączeniem sensora należy pamiętać o dodaniu rezystora 4.7k między „nóżkę” danych oraz zasilania!
poweroff
Przykładowy odczyt:
cat /sys/bus/iio/devices/iio\:device0/in_temp_input cat /sys/bus/iio/devices/iio\:device0/in_humidityrelative_input
Aktualnie występuje problem z odczytywaniem danych przez sterownik.