ich könnte im Moment etwas verzweifeln,
Ich hatte bis letzte Tage noch eine Alte Version des zPNP installiert und wollte jetzt von Telegram auf Pushover umstellen.
Ich habe das Programm komplett neu angelegt! in der Version 2.1.1 von Seite 64.
Was ich noch nicht so recht verstanden habe warum es bei Pushover einen User Key und einen Api Key gibt. Der User Key wird aber irgendwie nicht benötigt oder ich mache etwas falsch.
Anbei mal meine Konfig:
Das CUxD Gerät:
Folgende SV's:
Das Programm:
Die Programm Details;
mit den Scripts:
Ich nutze das Script:
Code: Alles auswählen
! Push-Nachrichten per Pushover senden
! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282
! Version 2.1.2, Autor: dtp
! ACHTUNG: Dieses Skript benötigt eine CCU-Firmware ab Version 2.29.22
! +++++ User-Daten +++++
! In den nachfolgenden Listen die User-Daten durch "xx|" einleiten und durch EINEN Leerschritt voneinander trennen.
string keyList = "01|a7xxxxxxxxxxxxxxxxxxdv"; ! API-Basisschlüssel. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
string HMinfoList = "01|a7xxxxxxxxxxxxxxxxxxdv"; ! API-Schlüssel für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
string HMwarnungList = ""; ! optionale API-Schlüssel für Warnmeldungen
string HMalarmList = ""; ! optionale API-Schlüssel für Alarmmeldungen
string prioMinList = ""; ! Prioritäten, ab der die User Nachrichten erhalten sollen. Beispiel: "01|-2 02|0"
! +++++ Dauer in Sekunden, innerhalb der keine identischen Push-Nachrichten gesendet werden sollen +++++
integer stopRepeat = 10;
! +++++ Namen der zwingend benötigten Systemvariablen +++++
string svPushText = "CCU SV Push Text"; ! Text der aktuell zu übertragenden Push-Nachricht
string svPushTextRef = "CCU SV Push Text Ref"; ! Text der vorherigen Push-Nachricht als Referenz
! +++++ Namen der optionalen Systemvariablen (auf "" setzen, wenn nicht benötigt) +++++
string svPushPrio = "CCU SV Push Prio"; ! Prioritäten der Push-Nachrichten (-2,-1,0,1,2), default: 0
string svPushService = "CCU SV Push Dienst"; ! Push-Dienste ("aus;alle;...")
string svPushoverSound = "CCU SV Pushover Sound"; ! Sound der Nachricht, default: "pushover"
string svPushoverTitle = ""; ! Titel der Nachricht, default: ""
string svPushoverDevice = ""; ! Pushover-Gerät (z.B. "CCU SV Pushover Gerät"), default: ""
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Deklaration weiterer Variablen +++++
string message; string HMinfo; string HMwarnung; string HMalarm; string prioMin;
string pushService = "alle"; string userStr; string key; string title = ""; string sound = "pushover"; string device = "";
integer prio = 0; integer userIndex; integer startIndex; integer diff; integer sendFlag = 1;
object svObject; object svObjectList;
! +++++ Systemvariablen erzeugen bzw. falls vorhanden, auslesen +++++
if(!svPushText){svPushText = "CCU SV Push Text";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushText); svObject.DPInfo("Aktuelle Push-Nachricht"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{message = svObject.Value();}
if(!svPushTextRef){svPushTextRef = "CCU SV Push Text Ref";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushTextRef); svObject.DPInfo("Vorherige Push-Nachricht"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
if(svPushPrio){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushPrio); svObject.DPInfo("Priorität der Push-Nachricht"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtFloat); svObject.ValueSubType(istGeneric); svObject.ValueUnit(""); svObject.ValueMin(-2); svObject.ValueMax(2); dom.RTUpdate(true);
}
else{prio = svObject.Value().ToInteger(); if(prio == 2){stopRepeat = 0;}}
}
if(svPushService){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushService);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushService); svObject.DPInfo("Auswahl des Push-Dienstes"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtInteger); svObject.ValueSubType(istEnum); svObject.ValueList("aus;alle;Pushover"); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{
if(svObject.ValueList().Find("Pushover") == -1){svObject.ValueList(svObject.ValueList() + ";Pushover");}
pushService = svObject.ValueList().StrValueByIndex(";", svObject.Value());
}
}
if(svPushoverSound){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushoverSound); svObject.DPInfo("Sound der Pushover-Nachricht"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{sound = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)).Value();}
}
if(svPushoverTitle){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverTitle);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushoverTitle); svObject.DPInfo("Titel der Pushover-Nachricht"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{title = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverTitle)).Value();}
}
if(svPushoverDevice){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverDevice);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushoverDevice); svObject.DPInfo("Gerät für Pushover-Nachricht"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{device = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverDevice)).Value();}
}
! +++++ Push-Nachrichten erzeugen und versenden ++++
if((pushService == "alle") || (pushService == "Pushover") || (prio == 2)){
! ----- Vermeidung identischer Push-Nachrichten innerhalb stopRepeat Sekunden -----
diff = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).Timestamp().ToInteger() - (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef)).Timestamp().ToInteger();
if(diff < stopRepeat){
if(message == (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef)).Value()){sendFlag = 0;}
}
if(sendFlag == 1){
! ----- Abschneiden zu langer Push-Nachrichten, um das Senden sicherzustellen -----
if(message.Length() > 980){message = message.Substr(0, 980)#"\nMaximale Nachrichtenlänge erreicht!";}
! ----- Umwandlung von Sonderzeichen gem. UTF-8 -----
message = message.ToUTF8(); title = title.ToUTF8();
! ----- Absenden der Push-Nachrichten -----
foreach(key, keyList.Split(" ")){
! Werte zuordnen
userIndex = key.Substr(0, 2).ToInteger(); userStr = key.Substr(0, 3);
key = key.Substr(3, key.Length()-3);
startIndex = HMinfoList.Find(userStr).ToInteger();
if(startIndex != -1){
HMinfo = HMinfoList.Substr(startIndex+3, HMinfoList.Length()-1);
HMinfo = HMinfo.Substr(0, HMinfo.Find(" "));
} else{quit;}
startIndex = HMwarnungList.Find(userStr).ToInteger();
if(startIndex != -1){
HMwarnung = HMwarnungList.Substr(startIndex+3, HMwarnungList.Length()-1);
HMwarnung = HMwarnung.Substr(0,HMwarnung.Find(" "));
} else{HMwarnung = HMinfo;}
startIndex = HMalarmList.Find(userStr).ToInteger();
if(startIndex != -1){
HMalarm = HMalarmList.Substr(startIndex+3, HMalarmList.Length()-1);
HMalarm = HMalarm.Substr(0,HMalarm.Find(" "));
} else{HMalarm = HMinfo;}
startIndex = prioMinList.Find(userStr).ToInteger();
if(startIndex != -1){
prioMin = prioMinList.Substr(startIndex+3, prioMinList.Length()-1);
prioMin = prioMin.Substr(0,prioMin.Find(" "));
} else{prioMin = -2;}
if(prio >= prioMin){
! ----- Informationsmeldungen -----
if((prio == -2) || (prio == -1) || (prio == 0)){
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k -d token='"#HMinfo#"' -d user='"#key#"' -d device='"#device#"' -d title='"#title#"' -d message='"#message#"' -d priority='"#prio#"' -d sound='"#sound#"' -d html=1 https://api.pushover.net/1/messages.json");
}
! ----- Warnmeldungen -----
if(prio == 1){
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k -d token='"#HMwarnung#"' -d user='"#key#"' -d device='"#device#"' -d title='"#title#"' -d message='"#message#"' -d priority='"#prio#"' -d sound='"#sound#"' -d html=1 https://api.pushover.net/1/messages.json");
}
! ----- Alarmmeldungen -----
if(prio == 2){
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k -d token='"#HMalarm#"' -d user='"#key#"' -d device='"#device#"' -d title='"#title#"' -d message='"#message#"' -d priority='"#prio#"' -d sound='"#sound#"' -d html=1 -d retry=30 -d expire=120 https://api.pushover.net/1/messages.json");
}
}
}
}
}
Code: Alles auswählen
! Setzen der Push-Nachrichten-Referenz
! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282
! Version 1.1, Autor: dtp
! +++++ Namen der zwingend benötigten Systemvariablen +++++
string svPushText = "CCU SV Push Text"; ! Text der aktuell zu übertragenden Push-Nachricht gem. zPNS-xx
string svPushTextRef = "CCU SV Push Text Ref"; ! Text der vorherigen Push-Nachricht als Referenz gem. zPNS-xx
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Setzen der Systemvariablen +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef)).State((dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).Value());
Code: Alles auswählen
! Namen der verwendeten Systemvariablen
string svPushText = "CCU SV Push Text"; ! gem. zPNS-xx, obligatorisch
string svPushPrio = "CCU SV Push Prio"; ! gem. zPNS-xx, obligatorisch
string svPushService = "CCU SV Push Dienst"; ! gem. zPNS-xx, optional
string svPushoverSound = "CCU SV Pushover Sound"; ! gem. zPNS-Po, optional
! Name des zentralen Push-Nachrichten-Programms
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch
! +++++ Erzeugen der Test-Nachricht +++++
string message = "<font color=orange>Dies</font> ist eine <font color=green>gewöhnliche</font> Test-Nachricht.";
! +++++ Auswahl des Push-Dienstes +++++
if(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushService)){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushService)).State("1");}
! +++++ Setzen der Priorität für die Push-Nachricht +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State("0");
! +++++ Sound für Pushover-Nachricht +++++
if(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)).State("gamelan");}
! +++++ zPNP ausführen +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).State(message);
(dom.GetObject(ID_PROGRAMS).Get(zPNP)).ProgramExecute();
WriteLine("Nachricht gesendet");
Übersehe ich hier etwas? Ich bekomme auch die Info Nachricht gesendet bei Pushover kommt aber nichts an!
Pushover Übersicht:
Die versendeten Nachrichten sind mit folgendem Script erzeugt worden:
Code: Alles auswählen
!Pushover - Skript by technikkram.net
!------------------------------
!__Pushover Keys
string po_api_user="u2xxxxxxxxxxxxxxxxxxxxxha";
string po_api_token="a7zzzzzzzzzzzzzzzzzzzzzdv";
!__Nachricht
string po_title="Beispieltitel";
string po_message="Beispieltext";
string po_sound="none";
string po_priority="0";
!___Nur benoetigt wenn Prioritaet auf Emergency (2) gesetzt ist
string po_retry="30";
string po_expires="3600";
!___Erlaeuterungen
! Sounds: pushover, bike, bugle, cashregister, classical, cosmic, falling, gamelan, incoming, intermission, magic, mechanical, pianobar, siren, spacealarm, tugboat, alien, climb, persistent, echo, updown, none
!Prioritaeten: 0=Normal; 1=High (AudioVibration auch waehrend quiet hour); 2=Emergency (Meldung Muss bestätigt werden, solange sound/Vibration); -1=Low ; -2=Lowest
! Bei Prio 2: po_retry gibt an (in sekunden), wie hauefig eine Nachricht vom Server geschickt wird (z.B. alle 30s)
! Bei Prio 2: po_expires gibt an (in Sekunden), wie lange nachrichten geschickt werden sollen. Bestätigt der User, stoppt die Benachrichtigung. Beispiel: Alle 30 sekunden wird eine Nachricht geschickt, das passiert eine Stunde lang (1 Stunde = 3600 sekunden).
!------ NICHT MODIFIZIEREN-------
string po_request;
if(po_priority=="2"){
po_request="/usr/local/addons/cuxd/curl -X POST -k -H \"Content-Type: application/x-www-form-urlencoded\" -d \"token=" # po_api_token # "&user=" # po_api_user # "&title=" # po_title # "&priority="# po_priority # "&sound=" # po_sound # "&retry="# po_retry # "&expire=" # po_expires # "&message=" # po_message # "\" https://api.pushover.net/1/messages.json";
}
else{
po_request="/usr/local/addons/cuxd/curl -X POST -k -H \"Content-Type: application/x-www-form-urlencoded\" -d \"token=" # po_api_token # "&user=" # po_api_user # "&title=" # po_title # "&priority="# po_priority # "&sound=" # po_sound # "&message=" # po_message # "\" https://api.pushover.net/1/messages.json";
}
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(po_request);