Kom igång med 1-wire loggning på din Dockstar med hjälp av RRDTool

Från Temperatur.nu
Hoppa till navigeringHoppa till sök

Brasklapp[redigera]

Jag vill börja med att säga att jag inte har någon som helst erfarenhet av varken Linux eller 1-wire tidigare, men genom att följa dessa guider, lite googlande och stor hjälp från personer på forumet lyckades jag iallafall få igång loggandet på min Segate Dockstar.

* http://1wire.zoff.cc/2010/08/26/1
* http://www.cs.cmu.edu/~ecc/dockstar-howto.html
* http://wiki.temperatur.nu/index.php/RRDtool_HowTo

Om det kan vara till hjälp för någon som hade tänkt sig göra samma sak har jag försökt att sammanfatta mina steg här. Men då jag som sagt inte är någon Linuxexpert och det finns risk att man förstör sin Dockstar kan det vara värt att iaktta viss försiktighet.

Bakgrund[redigera]

En Segate Dockstar är ett trevligt alternativ som en billig 1-wire burk om man inte vill ha en dator igång 24/7. Dels är den relativt billig och drar endast ca 5w i drift, att den sedan kan användas till en del andra saker är ju bara ett plus.

Förutsättningar[redigera]

Hårdvara:

* 3st öl (förslagsvis Samuel Adams Boston Ale)
* Seagate Dockstar (som ej varit uppkopplad mot nätet tidigare)
* USB-minne (NTFS eller FAT32 formaterad)
* Router med DHCP-server (Utan uppkoppling mot internet) 
* Nätverkskabel
* Papper och penna
* Kapsylöppnare
* Och sist men inte minst en dator

Mjukvara:

* Putty 
* Total Commander
* dockstar-roofs
* dockstar-ulmage 
* blparam

Förberedelser[redigera]

Ladda ner dessa tre filer och lägg dem direkt på USB-minnet utan att skapa någon mapp. OBS Se till så att dessa filer ej sparas som txt filer om du använder Windows. Använd ex Total Commander om du måste döpa om dem.

* dockstar-roofs
* dockstar-ulmage
* blparam

Koppla ur internetkabeln från routern så att den tappar anslutningen mot internet. (Vi vill inte att ”dockan” ska börja med att ”ringa hem” och uppdatera firmware vilket gör det svårt att ansluta via ssh vilket den gör första gången den ansluts till internet). Anslut USB stickan och din 1-wire utrustning till dockan. Anslut både dockan och datorn till routern. Anslut strömmen till ”dockan” och vänta tills den bootar upp. För att ta reda på dockan:s IP-nummer kan du förslagsvis logga in på din router och se vilka anslutna enheter som finns. (Det bör väll vara något på 192.168….. antar jag). Använd pennan för att skriva ner IP-numret på papperet.

Än så länge har du inte gjort något med dockan så det kan vara läge att ta en öl (använd kapsylöppnaren) och läsa igenom guiden i lugn och ro en gång innan du fortsätter. Risken finns nämligen att du brickar dockan om du forstätter.

Flashning[redigera]

Använd exempelvis Putty för att ansluta dig med ssh till dockan.

User: root
Password: stxadmin

Kör dessa kommandon:

killall -9 hbwd
killall -9 hbplug
mount /dev/sda1 /mnt
cd /mnt
./blparam mainlineLinux=yes
./blparam arcNumber=2097
cat /proc/mtd
# Kontrollera så att detta stämmer
# mtd1 -> uImage
# mtd2 -> root
# mtd3 -> data
#
# Om det inte stämmer så avsluta här!
flash_eraseall /dev/mtd1
nandwrite /dev/mtd1 dockstar-uImage
flash_eraseall /dev/mtd2
nandwrite /dev/mtd2 dockstar-rootfs
flash_eraseall /dev/mtd3 # Detta kommer eventuellt att ge ett felmeddelande med det är OK

Dra ur strömkabeln ur dockan och plugga in den igen efter några sekunder. Vänta ca 2 minuter så att dockan bootar up

Använd Putty igen för att ansluta, men denna gång ska du använda TELNET istället för ssh

User: root
Password: (obs inget lösenord!)

Lägg till ett lösenord genom att köra:

passwd

Använd återigen pennan för att skriva ner lösenordet på papperet.

Observera att detta inaktiverar telnetservern och när du hädanefter ska ansluta dig till dockan ska du använda dig av SSH igen med följande User och Password

User: root
Password: (det du angav ovan och skrev ner på papperet)
 

Logga in på webgränsnittet genom att skriva dockans IP-nummer i webbläsarens adressfönster:

User: root
Password: (det du angav ovan och skrev ner på papperet)

Konfigurera tidszonen och hostname för dockan

Anslut internetkabeln till router

Använd Putty för att logga in på dockan med SSH

User: root
Password: (det du angav ovan och skrev ner på papperet)

Kör dessa kommandon:

echo "# src/gz snapshots http://XXdownloads.openwrt.org/snapshots/trunk/kirkwood/packages
src/gz snapshots  http://mirror.downloads.openwrt.org.work.zoff.cc/snapshots/trunk/kirkwood/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay" > /etc/opkg.conf
// (alla dessa behövs ej, men det skadar väll inte antar jag)
opkg update 
opkg install wget
opkg install mc
opkg install htop
opkg install nano
opkg install bash
opkg install vim
opkg install bc
opkg install --force-overwrite binutils
opkg install coreutils-nohup
opkg install file
opkg install ifstat iftop iperf
opkg install lsof microcom minicom
opkg install net-tools-arp net-tools-domainname
opkg install net-tools-hostname net-tools-ifconfig net-tools-netstat
opkg install mount.ntfs-3g ntfs-3g ntfs-3g-utils ntfsprogs ntp-utils
opkg install screen strace sysfsutils
opkg install sysstat zoneinfo-core zoneinfo-europe
opkg install psmisc
opkg install --force-overwrite procps
opkg install luci-app-ntpc
wget -O /etc/init.d/luci_fixtime http://work.zoff.cc/dockstar/luci_fixtime
wget -O /tmp/xx http://work.zoff.cc/dockstar/crontab_zoff
crontab /tmp/xx
rm /tmp/xx

Installation av OWFS (OneWireFileSystem)[redigera]

Kör dessa kommandon:

opkg install owfs
wget -O /lib/modules/2.6.30.10/fuse.ko http://work.zoff.cc/dockstar/modules/2.6.30.10/fuse.ko

Boota dockan och kör sedan:

insmod /lib/modules/2.6.30.10/fuse.ko

Får du ett felmeddelande kan du köra:

insmod fuse

Och verifiera med

lsmod

Skapa katalogen för OWFS att mount'a i

mkdir /mnt/1wire

Prova att mounta OWFS genom att köra:

/usr/bin/owfs -u /mnt/1wire

Byt ut -u (USB) mot -d /dev/ttyS0 för att använda en seriell adapter istället. För att använda HA7net så använd istället --ha7net=xxx.xxx.xxx.xxx (ip nummer eller domän).

Prova om du får någon tempangivelse (förutsatt att du har någon temperatursensor ansluten)

grep . /mnt/1wire/10.*/temperature

Se till så att OWFS startar automatiskt vid boot

nano /etc/rc.local

Lägg till

owfs -u /mnt/1wire 
ovanför raden med Exit 0

Spara genom att trycka Ctrl-X , Bekräfta med Y och Enter

Om allt fungerar kan du fira med en öl och samla krafterna inför RRDTool installationen.

Installation av RRDTool[redigera]

Logga in på dockan med ssh exempelvis med Putty

Skapa en katalog med förslagsvis ditt namn genom att skriva,

mkdir /root/DITTNAMNHÄR

Den här sökvägen kommer att användas längre fram vid ett flertal tillfällen. Om du vill kan du därför skriva ner den om du har plats kvar på papperet.

För installationen av paketen kan du antingen använda OpenWrt:s webgränsnitt genom att skriva in dockans IP-nummer i adressfönster på din webbläsare och sedan klicka på ”Administration” uppe till höger och sedan ”Software” i menyn ”System”. Alternativt kan du göra som jag och sköta allt med hjälp av Putty och ssh.

OBS! Den senaste versionen av RRDTool till OpenWrt version 1.2.30-1 fungerade inte för mig. Det genererade felmeddelandet “rrdtool: can't resolve symbol 'posix_fadvise'”. Därför använde jag den äldre versionen 1.0.50-1 benämnd rrdtool1. Jag lyckades inte att få perlscripten (mer om det senare) att fungera så jag hoppar över perl paketen här. Att jag inte lyckades kan med stor sannolikhet bero på mina bristande kunskaper i ämnet, så det är fritt fram att prova för den som vill. Paketen hittar du antingen genom att söka via dockans webbgränsnitt eller via promten Paketen hittar du här

Kör dessa kommandon:

opkg update
opkg install rrdtool1  # glöm inte 1:an
opkg install rrdcgi
opkg install rrdcollect
opkg install librrd1
opkg install collect-mod-rrdtool 
opkg install apache

Sedan ska det bara vara att hoppa in i guiden på steget där katalogerna skapas

RRDtool HowTo ,men lova att komma tillbaka hit när det är dags för perlscriptet.

  • Om du får problem att köra scripten så kan du prova att lägga till ” ./” framför ex.
./create_rrd.sh 

När det var dags för perlscriptet fick jag ett felmeddelande jag skippade därför perl och avände ett shellscrip som lage på forumet gjort istället. Jag gjorde några små ändringar och döpte det till create_graph.sh. Glöm inte att ändra sökvägen på rad 8!

Kör detta för öppna nano och skapa filen:

nano /root/xxxxxx/bin/create_graph.sh 

Kopiera detta och högerklicka i putty fönstret för att klistra in det:

#!/bin/bash
rrdtool graph /www/ute_24h.png \
--start -1d \
--title "Utetemp det senaste dygnet" \
--width 550 \
--height 400 \
--vertical-label °C \
DEF:UteTemp=/root/XXXXX/rrddata/outside_temp.rrd:outsidetemp:AVERAGE \  
COMMENT:"          ""Nu      Medel   Max     Min"\\n \
HRULE:0#0000FF \
LINE1:UteTemp#0000FF:Ute\   \
GPRINT:UteTemp:LAST:%6.1lf \
GPRINT:UteTemp:AVERAGE:%6.1lf \
GPRINT:UteTemp:MAX:%6.1lf \
GPRINT:UteTemp:MIN:%6.1lf\\n \

Spara genom att trycka Ctrl-X , Bekräfta med Y och sedan Enter För att köra scripten med automatik var 5 minut så ska vi lägga in dem i crontab genom att köra:

crontab –e

och lägg till

*/5 * * * *   /root/xxxxx/bin/get_temp.sh
*/5 * * * *   /root/xxxxx/bin/create_graph.sh

För att spara dina ändringar trycker du ESC, : , wq, Enter (Escape, kolon, wq, Enter) Kontrollera att dina ändringar sparas genom att skriva

crontab –l

Om allt fungerar som det ska det bara vara att skriva dockan:s IP-nummer följt av /ute_24.png i webbläsaren (ex 192.168.1.139/ute_24.png)

Om du nu får fram en graf så har du lyckats och gjort dig förtjänt av den sista ölen, skål!

Källor[redigera]