Projekt Wetterstation: Basisstation (Software)



Für die Ba­sis­sta­ti­on mei­ner Wet­t­er­sta­ti­on ha­be ich mir einen Raspber­ry Pi aus­ge­wähl­t. Zu­erst hat­te ich einen Pi B (nicht "+"), die­ser wur­de jetzt durch einen Pi Ze­ro er­setz­t. Da­bei muss­te ich das Sys­tem ak­tua­li­sie­ren und zei­ge dir gleich, wie ich den Pi (soll­te bei je­dem Pi sehr ähn­lich sein) ein­ge­rich­tet ha­be, da­mit al­les si­cher kon­fi­gu­riert ist und nichts Un­nö­ti­ges läuft.

Als Grund­sys­tem ha­be ich mich für Raspbi­an ent­schie­den. Das ba­siert auf De­bi­an Li­nux, ist recht sta­bil und weit ver­brei­tet. Das Image be­kommst du hier: Raspbi­an Jes­sie Li­te

Schlie­ße die Spei­cher­kar­te des Raspber­ry Pi (mit ei­nem Kar­ten­le­ser) an den PC an. Jetzt un­ter­schei­det sich der Weg zwi­schen Win­dows und Li­nux auf dei­nem PC:

Windows

Ent­pa­cke das Image und la­de es mit ei­nem Pro­gramm wie Ra­wri­te32 auf die Spei­cher­kar­te.

Ach­tung!

Vor­sicht, wenn du die falsche Fest­plat­te aus­wählst, ist das Win­dows weg! Al­le Da­ten auf der Spei­cher­kar­te ge­hen ver­lo­ren.

Das dau­ert ein paar Mi­nu­ten. Nimm da­nach die Spei­cher­kar­te aus dem PC. Die­sen Weg ha­be ich nicht pro­biert und weiß nicht, wie du das WLAN au­to­ma­tisch ak­ti­vie­ren kannst, falls du kei­nen Mo­ni­tor an den Pi an­schlie­ßen kannst.

Linux

# finde den Pfad zur Speicherkarte,
# sollte /dev/sdb oder ähnlich sein
find /dev -name sd\? -mmin -2

# zur Sicherheit prüfen, ob die Größe passt,
# Ergebnis vom obigen Befehl einsetzen
sudo fdisk -l SPEICHERKARTE

# Alternativ zu find+fdisk hiermit das richtige Gerät finden:
sudo fdisk -l | grep bytes
# Image entpacken
unzip 2016-03-18-raspbian-jessie-lite.zip
# und auf die Speicherkarte schreiben,
# wobei SPEICHERKARTE zum Beispiel durch /dev/sdb ersetzt werden muss
# dauert eine Minute
sudo dd if=2016-03-18-raspbian-jessie-lite.img of=SPEICHERKARTE
# Daten auch sicher auf die Speicherkarte schreiben
sync

Nimm nun die Spei­cher­kar­te aus dem Kar­ten­le­ser.

Datenpartition auf Größe der Speicherkarte erweitern

Mit ei­nem Par­ti­ti­ons­ma­na­ger wie GPar­ted kannst du nun noch den Da­ten­be­reich (2. Par­ti­tion, ex­t4-­Datei­sys­tem) ver­grö­ßern, da­mit die Spei­cher­kar­te voll­stän­dig ge­nutzt wer­den kann. Ste­cke die Spei­cher­kar­te wie­der an den PC an. Das vor­he­ri­ge ent­fer­nen und wie­der an­schlie­ßen ist hier wich­tig! Ru­fe nun gpar­ted oder einen an­de­ren Par­ti­ti­ons­ma­na­ger auf und wäh­le die Spei­cher­kar­te an­hand der Grö­ße aus. Bit­te sei vor­sich­tig, auch hier kannst du dein Win­dows/­Li­nux be­schä­di­gen, wenn du das Falsche aus­wählst und Än­de­run­gen vor­nimmst! Wäh­le nun die ex­t4-Par­ti­ti­on aus und ver­grö­ße­re sie nach hin­ten auf die ma­xi­mal ver­füg­ba­re Grö­ße. Da­nach soll­te dei­ne Spei­cher­kar­te (bei mir 16GB ge­sam­t) fol­gen­de Be­rei­che ent­hal­ten:

Partition Dateisystem Größe
- - 4MB
/dev/sdb1 fat32 60MB
/dev/sdb2 ext4 1GB → 15GB

WLAN-Einrichtung (Linux)

Falls du kei­nen Mo­ni­tor an den Raspber­ry Pi an­schließt, kannst du ihn nur per Netz­werk und SS­H/­Put­ty be­die­nen. WLAN muss da­für noch fer­tig ein­ge­rich­tet wer­den. Wenn du Mo­ni­tor und Tas­ta­tur an­schlie­ßen kannst, dann geht es für dich im nächs­ten Ka­pi­tel wei­ter.

Das Pass­wort fürs WLAN muss ein­ge­stellt wer­den und die Op­tion, dass sich der Pi selb­stän­dig ei­ne IP hol­t:

# /dev/sdb muss durch den Pfad zur Speicherkarte ersetzt werden.
sudo mount /dev/sdb2 /mnt

Nun muss mit root-Rech­ten in /m­nt/et­c/­net­work/in­ter­fa­ces das "sta­tic" in "d­h­cp" ge­än­dert wer­den:

[...]
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Die Da­tei /m­nt/et­c/wpa_­sup­pli­cant/wpa_­sup­pli­cant.­conf be­kommt fol­gen­den In­hal­t:

ctrl_interface=/var/run/wpa_supplicant

network={
    ssid="WLAN-NAME"
    key_mgmt=WPA-PSK
    proto=WPA2
    pairwise=CCMP
    group=CCMP
    psk="WLAN-PASSWORT"
}
# Zum Schluss noch die Karte vom System lösen:
sudo umount /mnt

Nun kann die Kar­te wie­der aus dem Kar­ten­le­ser ent­fernt wer­den.

erster Start

Jetzt kannst du die Spei­cher­kar­te in den Pi ste­cken und ihn star­ten. Wenn al­les ge­klappt hat, soll­te er nach ei­ner Mi­nu­te im Netz­werk auf­tau­chen. Da­für schaust du am bes­ten auf der Web­sei­te dei­nes Rou­ters nach. Wenn du nicht Bild­schirm und Tas­ta­tur am Pi an­ge­schlos­sen hast, ver­bin­de dich per SSH (Li­nux) oder Put­ty (Win­dows) mit dem Pi. Der Be­nut­zer­na­me ist pi und das Pass­wort raspber­ry. Falls du die Tas­ta­tur di­rekt am Pi hast, musst du als Pass­wort beim ers­ten Mal even­tu­ell raspber­rz nut­zen.

# Sprache und Tastatur einstellen:
# Bei Direktverbindung sind z und y vertauscht und das "-" ist beim Ziffernblock rechts oben
sudo dpkg-reconfigure locales
# de_DE.UTF-8 wählen mit Pfeiltasten und Leertaste, dann Enter, de_DE.UTF-8 auswählen mit Pfeiltasten und Enter (warten)
# danach am besten mit Putty bzw. SSH erneut einloggen, damit die Spracheinstellungen übernommen werden

# Zeitzone für Uhrzeit einstellen
sudo dpkg-reconfigure tzdata # Europa->Berlin (Pfeiltasten und Enter)

# Cache der Software-Pakete aktualisieren
sudo apt-get update

ap­t-­get in­stall vim su­do unat­ten­de­d-up­gra­des rsync bas­h-­com­ple­ti­on us­bu­tils lib­de­vi­ce-­se­ri­al­por­t-­perl git

vim /et­c/ap­t/ap­t.­con­f.d/50u­nat­ten­de­d-up­gra­des

AP­T::­Pe­ri­odic::Up­da­te-Packa­ge-­Lists "1"; AP­T::­Pe­ri­odic::­Dow­n­loa­d-Up­gra­dea­ble-Packa­ges "1"; AP­T::­Pe­ri­odic::­Au­to­clean­In­ter­val "1"; AP­T::­Pe­ri­odic::U­nat­ten­de­d-Up­gra­de "1"; U­nat­ten­de­d-Up­gra­de::­Au­to­ma­tic-Re­boot "true"; #­Kom­men­tar vor "o=Raspbian,a=­sta­ble"; ent­fer­nen <p­re class="­brus­h:s­hell">Pass­wort für root än­dern: pass­w­d</pre> u­seradd -m -G su­do -s /bin/­bash NEU­ER­NUT­ZER pass­wd NEU­ER­NUT­ZER # Pass­wort für den neu­en Nut­zer 2x ein­ge­ben

Lo­gin mit NEU­ER­NUT­ZER pro­bie­ren und wenn "su­do id == root" er­folg­reich, dann als root aus­log­gen

su­do vim /et­c/ss­h/ss­h­d_­con­fig ­Per­mitRoot­Lo­gin no

su­do ser­vice ssh re­st­art

vim .bashr­c ­for­ce_­co­lor_promp­t=yes # Zei­le 46

su­do useradd -m -G dia­lout -s /bin/­bash fhem ­su­do -u fhem -i w­get -O- htt­p://f­hem.­de/f­hem-5.6.tar.gz | tar zx ln -s fhem-* fhem cd fhem vim fhem.cf­g at­tr glo­bal al­titu­de 126 at­tr glo­bal la­ti­tu­de 51.00000 at­tr glo­bal lon­gi­tu­de 12.00000 at­tr glo­bal pid­fi­lena­me ./f­hem.pi­d #­de­fi­ne tel­net­Port tel­net 7072 glo­bal #­de­fi­ne in­itia­lUsbCheck no­tify glo­bal:I­NI­TIA­LI­ZED usb crea­te ### ­de­fi­ne SYS­TEM dum­my ­de­fi­ne File­Lo­g_­SYS­TEM File­Log ./lo­g/­SYS­TEM-%Y-%m.log SYS­TEM ­de­fi­ne SYS­TEM_temp at +*00:05 { fhem("­set SYS­TEM ".R­pi­Temp("")) } ­de­fi­ne SYS­TEM_ram at +*00:05 { fhem("­set SYS­TEM ".R­pi­RamS­wap("R")) } ­de­fi­ne SYS­TEM_fs at +*01:00 { fhem("­set SYS­TEM ".R­pi­Fi­le­Sys­tem("")) } ­de­fi­ne SV­G_­File­Lo­g_­SYS­TEM_1 SVG File­Lo­g_­SYS­TEM:SV­G_­File­Lo­g_­SYS­TEM_1:­CUR­RENT at­tr SV­G_­File­Lo­g_­SYS­TEM_1 room Sys­tem ### ­de­fi­ne Wet­ter Wea­ther 671072 1800 de at­tr Wet­ter lo­ca­li­cons 1 ­de­fi­ne wl­Wet­ter we­b­link html­Co­de { Wea­therAs­HtmlD("Wet­ter") } at­tr wl­Wet­ter room Draus­sen

vim ww­w/g­plot/SV­G_­File­Lo­g_­SYS­TEM_1.g­plot # Crea­ted by FHEM/98_SV­G.p­m, 2014-09-01 07:34:24 ­set ter­mi­nal png trans­pa­rent si­ze &l­t;­SI­ZE&g­t; crop ­set out­put '&l­t;OUT&g­t;.p­ng' ­set xda­ta ti­me ­set ti­mefmt "%Y-%m-%d_%H:%M:%S" ­set xla­bel " " ­set tit­le 'Sys­tem­tem­pe­ra­tur' ­set ytics ­set y2tics ­set gri­d ­set yla­bel "" ­set y2la­bel "Tem­pe­ra­tur in °C" #­File­Log 4:­SYS­TEM.Tx3a:: plot "&l­t;IN&g­t;" using 1:2 axes x1y2 tit­le 'Tem­pe­ra­tur' ls l0 lw 1 with li­nes

ln -s ../­con­trib/Raspber­ryPi/99_R­pi­U­tils.pm FHEM/99_R­pi­U­tils.pm

perl fhem.pl fhem.cf­g htt­p://IP:8083/f­hem

git clo­ne htt­ps://­github.­com/m­do­ren­kamp/f­hem­dui­no_­mo­du­les cd FHEM ln -s ../f­hem­dui­no_­mo­du­les/*.pm ./ cd ../f­hem­dui­no_­mo­du­les/ patch &l­t; fi­le ­diff --­git a/14_F­HEM­dui­no_P­T2262.pm b/14_F­HEM­dui­no_P­T2262.p­m ­in­dex 6d2a69c..32d2b­d5 100644 --- a/14_F­HEM­dui­no_P­T2262.p­m +++ b/14_F­HEM­dui­no_P­T2262.p­m @@ -355,13 +355,20 @@ sub get­But­ton($$){ ############################################################# "FF­F00" =&g­t; "28", "FF­F0F" =&g­t; "29", "FFF­F0" =&g­t; "30", -    "FFFF­F" =&g­t; "31" +    "FFFF­F" =&g­t; "31", +    # RE­V: +    "FF­F01" =&g­t; "32", +    "FF­F10" =&g­t; "33", +    "FF100" =&g­t; "34" );

Sys­tem Mes­sa­ge: WAR­NING/2 (<string>, li­ne 198); back­link

In­li­ne em­pha­sis star­t-string wi­thout en­d-string.

my %ac­tion = ( "FF" =&g­t; "on", "0F"       =&g­t; "on", -    "F0"       =&g­t; "off" +    "F0"       =&g­t; "off", +    # RE­V: +    "01" =&g­t; "on", +    "10" =&g­t; "off" ); if (e­xists $hou­se­co­de{$re­cei­ved­Hou­se­Co­de}) {

vim fhem.cf­g ­de­fi­ne FHEM­dui­no FHEM­dui­no /de­v/t­ty­US­B0@9600 at­tr FHEM­dui­no flas­h­Com­mand avr­du­de -c ar­dui­no -b 57600 -P [POR­T] -p at­me­ga328p -vv -U flas­h:w:[HEX­FI­LE] 2&g­t;[LOG­FI­LE] ­de­fi­ne File­Lo­g_F­HEM­dui­no File­Log ./lo­g/F­HEM­dui­no-%Y.log FHEM­dui­no

exit i­nit_­skript nach /et­c/i­nit.d/f­hem ko­pie­ren chmod 755 /et­c/i­nit.d/f­hem ­su­do up­da­te-rc.d fhem defaults ­su­do ser­vice fhem stop ­su­do ser­vice fhem sta­tus ­su­do ser­vice fhem start

Kommentare


Comments powered by Disqus