Homematic und XMPP/Jabber

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
BCS2005
Beiträge: 5
Registriert: 07.12.2015, 18:06
Wohnort: Hannover
Danksagung erhalten: 1 Mal
Kontaktdaten:

Homematic und XMPP/Jabber

Beitrag von BCS2005 » 07.12.2015, 18:35

Ich möchte an dieser Stelle einmal beschreiben, wie man die Homematic CCU dazu bringt, Nachrichten an einen XMPP/Jabber-Server weiterzuleiten

Nachdem ich tagelang auf der Suche nach einer Lösung für meinen Wunsch war, Nachrichten der CCU an meinen XMPP-Server und an einen darauf registrierten Client zu senden, musste ich mir doch selbst eine Lösung zu diesem Thema einfallen lassen.
Grund für diesen Wunsch war, möglichst alle Dienste nur noch über eigene Server laufen zu lassen und auf Drittanbieter (wie z.B. NMA) zu verzichten. Natürlich funktioniert das Ganze auch mit XMPP-Servern von Drittanbietern (z.B. jabber.org).

Was brauchen wir:

- Homematic CCU
- Installiertes CUxD-Addon
- einen XMPP/Jabber-Server
- ein oder zwei Benutzerzugänge (JID) auf diesem Server
- eine Zeile Script
- aktiviertes mod_post_msg Modul (Prosody) oder mod_http_message (ejabberd) auf dem XMPP/Jabber-Server (Serverbetreiber fragen)

Jetzt geht es los:

Zuerst wird im CUx-Daemon unter dem Punkt "Geräte" ein neues Gerät angelegt.
Hierzu wählt man unter CUxD-Geräte verwalten in der Zeile "CUxD Gerätetyp" den Gerätetyp "System" aus. Unter Funktion stellt man "EXEC" ein. Als Geräte-Icon sollte die "Fernbedienung 19 Tasten" eingestellt sein und unter Control "Taster".
Dann drückt man auf "Gerät auf CCU erzeugen!" und wartet, bis das Gerät angelegt ist.

Jetzt wechselt man zur CCU-WebUI (Homematic-WebUI). Dort geht man zum Geräte-Posteingang und legt das Gerät auch noch an, damit die CCU weiß, daß es mit dem Gerät 'sprechen' soll. Hierbei sollte man sich die Geräteadresse merken (bei mir CUX2801002).

Um nun eine Nachricht an den XMPP-Server zu senden benötigen wir noch im entsprechenden Programm ein Script mit folgendem Inhalt:

dom.GetObject("CUxD.CUX2801002:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl http://xmpp-server:5280/msg/empfaenger@xmpp-server -u absender@xmpp-server:passwort -H 'Content-Type: text/plain' -d 'test' ");

Folgende Angaben sind zu ändern:

xmpp-server = Die Adresse des XMPP-Server (also z.B. jabber.org)
empfaenger@xmpp-server = die Empfängeradresse (JID)
absender@xmpp-server:passwort = die Absenderadresse (JID) mit entsprechendem Passwort für den Zugang
'test' = die Nachricht, die verschickt werden soll (die ' ' nicht vergessen)

Fertig! :lol:
Zuletzt geändert von BCS2005 am 07.12.2015, 20:02, insgesamt 1-mal geändert.
cacatum non est pictum...

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Homematic und XMPP/Jabber

Beitrag von blackhole » 07.12.2015, 19:45

Gut gemacht! :)

kafisc
Beiträge: 131
Registriert: 08.09.2015, 15:14
Hat sich bedankt: 18 Mal
Danksagung erhalten: 4 Mal

Re: Homematic und XMPP/Jabber

Beitrag von kafisc » 06.06.2016, 13:04

Vielen Dank BCS2005. Hat mit deiner Anleitung super funktioniert.
Ich verwende Debian 8 mit Prosody und das "mod_post_msg" Modul.
Würde sich hier auch der Wert einer Variable übergeben lassen? So wie bei Telegram?

Besten Dank im Voraus
kafisc

Benutzeravatar
BCS2005
Beiträge: 5
Registriert: 07.12.2015, 18:06
Wohnort: Hannover
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Homematic und XMPP/Jabber

Beitrag von BCS2005 » 06.06.2016, 14:01

Hallo Kafisc,

ja, das geht.

Hier ein Beispiel für eine Systemvariable "Außentemperatur":

var xyaussen = dom.GetObject("Außentemperatur").State();
dom.GetObject("CUxD.CUX2801002:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl http://xmpp-server:5280/msg/empfaenger@xmpp-server -u absender@xmpp-server:passwort -H 'Content-Type: text/plain' -d '" # xyaussen #"'");

Ich hoffe Dir damit geholfen zu haben. :D
cacatum non est pictum...

kafisc
Beiträge: 131
Registriert: 08.09.2015, 15:14
Hat sich bedankt: 18 Mal
Danksagung erhalten: 4 Mal

Re: Homematic und XMPP/Jabber

Beitrag von kafisc » 06.06.2016, 14:57

Hallo BCS2005,

besten Dank. Das ist genau was ich gesucht habe. Funktioniert 1A. Ich habe aktuell noch Probleme mit Umlauten.
Hast du zufällig eine Idee, wie der ich den folgenden Fehler beheben kann (siehe Anhang)?

Beste Grüße & vielen Dank im Voraus
kafisc
Dateianhänge
Screenshot_2016-06-06-14-55-45_resized.png
Umlaute (Übersicht)

Benutzeravatar
BCS2005
Beiträge: 5
Registriert: 07.12.2015, 18:06
Wohnort: Hannover
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Homematic und XMPP/Jabber

Beitrag von BCS2005 » 06.06.2016, 15:28

Hallo Kafisc,

das Problem konnte ich auch noch nicht (ohne größeren Aufwand) lösen.
Grund für die Nichtdarstellung der Umlaute ist Curl. Leider kann man dort auch keinen Zeichensatz (mit charset) übergeben. Curl selbst nutzt scheinbar nur die UTF-8-Codierung. Dort sind Umlaute anders codiert als in einer ISO-Codierung. Ich habe mir damit geholfen, daß ich alle Meldungen statt mit ÄÖÜ mit AE, OE und UE ausgebe.

Schöne Grüße....

BCS2005

P.S.: Solltest Du noch einen XMPP-Server suchen, um Deine Meldungen zu versenden, kannst Du gern meinen nutzen. Zu finden unter: http://bcs2005.net/
Kannst Dir dort direkt aus Conversations oder jedem anderen Programm einen JID anlegen.
Habe dort auch verschiedene Transports angelegt (z.B. zu ICQ & AIM).
Zuletzt geändert von BCS2005 am 17.11.2016, 06:44, insgesamt 2-mal geändert.
cacatum non est pictum...

kafisc
Beiträge: 131
Registriert: 08.09.2015, 15:14
Hat sich bedankt: 18 Mal
Danksagung erhalten: 4 Mal

Re: Homematic und XMPP/Jabber

Beitrag von kafisc » 06.06.2016, 16:09

Hallo BCS2005,

vielen Dank für Rückmeldung und das Angebot. Ich habe bereits selbst Prosody auf einer viertuellen Maschine laufen.
Für's Erste reicht mir das. Eine Idee wäre evtl. den curl-Aufruf in ein tcl- oder sh-Skript zu packen (zu kapseln). Die Idee habe ich zufällig in einem anderen Beitrag aufgeschnappt.

Viele Grüße
kafisc

linuxuser
Beiträge: 122
Registriert: 03.08.2022, 20:57
System: CCU
Hat sich bedankt: 57 Mal

Re: Homematic und XMPP/Jabber

Beitrag von linuxuser » 22.08.2022, 20:50

Bitte gestattet mir eine Anfängerfrage, vermutlich trivial.

Ich bin bis zum Code gekommen:
jabber1.png
und danach sehe ich:
jabber3.png
Nun geht es um den angepassten Code:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801002:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl http://xmpp-server:5280/msg/empfaenger@xmpp-server -u absender@xmpp-server:passwort -H 'Content-Type: text/plain' -d 'test' "); 
Die Anpassung ist klar, aber wie teste ich in einem einfachen Beispiel ob es funktioniert?

Zur Verfügung steht zB ein Fenstersenso zum testen,

Testszenario:
Fenster offen, sende an jabber-Adresse1, wenn zu and Adresse2.

Muss ich da beim Web-UI der ccu3 unter Programme und Verknüpfungen was anlegen?

cmjay
Beiträge: 2393
Registriert: 19.09.2012, 10:53
System: CCU
Wohnort: Jottweedee
Hat sich bedankt: 251 Mal
Danksagung erhalten: 352 Mal

Re: Homematic und XMPP/Jabber

Beitrag von cmjay » 22.08.2022, 21:02

Die Anpassung ist klar, aber wie teste ich in einem einfachen Beispiel ob es funktioniert?
Unter "Programme und Verknüpfungen" gibt es unten den Button "Skript testen". Dort dein Skript eintragen und auf "Ausführen" klicken. Dann siehst du ob das Skript manuell ausgeführt richtig funktioniert.
Es kann leider nicht ganz ausgeschlossen werden, dass ich mich irre.
HmIP muss leider draussen bleiben. in Ausnahmefällen erlaubt
ACHTUNG! Per Portweiterleitung aus dem Internet erreichbare CCU-WebUI ist unsicher! AUCH MIT PASSWORTSCHUTZ! Daher: Portweiterleitung deaktivieren!

linuxuser
Beiträge: 122
Registriert: 03.08.2022, 20:57
System: CCU
Hat sich bedankt: 57 Mal

Re: Homematic und XMPP/Jabber

Beitrag von linuxuser » 22.08.2022, 23:17

Hmmh, da kommt gar nichts.

Ich gebe da zb bei Eingabe das ein

Code: Alles auswählen

WriteLine("Hallo Welt!");
und die Ausgabe wird angezeigt:

Gebe ich genau das ein:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801002:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl http://xmpp-server:5280/msg/empfaenger@xmpp-server -u absender@xmpp-server:passwort -H 'Content-Type: text/plain' -d 'test' "); 
natürlich auf die persönlichen Daten geändert, passiert bei Ausgabe gar nichts und es gibt auch keine Nachricht am Handy.

Ich gehe davon aus, dass ich nichts weiter vorher unternehmen muss, bevor idh den Code absende.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“