Howto - zentrales Push-Nachrichten-Programm zPNP

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

Moderator: Co-Administratoren

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von dtp » 17.11.2018, 11:59

Diese "^M"-Meldungen in deinem Log sehen mir verdächtig nach einem Copy-&-Paste-Problem aus. Welchen Editor hast du da verwendet?

Übrigens die Meldung "Nachricht gesendet" ist kein Hinweis, das die Nachricht tatsächlich gesendet wurde. Sie besagt lediglich, dass das entsprechende Skript fehlerfrei durchlaufen wurde. Fehler in nachfolgenden Skripten werden dadurch nicht erfasst.

Bis dann,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

RouvenE
Beiträge: 207
Registriert: 11.06.2013, 19:54

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von RouvenE » 17.11.2018, 12:07

Ich habe die Textdatei mit dem Script im Texteditor am Mac geöffnet und mit Copy&paste in der CCU eingetragen.

Wie, wenn nicht mit copy&paste, soll ich es sonst machen? Habe noch CotEditor und Textmate, falls das einen Unterschied macht.

Und, pushover bietet user keys und api/token keys. Da war ich mir nicht sicher, welcher wo im Script einzutragen wäre. User key ggf nur bei API Basis Key?

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von dtp » 17.11.2018, 12:52

Das war meine Befürchtung. Ich selbst nutze kein Mac OS X. Daher kenne ich da auch keinen adäquaten Editor. Selbst verwende ich immer Notepad++ unter Windows. Vielleicht kann da jemand einen Tipp geben, der Mac OS X verwendet. Das Problem sind die Line Feeds und Carriage Returns, die manche Editoren selbständig in txt-Files hinzufügen. Das muss man umgehen.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

RouvenE
Beiträge: 207
Registriert: 11.06.2013, 19:54

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von RouvenE » 17.11.2018, 12:55

Ok, die Text-Files enstammen ja direkt Deinem Beitrag - ich teste einen anderen Editor. Aber das Einfügen in die CCU kann ich ja so oder so nicht anders als mit copy&paste machen... eine Script-Datei lässt sich ja nicht einbinden.

Kannst Du mir bitte noch sagen, wo Dein Script des User-Key und wo den API/TOKEN-Key von pushover erwartet ?

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von Xel66 » 17.11.2018, 13:05

RouvenE hat geschrieben:
17.11.2018, 12:55
Kannst Du mir bitte noch sagen, wo Dein Script des User-Key und wo den API/TOKEN-Key von pushover erwartet ?
Öhhhmmm, vielleicht unter "User-Daten" in dem Bereich, den Du in Deinem Posting vom 16.11.2018, 18:58 selbst gepostet hast!?

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

RouvenE
Beiträge: 207
Registriert: 11.06.2013, 19:54

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von RouvenE » 17.11.2018, 15:51

Ok, ich habe die Scripte mit CotEditor aus Deiner Textdatei ausgeschnitten und im CCU-Programm eingefügt...

Leider erhalte ich noch keine Pushes... das Syslog von CuxD sagt:

Code: Alles auswählen

Nov 17 14:54:40 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =getValue Params = {"000855699C3D1B:7","ENERGY_COUNTER"} result= [faultCode:-5,faultString:"Unknown Parameter value for value key: ENERGY_COUNTER"] [iseXmlRpc.cpp:2605]
Nov 17 14:54:40 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: CallXmlrpcMethod failed [iseXmlRpc.cpp:1432]
Nov 17 14:54:40 ccu3-webui local0.err ReGaHss: Error: IseHssDP::ReadValue: CallGetValue failed; sVal = 0.000000 [iseDOMdpHSS.cpp:130]
Nov 17 14:54:40 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =getValue Params = {"000855699C3D1B:7","ENERGY_COUNTER_OVERFLOW"} result= [faultCode:-5,faultString:"Unknown Parameter value for value key: ENERGY_COUNTER_OVERFLOW"] [iseXmlRpc.cpp:2605]
Nov 17 14:54:40 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: CallXmlrpcMethod failed [iseXmlRpc.cpp:1432]
Nov 17 14:54:40 ccu3-webui local0.err ReGaHss: Error: IseHssDP::ReadValue: CallGetValue failed; sVal = 0 [iseDOMdpHSS.cpp:130]
Nov 17 14:54:50 ccu3-webui daemon.info cuxd[277]: INIT 'xmlrpc_bin://127.0.0.1:1999' '1783'
Nov 17 15:40:04 ccu3-webui local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: ! Push-Nachrichten per Pushover senden ! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282 ! Version 3.0.3, Autor: dtp ! ACHTUNG: dieses Skript benötigt eine CCU-dirmware ab Version 2.29.22 ! Hinweis: nicht vorhandene Systemvariablen werden automatisch mit erstmaligem Aufruf dieses Skripts angelegt   ! +++++ User-Daten +++++ ! In den nachfolgenden Listen die User-Daten durch "xx|" einleit
n und durch EINEN Leerschritt voneinander trennen.  string keyList = "01|GEHEIM"; ! API-Basisschlüssel. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx" string HMinfoList = "01|GEHEIM"; ! API-Schlüssel für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx" string HMwarnungList = "GEHEIM"; ! optionale API-Schlüssel für Warnmeldungen string HMalarmList = "GEHEIM"; ! optionale API-Schlüssel für Alarmmeldungen string p
ioMinList = "01|-2
Nov 17 15:40:23 ccu3-webui local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: ! Push-Nachrichten per Pushover senden ! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282 ! Version 3.0.3, Autor: dtp ! ACHTUNG: dieses Skript benötigt eine CCU-dirmware ab Version 2.29.22 ! Hinweis: nicht vorhandene Systemvariablen werden automatisch mit erstmaligem Aufruf dieses Skripts angelegt   ! +++++ User-Daten +++++ ! In den nachfolgenden Listen die User-Daten durch "xx|" einleit
n und durch EINEN Leerschritt voneinander trennen.  string keyList = "01|GEHEIM"; ! API-Basisschlüssel. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx" string HMinfoList = "01|GEHEIM"; ! API-Schlüssel für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx" string HMwarnungList = "GEHEIM"; ! optionale API-Schlüssel für Warnmeldungen string HMalarmList = "GEHEIM"; ! optionale API-Schlüssel für Alarmmeldungen string p
ioMinList = "01|-2
Hier kann doch bestimmt jemand den Fehler erkennen, oder ? Die CCU-Script-Prüfung meldet selbst keinen Fehler. Aber, warum zeigt das Log soviel Text vom Script ? Wie macht Ihr es unter Windows ? Text-Datei vom Script auf, Copy&Paste in den CCU-Script-Editor ?

Eine Vermutung: Es läuft piVCCU im Container auf dem Raspi. Hier wurden die Schnittstellen scheinbar umgebogen, gebridged.
Ich hatte einen anderen Dienst neben dem Container installiert, der erst dann lief, als ich sagte, er solle nicht auf eth0, sondern auf alle Schnittstellen lauschen. Ist das ein Hinweis ?

Und, beim pushover-Script habe ich es so verstanden:

Code: Alles auswählen

! In den nachfolgenden Listen die User-Daten durch "xx|" einleiten und durch EINEN Leerschritt voneinander trennen. 
string keyList = "01|Hier trage ich den USER KEY!!! ein"; ! API-Basisschlüssel. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
string HMinfoList = "01|Hier trage ich den API TOKEN/KEY vom Homematic-Kanal ein"; ! API-Schlüssel für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
string HMwarnungList = "Hier trage ich den API TOKEN/KEY OHNE "01|"vom Homematic-Warn-Kanal ein"; ! optionale API-Schlüssel für Warnmeldungen
string HMalarmList = "Hier trage ich den API TOKEN/KEY OHNE "01|" vom Homematic-Alarm-Kanal ein"; ! optionale API-Schlüssel für Alarmmeldungen
string prioMinList = "01|-2"; ! Prioritäten, ab der die User Nachrichten erhalten sollen. Beispiel: "01|-2 02|0"
Ist das so korrekt ?

RouvenE
Beiträge: 207
Registriert: 11.06.2013, 19:54

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von RouvenE » 17.11.2018, 17:26

So, ich habe nun Windows anstatt macOS gestartet und die Skripte mit Notepad++ per copy&paste übertragen.

Jetzt meckert das Syslog längst nicht mehr soviel... es verbleibt nun bei einem Fehler, dass er nicht schreiben kann.
Kann hier vielleicht jemand helfen ?

Code: Alles auswählen

Nov 17 17:33:45 ccu3-webui daemon.info cuxd[700]: write_proxy /var/cache/cuxd_proxy.ini (700 /usr/local/addons/cuxd/ 2.1.0 3.37.8 0)
Nov 17 17:33:45 ccu3-webui daemon.info cuxd[700]: add interface 'CUxD'
Nov 17 17:33:45 ccu3-webui daemon.info cuxd[700]: write interface(1) 'BidCos-RF' to /usr/local/etc/config/InterfacesList.xml
Nov 17 17:33:45 ccu3-webui daemon.info cuxd[700]: write interface(2) 'VirtualDevices' to /usr/local/etc/config/InterfacesList.xml
Nov 17 17:33:45 ccu3-webui daemon.info cuxd[700]: write interface(3) 'HmIP-RF' to /usr/local/etc/config/InterfacesList.xml
Nov 17 17:33:45 ccu3-webui daemon.info cuxd[700]: write interface(4) 'CUxD' to /usr/local/etc/config/InterfacesList.xml
Nov 17 17:33:45 ccu3-webui daemon.err cuxd[700]: query_CCU_device_params() is NULL
Nov 17 17:33:47 ccu3-webui daemon.err cuxd[700]: sendbinrpc(127.0.0.1:1999) - write() Connection refused
Nov 17 17:33:51 ccu3-webui daemon.info cuxd[700]: INIT 'xmlrpc_bin://127.0.0.1:1999' '1783'

Code: Alles auswählen

Nov 17 17:33:45 ccu3-webui daemon.err cuxd[700]: query_CCU_device_params() is NULL
Nov 17 17:33:47 ccu3-webui daemon.err cuxd[700]: sendbinrpc(127.0.0.1:1999) - write() Connection refused
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: XmlRpc: Error in XmlRpcClient::writeRequest: write error (error 111). [iseXmlRpc.h:281]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute failed; method =getValue Params = {"000855699C3D1B:7","ENERGY_COUNTER"} result= nil [iseXmlRpc.cpp:2599]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: CallXmlrpcMethod failed [iseXmlRpc.cpp:1432]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseHssDP::ReadValue: CallGetValue failed; sVal = 0.000000 [iseDOMdpHSS.cpp:130]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: XmlRpc: Error in XmlRpcClient::writeRequest: write error (error 111). [iseXmlRpc.h:281]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute failed; method =setValue Params = {"000855699C3D1B:4","STATE",true} result= nil [iseXmlRpc.cpp:2599]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallSetValue: CallXmlrpcMethod failed [iseXmlRpc.cpp:1502]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseHssDP::WriteValue: CallSetValue failed; address = 000855699C3D1B:4 [iseDOMdpHSS.cpp:77]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: XmlRpc: Error in XmlRpcClient::writeRequest: write error (error 111). [iseXmlRpc.h:281]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute failed; method =getValue Params = {"000855699C3D1B:7","ENERGY_COUNTER_OVERFLOW"} result= nil [iseXmlRpc.cpp:2599]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: CallXmlrpcMethod failed [iseXmlRpc.cpp:1432]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseHssDP::ReadValue: CallGetValue failed; sVal = 0 [iseDOMdpHSS.cpp:130]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: XmlRpc: Error in XmlRpcClient::writeRequest: write error (error 111). [iseXmlRpc.h:281]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute failed; method =init Params = {"xmlrpc_bin://127.0.0.1:1999","1008"} result= nil [iseXmlRpc.cpp:2599]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallInit: CallXmlrpcMethod failed [iseXmlRpc.cpp:1204]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: XmlRpcClientThread::ThreadFunction(): failed call init for interface=VirtualDevices [iseRTHss.cpp:163]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: XmlRpc: Error in XmlRpcClient::writeRequest: write error (error 111). [iseXmlRpc.h:281]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute failed; method =init Params = {"xmlrpc_bin://127.0.0.1:1999","1009"} result= nil [iseXmlRpc.cpp:2599]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallInit: CallXmlrpcMethod failed [iseXmlRpc.cpp:1204]
Nov 17 17:33:51 ccu3-webui local0.err ReGaHss: Error: XmlRpcClientThread::ThreadFunction(): failed call init for interface=HmIP-RF [iseRTHss.cpp:163]
Nov 17 17:33:51 ccu3-webui daemon.info cuxd[700]: INIT 'xmlrpc_bin://127.0.0.1:1999' '1783'

RouvenE
Beiträge: 207
Registriert: 11.06.2013, 19:54

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von RouvenE » 18.11.2018, 10:01

Kann denn da niemand helfen? Muss doch einen Grund für den write-error geben.
Gibt es einen anderen Weg für ein zentrales Pushsystem für Servicemeldungen und Alarme?

Kommende Woche wäre ich außer Haus. Da wäre ein Pushsystem für Alarme schon recht beruhigend.

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von dtp » 18.11.2018, 10:46

Die verbleibenden Fehlermeldungen haben nichts mit dem zPNP zu tun. Daher gehe ich da jetzt mal nicht drauf ein.

Zu den Keys. Ich versuche es mal, anhand meiner Pushover-Einstellungen zu erklären.
2018-11-18_10h36_15.png
Du musst den User Key oben rechts in die Zeile

Code: Alles auswählen

string keyList = "01|+++key1+++"; ! API-Basisschlüssel
als "+++key1+++" eintragen.

Dann musst du den Key zumindest einer Applikation in die Zeile

Code: Alles auswählen

string HMinfoList = "01|+++++key1+++++"; ! API-Schlüssel für Info-Meldungen
als "+++++key1+++++" eintragen. Der Key wird dir nach Klick auf den blau hinterlegten Namen in einem neuen Fenster angezeigt.

Hast du keine weiteren Applikationen, lässt du die anderen Schlüssel-Zeilen im zPNS-Po so, wie sie sind.

Jetzt sollte es eigentlich funktionieren. Von den einzelnen HM-Geräten musst du gar nichts im zPNS-Po eintragen.

Bis dann,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

RouvenE
Beiträge: 207
Registriert: 11.06.2013, 19:54

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V3.0

Beitrag von RouvenE » 18.11.2018, 13:23

Hallo Thorsten,

Danke für die Hilfe... soweit ich es verstehe, muss es mit zPNP zusammenhängen. Die Skripte sind 1:1 copy&paste. Die Variablen hatte ich von Hand manuell eingetragen.

Ich kommen drauf, weil... CuXD meldet bei der Initialisierung:

Code: Alles auswählen

Nov 18 09:47:33 ccu3-webui daemon.info cuxd[277]: INIT 'xmlrpc_bin://127.0.0.1:1999' '1783'
Führe ich die Test-Skripte aus, passiert nämlich folgendes:

Code: Alles auswählen

Nov 18 09:47:12 ccu3-webui daemon.warn cuxd[277]: process_rpc_request(127.0.0.1) - illegal XMLRPC(listDevices) request
Nov 18 09:47:13 ccu3-webui daemon.warn cuxd[277]: process_rpc_request(127.0.0.1) - illegal XMLRPC(init) request
Nov 18 09:47:23 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =getValue Params = {"000A55699D7280:1","SMOKE_DETECTOR_ALARM_STATUS"} result= [faultCode:-5,faultString:"Unknown Parameter value for value key: SMOKE_DETECTOR_ALARM_STATUS"] [iseXmlRpc.cpp:2605]
Nov 18 09:47:23 ccu3-webui local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: CallXmlrpcMethod failed [iseXmlRpc.cpp:1432]
Nov 18 09:47:23 ccu3-webui local0.err ReGaHss: Error: IseHssDP::ReadValue: CallGetValue failed; sVal = 0 [iseDOMdpHSS.cpp:130]
Nov 18 09:47:33 ccu3-webui daemon.info cuxd[277]: INIT 'xmlrpc_bin://127.0.0.1:1999' '1783'
Nov 18 09:48:51 ccu3-webui daemon.info ntpd[219]: Listen normally on 5 eth0 [fd00::c82f:e5ff:febf:cdad]:123
Nov 18 09:48:51 ccu3-webui daemon.info ntpd[219]: Listen normally on 6 eth0 [2003:d0:bf27:ea00:c82f:e5ff:febf:cdad]:123
Hier werden "iilegale requests" aufgerufen. Dann plötzlich redet das Log vom Alarm-Status des Rauchmelders... Dachte, beim Test wäre der Rauchmelder irrelevant.

Dein Rauchmelder-Skript habe ich aber auch bereits als eigenes Programm angelegt. Dabei habe ich festgestellt, dass Du dort die Rauchmelder-Gruppe ansprichst, die es ja bei meinen HM-IP-Rauchmeldern gar nicht mehr innerhalb der CCU gibt. Auch wird in Deinem Skript "Rauch erkannt" geprüft, was es ebenfalls beim HM-IP-Detektor nicht mehr gibt. Dort heißt es vielmehr "lokaler Alarm", meine ich. Heißt das nun, dass Dein Skript deshalb aussteigt und keine Nachrichten versendet werden ?

Antworten

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