Howto - zentrales Push-Nachrichten-Programm zPNP
Moderator: Co-Administratoren
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.0
Okay - kein Stress...
Gesendet vom Mobiltelefon .... Rechtschreibfehler ggf. durch 'T9'
Gesendet vom Mobiltelefon .... Rechtschreibfehler ggf. durch 'T9'
Grüße
al-79
--------------------------------------------
361 Kanäle in 84 Geräten und 32 CUxD-Kanäle in 2 CUxD-Geräten
--------------------------------------------
al-79
--------------------------------------------
361 Kanäle in 84 Geräten und 32 CUxD-Kanäle in 2 CUxD-Geräten
--------------------------------------------
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1
EDIT: Problem hat sich erledigt. Der Startbeitrag konnte wieder editiert werden. Danke.
Leider kann ich meinen Startbeitrag im Moment nicht editieren, da ich stets eine Fehlermeldung der SQL-Datenbank erhalte.
Hat jemand einen Tipp für mich?
Gruß,
Thorsten
Leider kann ich meinen Startbeitrag im Moment nicht editieren, da ich stets eine Fehlermeldung der SQL-Datenbank erhalte.
Hat jemand einen Tipp für mich?
Gruß,
Thorsten
Zuletzt geändert von dtp am 02.10.2017, 07:32, insgesamt 1-mal geändert.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1
EDIT: Problem hat sich erledigt. Der Startbeitrag konnte wieder editiert werden. Danke.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1
Hallo,
ich bin neu hier im Forum; lese allerdings schon seit drei Jahren fleissig mit
Telegram-Push lief bei mir vorher schon sehr gut. Allerdings gestückelt in einzelnen Programmen.
Habe heute zPNP v2.1 mit Telegram ausprobiert; was soll ich sagen: Super, funktioniert alles.
Bis ich einen zweiten User angelegt habe...
Leider bekommt immer nur die erste chat-ID eine Nachricht; Habe Testweise mal die ID-Positionen getauscht; dann geht die Nachricht an die andere Nummer; aber immer nur an die erste ID.
Prio ist bei beiden auf -2
CCU FW ist auf 2.29.22
Cux-D auf 1.11a
Habe ich was übersehen oder vergessen?
Hier mal das Script:
Besten Dank vorab
homie
ich bin neu hier im Forum; lese allerdings schon seit drei Jahren fleissig mit
Telegram-Push lief bei mir vorher schon sehr gut. Allerdings gestückelt in einzelnen Programmen.
Habe heute zPNP v2.1 mit Telegram ausprobiert; was soll ich sagen: Super, funktioniert alles.
Bis ich einen zweiten User angelegt habe...
Leider bekommt immer nur die erste chat-ID eine Nachricht; Habe Testweise mal die ID-Positionen getauscht; dann geht die Nachricht an die andere Nummer; aber immer nur an die erste ID.
Prio ist bei beiden auf -2
CCU FW ist auf 2.29.22
Cux-D auf 1.11a
Habe ich was übersehen oder vergessen?
Hier mal das Script:
Code: Alles auswählen
! Push-Nachrichten per Telegram senden
! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282
! Version 2.1, Autor: dtp
! ACHTUNG: Dieses Skript benötigt eine CCU-Firmware ab Version 2.29.22
! +++++ User-Daten +++++
! In den nachfolgenden Listen werden die User-Daten durch "xx|" eingeleitet und durch EINEN Leerschritt voneinander getrennt.
string HMinfoList = "01|31xxxxx02:AAGxxxxxxxxxxxxxxxxxxxxxxxxxxxxbZA"; ! API-Schlüssel (Bot-Token) für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
string HMwarnungList = ""; ! optionale API-Schlüssel (Bot-Token) für Warnmeldungen
string HMalarmList = ""; ! optionale API-Schlüssel (Bot-Token) für Alarmmeldungen
string chatIdList = "01|44xxxxx08 02|32xxxxx30"; ! Chat-IDs der User. Beispiel: "01|xxxxxxxxx 02|xxxxxxxxx"
string prioMinList = "01|-2 02|-2"; ! 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;..."), default: alle
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Deklaration weiterer Variablen +++++
string message; string HMinfo; string HMwarnung; string HMalarm;
string pushService = "alle"; string userStr; string chatId; string prioMin;
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;Telegram"); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{
if(svObject.ValueList().Find("Telegram") == -1){svObject.ValueList(svObject.ValueList() + ";Telegram");}
pushService = svObject.ValueList().StrValueByIndex(";", svObject.Value());
}
}
! +++++ Push-Nachrichten erzeugen und versenden ++++
if((pushService == "alle") || (pushService == "Telegram") || (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();
! ----- Umwandlung von HTML-Color-Tags in HMTL-Fettdruck-Tags -----
message = message.Replace("</font>", "[/b]");
while(message.Find("color=") > 0){
message = message.Replace("<font color=" # message.Substr(message.Find("color=") + 6, message.Find(">") - message.Find("color=") + 5), "[b]");
}
message = message.Replace("[", "<"); message = message.Replace("]", ">");
! ----- Absenden der Push-Nachrichten -----
foreach(HMinfo, HMinfoList.Split(" ")){
! Werte zuordnen
userIndex = HMinfo.Substr(0, 2).ToInteger(); userStr = HMinfo.Substr(0, 3);
HMinfo = HMinfo.Substr(3, HMinfo.Length()-3);
startIndex = chatIdList.Find(userStr).ToInteger();
if(startIndex != -1){
chatId = chatIdList.Substr(startIndex+3, chatIdList.Length()-1);
chatId = chatId.Substr(0, chatId.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 senden
if(prio == -2){
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#HMinfo#"/sendMessage -d text='"#message#"' -d chat_id="#chatId#" -d parse_mode=html -d disable_notification=1");
}
if((prio == -1) || (prio == 0)){
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#HMinfo#"/sendMessage -d text='"#message#"' -d chat_id="#chatId#" -d parse_mode=html");
}
! Warnmeldungen senden
if(prio == 1){
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#HMwarnung#"/sendMessage -d text='"#message#"' -d chat_id="#chatId#" -d parse_mode=html");
}
! Alarmmeldungen senden
if(prio == 2){
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#HMalarm#"/sendMessage -d text='"#message#"' -d chat_id="#chatId#" -d parse_mode=html");
}
}
}
}
}
homie
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1
Hallo homie,
so kann das auch nicht gehen:
Du musst es schon so machen, wie es direkt dahinter beschrieben steht, also mit zusäztlichem Leerschritt und "02|" statt "02:":
Ich zitiere mal aus dem Eingangsposting:
Thorsten
so kann das auch nicht gehen:
Code: Alles auswählen
string HMinfoList = "01|31xxxxx02:AAGxxxxxxxxxxxxxxxxxxxxxxxxxxxxbZA"; ! API-Schlüssel (Bot-Token) für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
Code: Alles auswählen
string HMinfoList = "01|31xxxxx 02|AAGxxxxxxxxxxxxxxxxxxxxxxxxxxxxbZA"; ! API-Schlüssel (Bot-Token) für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
Gruß,Dazu gibt es eine so genannte Master-Liste, die die durch Leerzeichen getrennten Keys für jeden User enthalten. Jedem Key ist dabei ein Identifyer "xx|" vorangetellt. Wenn man also nur einen User hat, trägt man jeweils nur einen Key "01|+++key1+++" ein. Hat man zwei User, trägt man zwei Keys "01|+++key1+++ 02|+++++key2+++++" ein, die durch ein Leerzeichen getrennt sind. Bei drei Usern sind es drei Keys und so weiter. Achtung, es darf nur ein einziges Leezeichen zwischen den Keys eingetragen sein.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1
Hi,
Sorry das war doof geschrieben, das ganze ist nur ein API-Key, habe nur zwischendurch die Zeichen nicht "ge-xt"...
Eigentlich sollte es so aussehen:
string HMinfoList = "01|31xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbZA"; ! API-Schlüssel (Bot-Token) für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
Und während ich das schreibe, bemerke ich, dass User 2 damit gar keinen Bot hat [emoji85]. Wollte alles mit einem Bot machen, habe aber übersehen für User 2 den API-Key einzutragen...
Vielen Dank für die schnelle Antwort.
Andere Frage: Wie stelle ich es an, dass nur ein bestimmter User benachrichtigt wird?
Z.B. die Fenster-Warnung nur an das Handy zu senden, welches als letztes das Haus verlässt.
Bei Pushover gibt es ja die SV "Gerät"
Für Telegram habe ich nichts derartiges gefunden...
Gruß Homie
Sorry das war doof geschrieben, das ganze ist nur ein API-Key, habe nur zwischendurch die Zeichen nicht "ge-xt"...
Eigentlich sollte es so aussehen:
string HMinfoList = "01|31xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbZA"; ! API-Schlüssel (Bot-Token) für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
Und während ich das schreibe, bemerke ich, dass User 2 damit gar keinen Bot hat [emoji85]. Wollte alles mit einem Bot machen, habe aber übersehen für User 2 den API-Key einzutragen...
Vielen Dank für die schnelle Antwort.
Andere Frage: Wie stelle ich es an, dass nur ein bestimmter User benachrichtigt wird?
Z.B. die Fenster-Warnung nur an das Handy zu senden, welches als letztes das Haus verlässt.
Bei Pushover gibt es ja die SV "Gerät"
Für Telegram habe ich nichts derartiges gefunden...
Gruß Homie
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1
Da gibt's auch bisher nichts. Müsste ich mir mal Gedanken zu machen. Man könnte z.B. in Abhängigkeit einer weiteren Systemvariablen die Prioritätenschwellen der User so ändern, dass nur einzelne von Ihnen eine Push-Nachricht bekommen. Das aber nur mal "aus der Hüfte geschossen".homie35 hat geschrieben: Für Telegram habe ich nichts derartiges gefunden...
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1
Hallo Thorsten,
kannst du mir evtl. Pushsafer Version 1.6 zur Verfügung stellen, weil ich noch mit Firmware 2.27.8 unterwegs bin.
Besten Dank
Gruß
Kai
kannst du mir evtl. Pushsafer Version 1.6 zur Verfügung stellen, weil ich noch mit Firmware 2.27.8 unterwegs bin.
Besten Dank
Gruß
Kai
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1
Hallo Kai,
hier noch die Version 1.6 der zPNS-xx
Gruß,
Thorsten
hier noch die Version 1.6 der zPNS-xx
Gruß,
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.