Takže jsem na něj obratem nahrál OpenWRT. Jedná se o standardní linuxovou distribuci, upravenou pro různá jednoúčelová zařízení a portovanou na různé routery a zařízení. Kompletní seznam je k dispozici na stránkách projektu OpenWRT.
Výhodou OpenWRT je i možnost jednoduché instalace různých balíčků pro využití standartních LINUXových programů (bind, OpenVPN a mnoho dalších), ale i USB včetně FlashDisků, tiskáren a mnoha dalších zařízení.
Rovněž mi z dob mého bastlení zbylo pár elektronických součástek, mezi nimi i několik 1-Wire teploměrů DS18B20 z produkce Dallas/Maxim a dále USB/1-Wire adapter DS9490R. No a jelikož má ASUS dva USB porty, tak zprovoznění webového online teploměru nic nebránilo.
Instalace USB a 1-Wire
Aby bylo možno k 1-Wire teploměrům prostřednictvím USB adaptéru přistupovat a číst teploty, je nutno na ASUS doinstalovat balíčky pro základní podporu USB a OWFS což je soustava programů pro komunikaci a přístup k 1-Wire sběrnici pod linuxem.
opkg update
opkg install kmod-usb-core kmod-usb2 kmod-usb-storage kmod-usb-uhci kmod-usb-ohci usbutils owfs owhttpd nano
Následně připojit adaptér DS9490R, který by pak měl být v systému viditelný
dmesg
...
hub.c: new USB device 00:03.1-1.1, assigned address 5
usb.c: USB device 5 (vend/prod 0x4fa/0x2490) is not claimed by any active driver.
...
Nebo prostřednictvím výpisu USB sběrnice a zařízení
lsusb
...
Bus 001 Device 005: ID 04fa:2490 Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire adapter
...
Čtení a zobrazení teplot
Nyní stačí spustit některý z programů z balíčku OWFS. Moje volba padla na webserver owhttpd.
owhttpd -p 3000 -uall -C -f fic
Aby 1-Wire webserver startoval i automaticky po rebootu routeru, zadáme jej do initscritpu. Nejjednodušeji do /etc/rc.local
nano /etc/rc.local
owhttpd -p 3000 -uall -C -f fic
Rovněž je vhodné restartovat owhttpd server při každém připojení USB/1-Wire adaptéru
nano /etc/hotplug.d/usb/20-owhttpd
#!/bin/sh
if [ "$PRODUCT" = "4fa/2490/2" ]
then
case "$ACTION" in
add)
echo "`date`: DS9490 added" >> /tmp/ds
killall -SIGHUP owhttpd
;;
remove)
echo "`date`: DS9490 removed" >> /tmp/ds
;;
esac
fi
Kde hodnota proměnné $PRODUCT je idVendor/idProduct/bcdDevice které zjistíme pomocí příkazu lsusb -v
lsusb -v
...
Bus 001 Device 005: ID 04fa:2490 Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire adapter
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 8
idVendor 0x04fa Dallas Semiconductor
idProduct 0x2490 DS1490F 2-in-1 Fob, 1-Wire adapter
bcdDevice 0.02
...
Nyní stačí v browseru zadat URL routeru ... http://LAN_IP_routeru:3000 a je možno procházet 1-Wire sběrnici a číst hodnoty nebo nastavovat parametry jednotlivých připojených zařízení.
V tomto okamžiku je 1-Wire sběrnice připojená přes USB adaprér k ASUSu přístupná přes protokol HTTP. Na sběrnici jsou připojeny dva teploměry DS18B20, jeden je umístěn venku za oknem, druhý v místnosti.
V příštím článku blogu si ukážeme jak vzdáleně číst teploty z teploměrů připojených k domácímu routeru, ukládat data do RRD databáze a vytvářet grafy. Ty pak publikujeme na webu.