OneWire Temperatur Sensoren für die Homematic CCU (Raspberry) Software Lösung

Nun ist es soweit, die Software für die Lösung OneWire Temperatur Sensoren für die Homematic CCU am  Raspberry (siehe hier) ist nun fertig.

Die Software ist in Perl geschrieben. EIn Init.d Script ist dabei um es automatisch beim starten des Betriebssystem auszuführen. Das Ganze Projekt ist bei GITHUP hinterlegt und auch dokumentiert.

Zur Funktion:

Das Script frag alle X Sekunden die Onewire Sensoren ab. Scan auch die Sensoren ob neue hinzugekommen sind oder welche entfernt worden sind. Dieses Modul wird als Gateway bezeichnet. zukünftig wird es noch weitere „Gateways“ geben. Angedacht sind RGB Dimmer, Schalter bzw Relais und was man sonst noch so machen kann. Das Script ist aus einem grösseren Projekt was ich gerade entwickle und wird mal so was wie FHEM  werden, nur Benutzer freundlicher. Ähnlich der Homematic CCU aber mit der Möglichkeit alle Welten miteinander zu verbinden.

Das Gateway Onewire hat eine eingebaute Hysterese damit nicht bei minimalen Änderungen unnötige Request erzeugt werden.

Die Daten von den Sensoren werden dann so den Connectoren geschickt. Diese Leiten dann die Sensor Daten weiter. zur zeit gibt es 2 Arten von Connectoren.

HomematicXML:

Der Connector sendet bei Veränderungen der Sensor Werte die Daten an eine Homematic CCU. In der Config Datei wird das Mapping zur ISE_ID in der Homematic gemacht. Diese wird dann per HTTP Request via XML API an die Homematic Zentrale geschickt. Für jeden Sensor wird eine Variable angelegt. Jede Variable hat eine eindeutige ID (ISE_ID) diese wird in der Config des Script zu jedem Sensor eingetragen.

Mit normalen Devices wie CUX Temperatur Sensoren als DUMMY bin ich noch am experimentieren. Über Variablen geht s aber auch. Diese können angezeigt werden und auch Programme auslösen bzw. in Programmen abgefragt werden.

MYSQL Connector:

Für alle die Statistiken mögen können die Werte in eine MYSQL Datenbank ablegen. Das Mapping zwischen Sensor Daten und Datenbank spalten können in der Config gemacht werden.

das Script kann unter GITHUP runter geladen werden. oder auch direkt unter: https://github.com/uschoen/1wire/archive/master.zip

Eine Anleitung ist in Englisch im Verzeichnis /doc/install.txt enthalten.

Als kurz Version:

Erst müssen einige Pakete für das Perl Modul XML::Simple installieren.

sudo apt-get install libxml-simple-perl libarchive-zip-perl

Dann die Files von Githup herunterladen:

 cd /tmp
 wget https://github.com/uschoen/1wire/archive/master.zip

Ein neues Verzeichnis erstellen für das Script und entpacken . Dann ausführbar machen. Dann die Files ins Verzeichnis verschieben.

sudo mkdir /usr/local/easyHC
sudo unzip master.zip
sudo chmod -R 775 1wire-master/
cd 1wire-master /usr/local/easyHC
sudo mv * /usr/local/easyHC

Über CPAN einige Pakete nach installieren.

sudo cpan
install XML::Simple strict warnings Getopt::Long Data::Dumper POSIX LWP::Simple

Wenn der MSQL Connector verwendet wird muss noch zusätzlich das DBI und DBD::mysql Paket installiert werden.

sudo cpan
install DBI DBD::mysql

Im Verzeichnis /doc/service liegt das init.d Script. ggf müssen dort noch einige Anpassungen gemacht werden, wenn andere Pfade verwendet wurden.

 
 ...
 DAEMON_PATH="/usr/local/easyHC" #installation path
 DAEMON=$DAEMON_PATH/EHCgateway.pl #Script name
 DAEMONOPTS="--configfile $DAEMON_PATH/conf/config.xml --daemon true" #start arguments, --configfile= plce of the config file, --daemon = true run as demo

NAME=EHCgateway #programm name and pid file name
 ....

Dann das Script kopieren ins init.d Verzeichnis.

sudo chmod 775 /etc/init.d/EHCgateway
sudo update-rc.d EHCgateway defaults

Danach die config_example.xml kopieren.

 cp /usr/local/easyHC/conf/config.exempel.xml /usr/local/easyHC/conf/config.xml

Nun kann die config.xml Datei angepast werden.  Das Script kann dann über folgenden Befehl gestartet werden:

sudo service EHCgateway start

und gestoppt mit:

 sudo service EHCgateway stop

WICHTIG, wenn das Script als Daemon läuft sollte das Logging für die Console ausgeschaltet werden.

Von Hand kann es so gestartet werden

cd /usr/local/easyHC
 sudo ./EHCgateway.pl --configfile /usr/local/easyHC/conf/config.xml --daemon false

Eine vollständige Beschreibung der Config und Settings findet Ihr im Verzeichnis /doc… noch in Englisch.

Für anregungen erweiterungen und Fehler nutz bitte bei GITHUP die ISSUES Funktion und macht dort ein Ticket auf.

https://github.com/uschoen/1wire/issues

6 Gedanken zu „OneWire Temperatur Sensoren für die Homematic CCU (Raspberry) Software Lösung“

  1. Hallo !
    super interessant und genau das, was ich gerade brauche. Ich habe Heizungsregler über Homematic und 1wire-sensoren über den Raspi.
    Aber ich brauche EINE Plattform. Deshalb würde ich das gerne auch mit dem Deinem Script machen und der mysql DB. Aber ich bin perl-technisch nicht so bewandert. Funktioniert deine Anleitung hier? Also ist sie step-für-step nachvollziehbar?
    Schöne Grüße
    Thomas

    1. Denke ja. Habe das so Installiert und bis heute läuft das bei mir. Es wird gerade an einer Erweiterung gearbeitet.

      wenn DU fragen hast, einfach fragen. Ich helfe gerne dann weiter. So kann ich dann auch die Antleitungen perfektoinieren.

  2. Hi,

    Ich habe Dein Projekt erfolgreich auf einem BananaPi M1
    nachgebaut.
    Läuft perfekt.
    Den Banana Pi hatte ich noch im Schrank 😉

    Gibt es eine Möglichkeit Lifedaten des „RaspberryPi easyHC“ per Webbrowser anzuzeigen?
    Oder ein XML abzugreifen?

    Gruß

    Marcel

  3. Hi.
    Ich hab ein PiRot ( KNX / OneWire) Modul. Da kann man direkt Temperatur Sensoren anschließen.
    Wie kann ich am besten die Sensoren auslesen ?

  4. Hallo,

    ich habe es ebenfalls nach der Anleitung auf meinen PI3-B installiert.
    Jedoch habe ich immer Logfile die Meldung „can not read xml answer from HM:“ und der Istwert wird auch nicht an die Homematic übertragen.
    Wenn ich jedoch den send-Befehl aus der Log-Datei kopiere und im Browser ausführe wird der Ist-Wert an die Homematic übertragen und entsprechend aktualisiert.
    Woran kann das liegen???
    Ich bin ratlos…

    Grüße
    Dennis

Kommentar verfassen