Mittwoch, 18. Februar 2015

Umzug FHEM auf die Paparazzischeue Power Himbeere

Aktuelles 23.03.2017: Dieser Artikel ist mittlerweile zwei Jahre alt, ich empfehle meine aktuellen Anleitungen zur Installation und zum Umzug 

Vorbemerkung zur Überschrift 

Der neue Raspberry Pi 2 hat einen lichtempfindlichen Chip an Board, man tut also gut daran ein weitestgehend lichtdichtes Gehäuse zu verwenden, oder eben nicht zu blitzen.
Wer Himbeermarmelade mag weiß, die Himbeere an sich hat viele Kerne. Ob die im Kuchen nicht auffallen, ist mir jetzt nicht so bewusst aber der Raspberry Pi 2 hat 4 Kerne anstatt bisher nur einen. Mal sehen ob wir die auch wirklich nutzen können.

Installation

Ich schreibe hier einfach mal mit was ich alles tue, um die aktuelle FHEM Installation auf einen neuen Raspberry Pi umzuziehen. Die vielleicht einfachste Variante ist:
Altes System
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo rpi-update
sudo halt

Dann SD Karte ins neue System stecken, hochfahren und fertig. Das werde ich später auch noch probieren, aber: Wer will schon immer einfach? :-)

Kann ja sein man will/muss die SD Karte auch wechseln. Oder man will das Betriebssystem einfach mal von alten Lasten befreien. Oder wie auch immer ...

Also erstmal System einrichten, wie von mir beschrieben.

Kleine Feststellung am Rande:
Wenn man mehrere Kommando Zeilen aus diesem Text kopiert und mit einem Mal in das Terminalfenster einfügt wird die Verarbeitung abgebrochen wenn ein Zwischenfrage kommt und man J oder enter drückt. Deswegen schreibe ich mal auch die Einzeiler mit && zwischen den einzelnen Kommandos - liest sich nicht so schön funktioniert aber.

Hardwareunterstützung

Ein bisschen mein Standard ist eine Stop/Start Taste einrichten. Die Hardware ist ja vorbereitet, dann noch:
sudo apt-get install python-dev python-rpi.gpio

das schon existierende Script von dem alten Raspberry kopieren nach
/home/pi/shutdown.py

Rechte setzen
sudo chmod +x /home/pi/shutdown.py

und für den Systemstart aktivieren
sudo nano /etc/rc.local

und ganz zum Ende gehen und vor exit 0
sudo python /home/pi/shutdown.py &
eintragen.

FHEM installieren

Die notwendigen Module, dass -f install am Anfang überprüft nochmal die Paketabhängigkeiten. Ob das bei der sauberen Neuinstallation wirklich nötig ist weiß ich nicht.
sudo apt-get -f install
sudo apt-get install perl libdevice-serialport-perl
sudo apt-get install libio-socket-ssl-perl
sudo apt-get install libwww-perl
sudo apt-get install libxml-simple-perl
oder so
sudo apt-get -f install && sudo apt-get install perl libdevice-serialport-perl && sudo apt-get install libio-socket-ssl-perl && sudo apt-get install libwww-perl && sudo apt-get install libxml-simple-perl
oder so
sudo apt-get -f install && sudo apt-get install perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl libxml-simple-perl

RSS Unterstützung

Will man RSS verwenden braucht man folgende Module
sudo apt-get install msttcorefonts libgd-graph-perl libimage-librsvg-perl

sudo apt-get install libgd-text-perl (wird gebraucht ist schon installiert)

Sonos Unterstützung 

zusätzliche Perl Pakete
sudo apt-get install libsoap-lite-perl

Die Sprachausgabe benötigt eine Samba Freigabe die von Sonos erreichbar sein muss. Ich habe es noch so gemacht, dass jeder schreiben kann.
sudo apt-get install samba samba-common-bin
sudo mkdir /mnt/SonosSpeak
sudo chmod 777 /mnt/SonosSpeak/
sudo nano /etc/samba/smb.conf
Folgende Zeilen hinzufügen (Pfade müssen natürlich u.U. angepasst werden):
[SonosSpeak]
  comment = Audio-Files for SonosPlayer to Speak
  read only = false
  path = /mnt/SonosSpeak
  guest ok = yes

Hier muss normal nichts stehen, damit steht der Eintrag per default auf user:
[global]
  security = user
Samba-Server neustarten:
sudo /etc/init.d/samba restart
oder
sudo invoke-rc.d samba restart

Für das Caching der Sprachausgabe brauche ich noch ein Perl Modul, welches über cpan installiert werden muss.
sudo cpan install Digest::SHA1

netatmo Unterstützung

Netatmo braucht vor allem die Json Library
sudo apt-get install libjson-perl libdigest-md5-file-perl liblwp-protocol-https-perl liblwp-protocol-http-socketunix-perl

FHEM auf der Fritzbox Unterstützung

Um FHEM auf der Fritzbox Remote zu überwachen brauchen wir auch noch zwei Softwarepakete.
sudo apt-get install telnet expect
und das Script /home/pi/StartFhemOnFritz.sh muss von der alten Installation kopiert werden und mit Berechtigung zum ausführen versehen werden.

Email senden

Siehe hier

Das FHEM Paket selbst ist dann nur noch ein klacks, vorher kann man hier schauen ob es eine Neue Version gibt.
Man kann zwar im Zweifelsfall im sudo machen, aber bei wget braucht man es nicht.
wget http://fhem.de/fhem-5.6.deb
sudo dpkg -i fhem-5.6.deb

FHEM wird gestartet und wir sind erstmal fertig mit einem neuen System.

Wiederherstellung altes System

Jetzt noch FHEM auf den aktuellen Stand bringen, oder braucht man das nicht weil ich ja ein backup zurückspielen will? Man könnte jetzt einfach die fhem.cfg einspielen und neu starten, dazu wäre es clever das System zu aktualisieren. Das will  ich aber nicht, ich prüfe einfach mal ob das System läuft:
http://<hostname>:8083
Man kann an 3 Stellen nach einer Version schauen.

  1. version in der Kommandozeile von FHEM - die Versionsnummern der geladenen Module
  2. fheminfo in der Kommandozeile von FHEM - gibt einen Satz Infos aus, je nach dem was verwendet wird. Bereit um es an das Statistic Modul von Martin Fischer zu senden (fheminfo send)
  3. list global in der Kommandozeile von FHEM - gibt uns die Version der fhem.pl

Da ich etwas testen will, mache ich von diesem System mal noch ein backup. Also einfach backup in der Kommandzeile von FHEM.

Achtung! beim enter drücken passiert erstmal gar nichts. Der Browser sendet nach 1 min den Befehl von sich aus neu, damit werden zwei Sicherungen erzeugt. Also besser nach dem Backup Befehl den Browser schließen und im Terminal weitermachen.

Im Terminalfenster eingeben:
sudo invoke-rc.d fhem stop
Jetzt mache ich am "Alten System" nochmal ein backup und dann ein shutdown in der Kommandozeile von FHEM.

Mit Winscp kopiere ich die aktuelle Backup Datei aus dem Verzeichnis 
/opt/fhem/backup auf meinen Windows PC
und dann auf das neue System nach /home/pi . Damit umgehe ich Schreibrechte, muss nichts verbiegen und es bleibt quasi eine temporäre Datei. Sie hat aus meiner Sicht nichts im Pfad /opt/fhem/backup zu suchen.
Jetzt die eigentliche Wiederherstellung des Programmpfades
sudo tar -xvzf /home/pi/FHEM-201xxxxx_xxxxxx.tar.gz -C /opt/fhem/

In meinem Fall brauche ich an Hardware nichts weiter umstecken, ich habe einen HMLAN. Ansonsten müsste man das hier an dieser Stelle tun. 

Und das System wieder starten
sudo invoke-rc.d fhem start

Das SONOS Modul schreibt bei mir ins aktuelle Terminalfenster, für weitere Arbeit öffnet man besser ein neues.

Für eine Test zwischendurch gebe ich dem HMLAN in der fhem.cfg einfach mal eine andere Adresse um es prinzipiell zu testen
sudo nano /opt/fhem/fhem.cfg

Wenn alles läuft kann man die Sache endgültig machen, wenn nicht folgt noch mal Analyse:
Auf dem alten System
Den automatischen Start von FHEM verhindern
sudo update-rc.d -f fhem remove
Auf dem neuen System
Den Start von FHEM wieder auf automatisch stellen
sudo update-rc.d -f fhem defaults

Restarbeiten

Sounddateien für Sonos
Die vorhandene Dateien kann man einfach von Freigabe zu Freigabe kopieren.
Die DEFs verweisen aber noch auf die alte Freigabe, die müsste man auch noch ändern. Solange der alte Raspberry am Netz ist funktioniert natürlich alles.

Tuning

Das sollte die Plots auf mehrere Prozesse auslagern.
attr WEB plotfork 1

Quellen

Kommentare:

  1. Hinweis: Raspberry Pi B hat eine SD Karte, Raspberry Pi 2 B hat eine µSD Karte.

    Gruß PeMue

    AntwortenLöschen
  2. Danke für die Mühe! Besteht die Möglichkeit, dass Du die Installation als Image zur Verfügung stellst?

    AntwortenLöschen