CCU2 Firmware auf einem Raspberr PI unter RASPBIAN Installie

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

CCU2 Firmware auf einem Raspberr PI unter RASPBIAN Installie

Beitrag von PaulG4H » 09.02.2014, 15:06

Hallo,

nachdem der Originale Thread http://homematic-forum.de/forum/viewtop ... &start=340 schon etwas Veraltet und vor allem die Informationen sehr Zerstreut sind habe ich diesen neuen gemacht und eine Aktuelle Anleitung wie die zur Zeit Aktuelle Firmware 2.7.16 auf einem Raspberry PI unter Raspian installiert werden kann.

Das ist keine Neuheit sondern nur eine Aktuelle Anleitung wie eine CCU Firmware mit Diagrammen auf einem PI Genutzt werden kann.

Folgende Vorteile gibt es durch die Installation unter RASPIAN Anstatt der Direkten Nutzung der CCU Firmware auf dem Raspberry PI:
  • Es ist ein vollwertiges Betriebssystem mit allen Möglichen Erweiterungen aus dem Raspian Repository
  • Es wird nun der gesamte Arbeitsspeicher des Raspberry PI genutzt (die CCU2 Firmware nutzt nur 256MB, 128MB in Laufzeit als Ramdrive und damit nun das Raspian die verbliebenen 256MB)
  • Eine Installation von weiteren Diensten (ccu.io und weiteren Paralell auf dem Raspberry PI ist nun Möglich!)
Die Einzige Einschränkung die mir bis jetzt aufgefallen ist das vom CCU2 Firmware Interface heraus nun die IP Adresse nicht mehr eingestellt werden kann sondern das muss unter dem Raspian gemacht werden.

Die Anleitung ist ohne gewähr!
Aktuelle Version 0.7a
CCU2 Firmware (_2.7.x) auf einem Raspberry PI unter Rasbian Installieren_0.7a.pdf
Version 07a im Querformat als PDF
(462.49 KiB) 3645-mal heruntergeladen
Changelog
  • 0.2 Kleinere Erweiterungen und Erklärungen sowie Tippfehler korrigiert
  • 0.3 Tippfehler behoben (Danke an marcnali)
  • 0.4 Anleitung hinzugefügt wie ein CCU Backup Wiederhergestellt werden kann
  • 0.5 Formatierung angepasst
  • 0.6 PDF war Fehlerhaft
[*]0.7 CCU.IO Installation, sylog, NTP server getauscht, rcu start Script Erweitert / Korrigiert


Vielen Dank an die Mitglieder hier im Forum die diesen Thread ermöglicht haben speziell Irina Müller, Stryke, GinTonic usw...

EDIT 10.02.2014: erste Probleme sind mit dieser Variante aufgetreten, dies wird zwar die wenigsten Betreffen aber es sollte Dokumentiert werden:
  • SYSLOG Weiterleitung Funktioniert nicht, es kommen am Ziel System keine Events an! --> ab Version 0.7 der Anleitung behoben!
EDIT 10.02.2014
  • Neustarten über das Webinterface nicht Möglich!
Update 01.03.2014
  • Uptime von 16 Tagen erreicht! Das war mit der CCU1 und CCU2 Firmware direkt auf einem Raspberry bei mir nicht Möglich! --> Aktuell sendet die CCU alle Ereignisse per Syslog auf meinem Server auch werden die Stammdaten Zyklisch (6H) und Systemvariablen (1Min) von meinem Linux Server Ausgelesen und auch ccu.io von meinem Linux Server aus belastet die RCU aber alles ohne Probleme!
Update 11.04.2014
  • Uptime von 40 Tagen erreicht! Am tag 20 ist der RFD am Abend "gestorben" und wurde am nächsten Morgen manuell wieder gestartet, ohne neustart der RCU! Aktueller Software Watchdog ist seit dem wieder aktiviert aber hat noch nie ausgelößt!
Update 22.04.2014
  • Uptime von 50 Tagen erreicht und dies ohne weitere Eingriffe!
LG

Paul
Zuletzt geändert von PaulG4H am 22.04.2014, 13:37, insgesamt 19-mal geändert.
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von PaulG4H » 09.02.2014, 15:11

Addons Installieren.
XML API (1.10)
Kopiert die xmlapi z.B. nach /usr/local/xmlapi und Entpackt sie (tar xzvf xm...)
Dann kopiert die Daten auf die etwas abgewandelten Pfade:

Code: Alles auswählen

cp -a xmlapi /etc/config/addons/www/
cp -a xml-api /etc/config/rc.d/
rm -rf /www/config/xmlapi
Die letzte Datei wird gelöscht, diese gab es bei mir aber nicht (vielleicht weil ich einige Versionen mit der Aktuellen Übersprungen habe)

Dann muss noch die Datei /etc/config/rc.d/xml-api angepasst werden:

Code: Alles auswählen

#!/bin/sh

WWW_DIR=/etc/config/addons/www/xmlapi
CONFIG_URL=/addons/xmlapi/

case "$1" in
""|start)
        if [ ! -e /www/config/xmlapi ]
        then
                #mount -o remount,rw /
                ln -s $WWW_DIR /www/config/xmlapi
                #mount -o remount,ro /
        fi
        ;;
info)
        echo "Version: 1.10"
        echo "Name: XML-API"
        echo "Operations: uninstall"
        echo "Config-Url: $CONFIG_URL"
        ;;
uninstall)
        rm -rf $WWW_DIR
        ;;
esac
Im Start Block wird der Flash Speicher der Originalen CCU kurz schreiben verbunden um einen Symbolischen Link einzurichten, das brauchen wir nicht...
weiter werden folgen
LG

Paul
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

marcnali
Beiträge: 43
Registriert: 13.11.2012, 10:13
Wohnort: VS

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von marcnali » 09.02.2014, 17:26

Hallo Paul

schaue grade dein Pdf an auf Seite 5
bei dem Befehl:

pi@rpi-rcu:~# su passwd root

muss das nicht so heisen :
pi@rpi-rcu:~#sudo passwd root

bekomme noch einen Fehlermeldung:
und zwar den ich das Skript von Seite 7 zum Autostart einfüge bekomme ich folgenden Fehler:
insserv: warning: script 'mathkernel' missing LSB tags and overrides



Gruss

Marc

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von PaulG4H » 09.02.2014, 18:16

SOFTWARE WATCHDOG FUER DIE CCU DIENSTE MIT MAIL BENACHRICHTIGUNG

Ich habe hier im Forum einen Software Watchdog veröffentlicht welcher jede Minute Überprüft ob alle Dienste Laufen und wenn nicht ein Mail sendet und die RCU neu startet, dies musste ich für die RCU unter Raspian anpassen und Erweitern. Auch haben wir hier nun die Möglichkeit die Mail und SMS Sende Funktion direkt mit dem Raspberry PI zu machen.

Der Neustart aus der chroot Umgebung heraus ist aber gelinde gesagt "Kompliziert" aber es geht so:

SSH ZUGRIFF VON CCU FIRMWARE HERAUS AUF RASPIAN

Es muss in der CCU Konsole ein RSA Key wie folgt erstellt werden:

Code: Alles auswählen

~/.ssh # ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
*****************************************
The key's randomart image is:
+--[ RSA 2048]----+
~/.ssh #
Dann gibt es einen ssh key für den Benutzer root

Code: Alles auswählen

/ # cd /root/.ssh/
~/.ssh # ls -lah
total 20
drwx------    2 root     root        4.0K Feb  9 16:14 .
drwxr-xr-x    3 root     root        4.0K Feb  9 16:13 ..
-rw-------    1 root     root        1.6K Feb  9 16:14 id_rsa
-rw-r--r--    1 root     root         390 Feb  9 16:14 id_rsa.pub
-rw-r--r--    1 root     root         176 Feb  9 16:13 known_hosts
~/.ssh #
Dann muss auch noch in der Raspian Konsole ein SSH Key erstellt werden:

Code: Alles auswählen

root@rpi-rcu:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
***********************
The key's randomart image is:
+--[ RSA 2048]----+
+-----------------+
root@rpi-rcu:~#
Nun wird der in der CCU Firmware erstellte Public Key in die authorized_hosts des RASPIAN kopiert damit der root benutzer der CCU Firmware in Laufzeit ohne Kenwortabfrage ssh Befehle auf dem Darunter Liegenten Raspian Ausführen kann.

Code: Alles auswählen

root@rcu:/# cd root/
root@rcu:~# ls -lah
insgesamt 36K
drwx------  4 root root 4,0K Feb  9 17:19 .
drwxr-xr-x 23 root root 4,0K Feb  9 14:28 ..
drwx------  2 root root 4,0K Feb  9 12:44 .aptitude
-rw-------  1 root root  218 Feb  9 15:09 .bash_history
-rw-r--r--  1 root root  570 Jan 31  2010 .bashrc
-rw-r--r--  1 root root  390 Feb  9 17:18 id_rsa.pub
-rw-r--r--  1 root root  140 Nov 19  2007 .profile
drwx------  2 root root 4,0K Feb  9 17:19 .ssh
-rw-------  1 root root  742 Feb  9 13:01 .viminfo
root@rcu:~# cat id_rsa.pub >> .ssh/authorized_keys
root@rcu:~# cat .ssh/authorized_keys
ssh-rsa ******************************
Nun können wir in der chroot Umgebung alle Befehle auf dem Zugrundeliegenden Rasbian Ausführen und so z.B. den Raspberry PI neu starten mit:

Code: Alles auswählen

/ # ssh <IP oder HOSTNAME> reboot
Der Vorteil von diesem Weg ist das wir nun aus der CCU Firmware Konsole heraus jeden Befehl im Raspian darüber ausführen können indem wir einfach

Code: Alles auswählen

ssh <ip oder HOSTNAME> BEFEHL
Ausführen.

Damit der Software Watchdog nicht schon beim Starten der RCU zuschlägt weil die Java **** so lange zum Starten braucht habe ich dies wie folgt umgesetzt:

in der Datei /etc/init.d/S99eQ3SystemStarted habe ich im Start Bereich folgende Zeile hinzugefügt:
start() {
echo -n "System started"
init
if [ ! -e /etc/config/safemode ] ; then
# meine-homematic.de starten
/opt/mh/startup.sh

# Zusatzsoftware starten
run-parts /etc/config/rc.d
else
rm -f /etc/config/safemode
fi
touch /var/status/check_sh
echo "OK"
}
Und hier der Aktuelle Software Watchdog mit einem eigenen Konfig Bereich:

Code: Alles auswählen

#!/bin/sh

#### KONFIGURATION #### START
# Durch setzen von 0 = Aus oder 1 = Ein kann jeder Dienst einzeln Aktiviert / Deaktiviert werden
rfd_daemon=0
rs485_daemon=0
cux_daemon=0
send_mail=0
mail_to="max@mustermann.com"
reboot_command="ssh <ip oder hostname> reboot"
#### KONFIGURATION #### ENDE

#Prüfe ob der Start schon abgeschlossen wurde sonst Abbruch!
if [ ! -f "/var/status/check_sh" ]; then
  echo "Nicht freigegeben..."
  exit 0
fi

msg="X"

rega=$(ps aux|grep '/bin/ReGaHss'|grep -v grep|wc -l)
if [ $rega -lt 1 ]; then
  msg="no ReGaHss process running"
  echo $msg
fi

if [ $rfd_daemon -eq 1 ]; then
  rfd=$(ps aux|grep 'bin/rfd '|grep -v grep|wc -l)
  if [ $rfd -lt 1 ]; then
    msg="no rfd process running"
    echo $msg
  fi
fi

if [ $rs485_daemon -eq 1 ]; then
  rs485=$(ps aux|grep 'bin/hs485d '|grep -v grep|wc -l)
  if [ $rs485 -lt 1 ]; then
    msg="no rs485 process running"
    echo $msg
  fi
fi

if [ $cux_daemon -eq 1 ]; then
  cuxd=$(ps aux|grep '/usr/local/addons/cuxd/cuxd'|grep -v grep|wc -l)
  if [ $cuxd -lt 1 ]; then
    msg="no cuxd process running"
    echo $msg
  fi
fi

if [ $msg == "X" ]; then
  echo rfd: $rfd, rs485: $rs485, ReGaHss: $rega, CUxD: $cuxd daemons running, all fine...
else
  if [ $send_mail -eq 1 ]; then
    #Bereitet den Sting auf und wandelt alle Leerzeichen und Sonderzeichen in HTML Zeichen um
    url=$(echo "$msg" | sed -e 's/%/%25/g' -e 's/ /%20/g' -e 's/!/%21/g' -e 's/"/%22/g' -e 's/#/%23/g' -e 's/\$/%24/g' -e 's/\&/%26/g' -e 's/'\''/%27/g' -e 's/(/%28/g' -e 's/)/%29/g' -e 's/\*/%2a/g' -e 's/+/%2b/g' -e 's/,/%2c/g' -e 's/-/%2d/g' -e 's/\./%2e/g' -e 's/\//%2f/g' -e 's/:/%3a/g' -e 's/;/%3b/g' -e 's//%3e/g' -e 's/?/%3f/g' -e 's/@/%40/g' -e 's/\[/%5b/g' -e 's/\\/%5c/g' -e 's/\]/%5d/g' -e 's/\^/%5e/g' -e 's/_/%5f/g' -e 's/`/%60/g' -e 's/{/%7b/g' -e 's/|/%7c/g' -e 's/}/%7d/g' -e 's/~/%7e/g')
    wget -q -O - 'http://<IP oder HOSTNAME>:81/mail.php?rec=$mail_to&sub=rcu%20reboot&mes='$url
  ]
  $($reboot_command)
fi
VERSENDEN VON MAILS ÜBER RASPIAN AUS DER CCU KONSOLE

Zum Versenden von Mails müssen wir auf der RASPIAN Konsole nun folgende Abhängigen Dienste Installieren:

Code: Alles auswählen

aptitude install apache2 php5 libphp-phpmailer -y
Nachdem das Port 80 schon vom CCU Webinterface genutzt wird stellen wir den Apache auf Port 81 um indem wir folgende Dateien Ändern und Port 80 durch 81 ersetzen:

vi /etc/apache2/ports.conf

Code: Alles auswählen

NameVirtualHost *:81
Listen 81
vi /etc/apache2/sites-enabled/000-default

Code: Alles auswählen

<VirtualHost *:81>
Dann den Apache2 neu starten mit

Code: Alles auswählen

service apache2 restart
Hier nun die /var/www/mail.php die direkt im RASPIAN Apache2 Webroot abgelegt werden kann:

Code: Alles auswählen

<?php

# Folgende Pakete müssen unter Debian Installiert sein
# aptitude install php5 libphp-phpmailer

error_reporting(E_ALL);
# Wenn die Standardwerte nicht gesetzt wird wird kein Mail versendet wenn die Parameter beim Aufruf nicht übergeben wurden.
if (isset($_GET["rec"])){ $rec = urldecode($_GET["rec"]); } else { $rec = "Standard_Empfaenger@domain.com"; }
if (isset($_GET["sub"])){ $sub = urldecode($_GET["sub"]); } else { $sub = "Standard_betreff"; }
if (isset($_GET["mes"])){ $mes = urldecode($_GET["mes"]); } else { $mes = "Standard_Nachricht!"; }

# Voreinstellungen:
// Mail Parameter

$smtp_host	=	"mail.domain.com";    # Mailserver fqdn oder IP
$smtp_port	=	"25";                 # Maileserver Port
$smtp_sec	=	"tls";                # Oder leer bei keiner Verschlüsselung
$smtp_user	=	"haus@domain.com";   # Empfänger
$smtp_pwd	=	"******";             # Kennwort des Mailkontos
$smtp_from	=	"haus@domain.com";    # Absender Mailadresse

if (strlen($rec) > 0 and strlen($sub) > 0 or strlen($rec) > 0 and strlen($mes) > 0) {

	require_once("libphp-phpmailer/class.phpmailer.php");

	$body = "<html><body bgcolor=\"#ffffff\">\n";
	$body .= "<p>".$mes."</p>\n";
	$body .= "</body></html>\n";


	$mail             = new PHPMailer(true);
	$body             = $body;
	$body             = eregi_replace("[\]",'',$body);
	$mail->IsSMTP();
	$mail->Host       = $smtp_host;
	$mail->Port       = $smtp_port;
	$mail->SMTPSecure = $smtp_sec;
	$mail->Username   = $smtp_user;
	$mail->Password   = $smtp_pwd; 
	$mail->SetFrom($smtp_from, '');
	$mail->AddReplyTo($smtp_from);
	$mail->Subject    = $sub;
	$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

	$mail->MsgHTML($body);
	$mail->AddAddress($rec);


	if(!$mail->Send()) {
	  echo "Mailer Error: " . $mail->ErrorInfo;
	} else {
	  echo "<p><b>Message sent!</b></p><br>";
	}
} else {
	echo "Es muss der Empfänger und der betreff angegeben werden";
}
?>
Nun kann auch aus einem HM Script heraus ein Mail mit dem RASBIAN auf der RCU Gesendet werden:

Code: Alles auswählen

var rec = "empfänger@domain.com";
var sub = "Betreff";
var text = "Testmail";
string stdout;
string stderr;
string cmd = "wget -q -O - 'http://<IP oder HOSTNAME>:81/mail.php?rec=" + rec + "&sub=" + sub + "&mes=" + text +"'";
system.Exec(cmd, &stdout, &stderr);
Und ja ich weiß das man system.Exec nicht Nutzen soll und auf meinem Produktiv System habe ich den CUxD Installiert und mache es dort mit dem CUxD.exec wie es sich gehört!

LG

Paul
Zuletzt geändert von PaulG4H am 10.02.2014, 09:20, insgesamt 2-mal geändert.
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von PaulG4H » 09.02.2014, 18:18

marcnali hat geschrieben:Hallo Paul

schaue grade dein Pdf an auf Seite 5
bei dem Befehl:

pi@rpi-rcu:~# su passwd root

muss das nicht so heisen :
pi@rpi-rcu:~#sudo passwd root

bekomme noch einen Fehlermeldung:
und zwar den ich das Skript von Seite 7 zum Autostart einfüge bekomme ich folgenden Fehler:
insserv: warning: script 'mathkernel' missing LSB tags and overrides

Gruss

Marc
Hallo Marc,

ja das mit dem sudo ist richtig wird gleich korrigiert und das zweite mit insserv Funktioniert aber trotzdem...

LG

Paul
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

marcnali
Beiträge: 43
Registriert: 13.11.2012, 10:13
Wohnort: VS

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von marcnali » 09.02.2014, 18:25

Probiere dann gleich mal aus

bekomme noch einen Fehlermeldung:
und zwar den ich das Skript von Seite 7 zum Autostart einfüge bekomme ich folgenden Fehler:
insserv: warning: script 'mathkernel' missing LSB tags and overrides


Funktioniert trotz Meldung

Danke
Zuletzt geändert von marcnali am 09.02.2014, 19:27, insgesamt 2-mal geändert.

Benutzeravatar
funkleuchtturm
Beiträge: 2367
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von funkleuchtturm » 09.02.2014, 18:33

PaulG4H hat geschrieben: nachdem der Originale Thread http://homematic-forum.de/forum/viewtop ... &start=340 schon etwas Veraltet und vor allem die Informationen sehr Zerstreut sind habe ich diesen neuen gemacht und eine Aktuelle Anleitung wie die zur Zeit Aktuelle Firmware 2.7.16 auf einem Raspberry PI unter Raspian installiert werden kann.
l
Sehr schön, daß Du Dir die Arbeit gemacht hast!! So ein komplexes Thema muß einfach wegen der Übersichtlichkeit in Abständen zusammengefaßt werden.
Jetzt bekomme ich wieder Lust, mit meinem Raspberry zu spielen. Danke!

Was fehlt eigentlich noch der Raspberry-Installation im Vergleich zur CCU2-Installation?
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von PaulG4H » 09.02.2014, 18:39

Hallo funkleuchtturm,

ich denke es werden noch Anleitungen zum Installieren der AddOns folgen, vielleicht versuche ich (oder jemand anders?) mal ein Addon umzubauen das es über das webui Installierbar ist...

LG

Paul
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

joe.oster
Beiträge: 288
Registriert: 17.06.2013, 12:15
Wohnort: NRW
Danksagung erhalten: 2 Mal

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von joe.oster » 09.02.2014, 19:40

bei so einer guten Anleitung werde ich mir wohl auch mal einen Raspberr PI zum testen holen :wink:

Joe

rascal
Beiträge: 817
Registriert: 02.10.2012, 23:30

Re: CCU2 Firmware auf einem Raspberr PI unter RASPIAN Instal

Beitrag von rascal » 09.02.2014, 20:31

wirklich coole Anleitung, ccu läuft, allerdings bringe ich cuxd nicht dazu :/

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“