Projekt Wetterstation: Basisstation (Software)
Für die Basisstation meiner Wetterstation habe ich mir einen Raspberry Pi ausgewählt. Zuerst hatte ich einen Pi B (nicht "+"), dieser wurde jetzt durch einen Pi Zero ersetzt. Dabei musste ich das System aktualisieren und zeige dir gleich, wie ich den Pi (sollte bei jedem Pi sehr ähnlich sein) eingerichtet habe, damit alles sicher konfiguriert ist und nichts Unnötiges läuft.
Als Grundsystem habe ich mich für Raspbian entschieden. Das basiert auf Debian Linux, ist recht stabil und weit verbreitet. Das Image bekommst du hier: Raspbian Jessie Lite
Schließe die Speicherkarte des Raspberry Pi (mit einem Kartenleser) an den PC an. Jetzt unterscheidet sich der Weg zwischen Windows und Linux auf deinem PC:
Windows
Entpacke das Image und lade es mit einem Programm wie Rawrite32 auf die Speicherkarte.
Achtung!
Vorsicht, wenn du die falsche Festplatte auswählst, ist das Windows weg! Alle Daten auf der Speicherkarte gehen verloren.
Das dauert ein paar Minuten. Nimm danach die Speicherkarte aus dem PC. Diesen Weg habe ich nicht probiert und weiß nicht, wie du das WLAN automatisch aktivieren kannst, falls du keinen Monitor an den Pi anschließ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 Speicherkarte aus dem Kartenleser.
Datenpartition auf Größe der Speicherkarte erweitern
Mit einem Partitionsmanager wie GParted kannst du nun noch den Datenbereich (2. Partition, ext4-Dateisystem) vergrößern, damit die Speicherkarte vollständig genutzt werden kann. Stecke die Speicherkarte wieder an den PC an. Das vorherige entfernen und wieder anschließen ist hier wichtig! Rufe nun gparted oder einen anderen Partitionsmanager auf und wähle die Speicherkarte anhand der Größe aus. Bitte sei vorsichtig, auch hier kannst du dein Windows/Linux beschädigen, wenn du das Falsche auswählst und Änderungen vornimmst! Wähle nun die ext4-Partition aus und vergrößere sie nach hinten auf die maximal verfügbare Größe. Danach sollte deine Speicherkarte (bei mir 16GB gesamt) folgende Bereiche enthalten:
Partition | Dateisystem | Größe |
---|---|---|
- | - | 4MB |
/dev/sdb1 | fat32 | 60MB |
/dev/sdb2 | ext4 | 1GB → 15GB |
WLAN-Einrichtung (Linux)
Falls du keinen Monitor an den Raspberry Pi anschließt, kannst du ihn nur per Netzwerk und SSH/Putty bedienen. WLAN muss dafür noch fertig eingerichtet werden. Wenn du Monitor und Tastatur anschließen kannst, dann geht es für dich im nächsten Kapitel weiter.
Das Passwort fürs WLAN muss eingestellt werden und die Option, dass sich der Pi selbständig eine IP holt:
# /dev/sdb muss durch den Pfad zur Speicherkarte ersetzt werden. sudo mount /dev/sdb2 /mnt
Nun muss mit root-Rechten in /mnt/etc/network/interfaces das "static" in "dhcp" geändert werden:
[...] 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 Datei /mnt/etc/wpa_supplicant/wpa_supplicant.conf bekommt folgenden Inhalt:
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 Karte wieder aus dem Kartenleser entfernt werden.
erster Start
Jetzt kannst du die Speicherkarte in den Pi stecken und ihn starten. Wenn alles geklappt hat, sollte er nach einer Minute im Netzwerk auftauchen. Dafür schaust du am besten auf der Webseite deines Routers nach. Wenn du nicht Bildschirm und Tastatur am Pi angeschlossen hast, verbinde dich per SSH (Linux) oder Putty (Windows) mit dem Pi. Der Benutzername ist pi und das Passwort raspberry. Falls du die Tastatur direkt am Pi hast, musst du als Passwort beim ersten Mal eventuell raspberrz nutzen.
# 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
apt-get install vim sudo unattended-upgrades rsync bash-completion usbutils libdevice-serialport-perl git
vim /etc/apt/apt.conf.d/50unattended-upgrades
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::AutocleanInterval "1"; APT::Periodic::Unattended-Upgrade "1"; Unattended-Upgrade::Automatic-Reboot "true"; #Kommentar vor "o=Raspbian,a=stable"; entfernen <pre class="brush:shell">Passwort für root ändern: passwd</pre> useradd -m -G sudo -s /bin/bash NEUERNUTZER passwd NEUERNUTZER # Passwort für den neuen Nutzer 2x eingeben
Login mit NEUERNUTZER probieren und wenn "sudo id == root" erfolgreich, dann als root ausloggen
sudo vim /etc/ssh/sshd_config PermitRootLogin no
sudo service ssh restart
vim .bashrc force_color_prompt=yes # Zeile 46
sudo useradd -m -G dialout -s /bin/bash fhem sudo -u fhem -i wget -O- http://fhem.de/fhem-5.6.tar.gz | tar zx ln -s fhem-* fhem cd fhem vim fhem.cfg attr global altitude 126 attr global latitude 51.00000 attr global longitude 12.00000 attr global pidfilename ./fhem.pid #define telnetPort telnet 7072 global #define initialUsbCheck notify global:INITIALIZED usb create ### define SYSTEM dummy define FileLog_SYSTEM FileLog ./log/SYSTEM-%Y-%m.log SYSTEM define SYSTEM_temp at +*00:05 { fhem("set SYSTEM ".RpiTemp("")) } define SYSTEM_ram at +*00:05 { fhem("set SYSTEM ".RpiRamSwap("R")) } define SYSTEM_fs at +*01:00 { fhem("set SYSTEM ".RpiFileSystem("")) } define SVG_FileLog_SYSTEM_1 SVG FileLog_SYSTEM:SVG_FileLog_SYSTEM_1:CURRENT attr SVG_FileLog_SYSTEM_1 room System ### define Wetter Weather 671072 1800 de attr Wetter localicons 1 define wlWetter weblink htmlCode { WeatherAsHtmlD("Wetter") } attr wlWetter room Draussen
vim www/gplot/SVG_FileLog_SYSTEM_1.gplot # Created by FHEM/98_SVG.pm, 2014-09-01 07:34:24 set terminal png transparent size <SIZE> crop set output '<OUT>.png' set xdata time set timefmt "%Y-%m-%d_%H:%M:%S" set xlabel " " set title 'Systemtemperatur' set ytics set y2tics set grid set ylabel "" set y2label "Temperatur in °C" #FileLog 4:SYSTEM.Tx3a:: plot "<IN>" using 1:2 axes x1y2 title 'Temperatur' ls l0 lw 1 with lines
ln -s ../contrib/RaspberryPi/99_RpiUtils.pm FHEM/99_RpiUtils.pm
perl fhem.pl fhem.cfg http://IP:8083/fhem
git clone https://github.com/mdorenkamp/fhemduino_modules cd FHEM ln -s ../fhemduino_modules/*.pm ./ cd ../fhemduino_modules/ patch < file diff --git a/14_FHEMduino_PT2262.pm b/14_FHEMduino_PT2262.pm index 6d2a69c..32d2bd5 100644 --- a/14_FHEMduino_PT2262.pm +++ b/14_FHEMduino_PT2262.pm @@ -355,13 +355,20 @@ sub getButton($$){ ############################################################# "FFF00" => "28", "FFF0F" => "29", "FFFF0" => "30", - "FFFFF" => "31" + "FFFFF" => "31", + # REV: + "FFF01" => "32", + "FFF10" => "33", + "FF100" => "34" );
my %action = ( "FF" => "on", "0F" => "on", - "F0" => "off" + "F0" => "off", + # REV: + "01" => "on", + "10" => "off" ); if (exists $housecode{$receivedHouseCode}) {
vim fhem.cfg define FHEMduino FHEMduino /dev/ttyUSB0@9600 attr FHEMduino flashCommand avrdude -c arduino -b 57600 -P [PORT] -p atmega328p -vv -U flash:w:[HEXFILE] 2>[LOGFILE] define FileLog_FHEMduino FileLog ./log/FHEMduino-%Y.log FHEMduino
exit init_skript nach /etc/init.d/fhem kopieren chmod 755 /etc/init.d/fhem sudo update-rc.d fhem defaults sudo service fhem stop sudo service fhem status sudo service fhem start
Kommentare
Comments powered by Disqus