Funktionsbereites FHEM "from scratch" in 12 Schritten und weniger als 15 Minuten

Begonnen von betateilchen, 26 Mai 2016, 12:41:33

Vorheriges Thema - Nächstes Thema

betateilchen

Voraussetzungen für den heute real durchgeführten Test mit Stoppuhr:


  • Raspberry Pi 3 - Model B
  • Sandisk MicroSD 8GB
  • RASPBIAN JESSIE LITE - Release date:2016-05-10 - Kernel version:4.4 von raspberrypi.org
  • Beschreiben der SD Karte erfolgte auf einem MacBook Air mittels dd/li]



1. Image herunterladen (03:11), entpacken (00:20) und auf SD Karte schreiben (01:45) *


2. optional: WLAN konfigurieren (00:30)

  • SD Karte irgendwo mounten
  • /etc/wpa_supplicant/wpa_supplicant.conf bearbeiten

EDIT vom 14.08.2017:

  • bei aktuellen raspbian Versionen genügt es, die wpa_supplicant.conf in das /boot Verzeichnis der neu erstellten SD Karte zu legen


3. SD Karte in Raspberry stecken und starten  (00:30)


4. ssh auf den Raspberry (00:10)

EDIT vom 14.08.2017:

  • bei aktuellen raspbian Versionen muss eine leere Datei mit dem Namen ssh in das /boot Verzeichnis der neu erstellten SD Karte gelegt werden, damit SSH überhaupt freigegeben wird.


5. Zusätzlich benötigte Pakete installieren (03:03)


   apt-get update

   apt-get -y install perl-base libdevice-serialport-perl libwww-perl libio-socket-ssl-perl libcgi-pm-perl libjson-perl
   sqlite3 libdbd-sqlite3-perl libtext-diff-perl libtimedate-perl libmail-imapclient-perl libgd-graph-perl libtext-csv-perl
   libxml-simple-perl liblist-moreutils-perl ttf-liberation libimage-librsvg-perl libgd-text-perl libsocket6-perl
   libio-socket-inet6-perl libmime-base64-perl libimage-info-perl libarchive-extract-perl libusb-1.0-0-dev git subversion telnet



6. Aktuelles fhem aus SVN holen (00:30)


   cd /opt
   svn checkout https://svn.fhem.de/fhem/trunk/fhem fhem



7. Benutzer fhem anlegen und fhem Rechte anpassen (00:30)


   useradd --system --home /opt/fhem --gid dialout --shell /bin/false fhem
   chown -R fhem:dialout /opt/fhem



8. init-Skript an die richtige Stelle kopieren und ausführbar machen (00:20)


   cp /opt/fhem/contrib/init-scripts/fhem.3 /etc/init.d/fhem
   chmod a+x /etc/init.d/fhem



9. init-Skript bearbeiten (wichtig!) (00:15)

   Die folgenden Zeilen in der /etc/init.d/fhem müssen entfernt oder auskommentiert werden:


   if test "$2" != "noaptmark"; then
      apt-mark hold fhem > /dev/null
   fi



10. init-Skript in rc-Steuerung aufnehmen (00:15)


   update-rc.d fhem defaults

   

11. Raspberry neu starten (00:20)


12. mit fhem verbinden und einen cmdalias für update anlegen, damit das update künftig direkt aus svn erfolgt (00:30)


   define alias_update cmdalias update AS { `svn update /opt/fhem/` }
   save



Fertig :)



  • raspi-config und apt-get upgrade können im Nachgang durchgeführt werden.
  • Die gleichen Schritte funktionieren auch auf anderen Einplatinencomputern, dann natürlich mit dem jeweils passenden Image.




* Weil Nachfragen zu der kurzen Zeit für das Schreiben des Images kamen:


sh-3.2# dd bs=1m if=2016-05-10-raspbian-jessie-lite.img of=/dev/rdisk2
1322+0 records in
1322+0 records out
1386217472 bytes transferred in 105.653068 secs (13120466 bytes/sec)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Bei meinen "tatsächlichen" Installationen geht das Ganze noch schneller, da ich die Punkte 5-12 alle in ein Skript gesteckt habe, das nach dem erstmaligen Verbinden per SSH auf dem Zielgerät ausgeführt wird. In dem Skript sind die Punkt 12 und 11 natürlich vertauscht. Das "define" wird per echo in die fhem.cfg geschrieben und das save ist dann noch gar nicht nötig, da fhem zu diesem Zeitpunkt noch nicht läuft.


#!/bin/bash

apt-get update && apt-get -y install perl-base libdevice-serialport-perl libwww-perl libio-socket-ssl-perl libcgi-pm-perl libjson-perl sqlite3 libdbd-sqlite3-perl libtext-diff-perl libtimedate-perl libmail-imapclient-perl libgd-graph-perl libtext-csv-perl libxml-simple-perl liblist-moreutils-perl ttf-liberation libimage-librsvg-perl libgd-text-perl libsocket6-perl libio-socket-inet6-perl libmime-base64-perl libimage-info-perl libarchive-extract-perl libusb-1.0-0-dev git subversion

cd /opt && svn checkout svn://svn.code.sf.net/p/fhem/code/trunk/fhem fhem

useradd --system --home /opt/fhem --gid dialout --shell /bin/false fhem
chown -R fhem:dialout /opt/fhem

cp /opt/fhem/contrib/init-scripts/fhem.3 /etc/init.d/fhem
sed -i /noaptmark/d /etc/init.d/fhem
sed -i /hold/d      /etc/init.d/fhem
sed -i /^fi$/d      /etc/init.d/fhem
chmod a+x /etc/init.d/fhem
update-rc.d fhem defaults

echo 'define alias_update cmdalias update AS { `svn update /opt/fhem/` }' >> /opt/fhem/fhem.cfg

reboot


Tipp: Wer Probleme beim Auschecken per svn hat, beispielsweise weil er hinter einer Firewall oder einem Proxy sitzt, wo svn:// als Protokoll geblockt wird, kann beim svn checkout auch einfach http:// anstatt svn:// verwenden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

kvo1

Hallo Udo,

danke für die coole Anleitung. ;)

Hätte da mal eine "angrenzente Fragen" (etwas on top).

Gibt es für den RPI keine Perl-Version v5.20.2 ?  Habe nach update & upgrade immer noch v5.14.2  ???




RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Otto123

Bei meinem RPI 3 ist es mit Jessie die Version Perl     : v5.20.2

Ich glaube mit update & upgrade wird Perl nicht aktualisiert. --> cpan und dann upgrade?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kvo1

Hallo Otto,
danke.
Ich habe 2 CT´s , einer mit  Jessie oder andere mit Wheezy. Beide haben aber Version Perl     : v5.20.2

Dennach scheint es Version Perl     : v5.20.2 ja auch für Wheezy (was auf einem RPI läuft) zu geben !

grus nach Leizig
Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

kvo1

Zitat von: kvo1 am 29 Juni 2016, 13:45:20
Hallo Otto,
danke.
Ich habe 2 CT´s , einer mit  Jessie oder andere mit Wheezy. Beide haben aber Version Perl     : v5.20.2

Dennach scheint es Version Perl     : v5.20.2 ja auch für Wheezy (was auf einem RPI läuft) zu geben !

grus nach Leizig
Klaus

Zitat--> cpan und dann upgrade?
..und das versteh ich zugegeben leider nicht wirklich  :'(

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

betateilchen

Zitat von: kvo1 am 29 Juni 2016, 14:10:49
..und das versteh ich zugegeben leider nicht wirklich  :'(

Du musst nicht traurig sein, der Vorschlag war eh unsinnig. Wenn schon, solltest Du den raspi über ein dist-upgrade aktualisieren und nicht anfangen, Dich mit cpan rumzuschlagen.


apt-get dist-upgrade


Welche perl Version in einer Distribution enthalten ist, entscheidet der publisher der Distribution. Man kann prinzipiell das perl alleine updaten, aber das ist nichts für Anfänger, die einfach nur mit ihrem raspi arbeiten wollen und auf ein stabil funktionierendes System angewiesen sind.

Im akuellen raspbian ist perl in der Version 5.20 enthalten.


udo@fhem-rpi3:~ $ perl -v

This is perl 5, version 20, subversion 2 (v5.20.2) built for arm-linux-gnueabihf-thread-multi-64int
(with 81 registered patches, see perl -V for more detail)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

cpan und Dist-Upgrade sind sogar zusammen etwas ... tödlich. dist-upgrade aktuallisiert alles, was dem System an Packeten bekannt ist. Die per cpan installierten Perl-Module sind aber dem System NICHT bekannt. Also sind diese alle veraltet ....

Deshalb auch per cpan nur im Notfall ein Perl-Modul installieren.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

kvo1

Zitatapt-get dist-upgrade

hatte ich natürlich schon gemacht !

Dann wird das wohl an meinem zu alten System liegen !

pi@lmsraspi ~ $ perl -v

This is perl 5, version 14, subversion 2 (v5.14.2) built for arm-linux-gnueabihf-thread-multi-64int
(with 89 registered patches, see perl -V for more detail)


Vielleicht lasse ich das einfach bei v5.14.2 , oder gibt es wichtige Gründe auf v5.20.2 upzudaten ?
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Wernieman

welche Version hast Du denn?
cat /etc/issue
cat /proc/version
uname -a
lsb_release -a
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

Zitat von: betateilchen am 29 Juni 2016, 15:46:37
Du musst nicht traurig sein, der Vorschlag war eh unsinnig. Wenn schon, solltest Du den raspi über ein dist-upgrade aktualisieren und nicht anfangen, Dich mit cpan rumzuschlagen.
Sorry, irgendwo habe ich auf die Schnelle gefunden, dass es so gehen soll. Man sollte eben nichts ungeprüft weiter posten. Normalerweise mache ich das auch nicht - war mir wieder eine Lehre.  :-X Es gibt kein Smily mit Asche auf dem Haupt.

Aus meiner Sicht gibt es keinen Grund Perl extra zu aktualisieren. Ich glaube die Chance, dass dabei etwas nicht mehr geht ist genauso hoch wie auf Jessie zu gehen und dann geht auch noch alles.  8)
Und auf Jessie gehen ist sicher viel viel schneller, hat betateilchen ja eindrucksvoll beschrieben.

Ich glaube allerdings auch dist-upgrade ist "mühsam". Ich finde ein aktuelles Image und anschließend per Script alles drauf ziehen (mit apt-get update und apt-get upgrade) ist viel schneller und sauberer. Auf den Rest an Aktualität können sicher die meisten verzichten.
Und außerdem weiß man dann auch immer wie backup und restore funktioniert  8)

Schönen Abend aus der Sonne in Leipzig  ;D

Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kvo1

Hallo Wernieman,
Zitat von: Wernieman am 29 Juni 2016, 18:53:58
welche Version hast Du denn?
cat /etc/issue
cat /proc/version
uname -a
lsb_release -a



cat /etc/issue
Raspbian GNU/Linux 7 \n \l

cat /proc/version
Linux version 4.1.19-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #858 SMP Tue Mar 15 15:56:00 GMT 2016

uname -a
Linux lmsraspi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux

lsb_release -a
-bash: lsb_release: Kommando nicht gefunden.

Danke

RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Wernieman

@Otto:
Wollten wir nicht mal ein Bierchen trinken?  8)

Generell:
es gibt grooooße Unterschiede zu "apt-get update" und "apt-gt dist-upgrade".

Bei ersteren werden nur die Updates (Security) der Installierten Distri upgedatet, beim 2. die darunterliegende Distribution. Mann sollte sich nicht auf 1. verlassen, da jede Distri nur eine begrenzte Updatezeit hat. Wenn diese verstrichen ist, gibt es keine security-updates mehr!

BTW:
Auch bei Ubuntu LTS besteht die Security-Update-Zeit nur fürs "main", alles andere hat eine viel kürzere Updatezeit.

@kvo1:
Meines Beschränkten Wissens nach, ist dieses aktuell noch gut. Allerdings solltest Du Dich (wie viele andere) schon nächstes Jahr überlegen, ob eventuell ein upgrade zu neueren Versionen sinnvoll ist ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

kvo1

Zitat@kvo1:
Meines Beschränkten Wissens nach, ist dieses aktuell noch gut. Allerdings solltest Du Dich (wie viele andere) schon nächstes Jahr überlegen, ob eventuell ein upgrade zu neueren Versionen sinnvoll ist ...

wird wohl so kommen, zumal ich schon einen CT mit Jessie habe ! Danke für Mühe !
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html