Jag vill få koll på lite temperaturer på värmesystemet i Sundhult. För att göra det använder jag ett 1-wirenät från Dallas Semiconductor kopplat till en Raspberry Pi. Här följer en beskrivning av hur jag gjort för att komma igång.
Här finns en film som beskriver installationen. Längre ner på sidan finns en film som visar Raspberry Pi lite närmare, samt en film i två delar som visare lite mer vad 1-wire är för något.
Jag har också en beskrivning av hur jag byggt 1-wirenätet hemma på gården.
Hur kommer jag igång med Raspberry Pi och 1-wire?
Länklista:
- Raspberry Pi är köpt på www.m.nu, som också har minneskort, USB-wifi donglar, minneskort 1-wireprylar, nätdelar osv
- Ladda ner Raspbian från ww.raspberrypi.org
- Ladda in filen på ett SD-kort med hjälp av guiden på wikin. Se till att den är formaterad med FAT32.
- Sätt i SD-kort i Raspberry
- Anslut HDMI-kabel, mus och tangentbord
- Username är pi och lösenord är raspberry
- För att starta fönsterhanteraren (desktop) skriv startx på kommandoraden
- Installera OWFS enligt guiden på wikin hos temperatur.nu
- Skall du köra en USB-wifi istället för direkt kabel använd Wifi Config som finns i fönsterhanteraren.
Eftersom jag har en tunn klient som ”huvudservern” ser jag till att kopiera över temperaturerna med hjälp av scp (secure copy) som gör en kopiering av filen genom en ssh-tunnel. För att få det att fungera i ett shell-script sätter man upp krypteringsnycklar på följande vis:
På datorn som filerna skall kopieras till:
ssh-keygen
Följt av
ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER_ON_REMOTE@REMOTE_SERVER
Nu skall du från datorn som filerna skall kopieras till skriva:
ssh USER_ON_REMOTE_SERVER@REMOTE_SERVER
och då automatiskt bli inloggad.
I mitt fall är REMOTE_SERVER min Raspberry Pi och USER_ON_REMOTE en användare som har rätt att läsa OWFS-filerna för att kunna kopiera temperatur till min ”huvudserver”, där sedan det lagras i databas och skickas till 1-wiredisplay exempelvis.
Kopierar filen gör jag med:
sudo scp -r -i /home/USER/.ssh/id_rsa USER_ON_REMOTE@REMOTE_SERVER:/mnt/1wire/28.* /DESTINATION
för att kopiera data från en DS1820. Den raden sparar jag i ett shell-script (copyFromREMOTE_SERVER.sh) och ser till att filen är exekverbar.
sudo chmod +x copyFromREMOTE_SERVER.sh
Sedan lägger jag in ett cron-jobb som cyklist kopierar temperaturen.
sudo crontab -e
Och där lägger jag in:
*/5 * * * * /home/USER/copyFromREMOTE_SERVER.sh
för att kopiera data var femte minut.