Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V4.4
Verfasst: 02.07.2021, 08:14
Heimautomation mit ELV HomeMatic und FHZ Funk-Hauszentralen
https://homematic-forum.de/forum/
Code: Alles auswählen
Feb 6 08:01:10 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: ! Push-Nachrichten per Pushover senden ! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282 ! Version 4.4.7, Autor: dtp ! HINWEIS: nicht vorhandene Systemvariablen werden automatisch mit erstmaligem Aufruf dieses Skripts angelegt ! und nicht mehr verwendete werden mit setzen von '= "";' automatisch gelöscht ! ACHTUNG: darauf achten, dass svPushText, svPushTestRef, svPushUserList und svPushImage hier und im Referenzskript ! SetPushTextRef.hsc identisch gesetzt sind. Zudem muss dir dortige lokale Variabel delay > delay sein. ! +++++ User-Daten +++++ ! In den nachfolgenden Listen die User-Daten durch "xx|" einleiten und durch EINEN Leerschritt voneinander trennen. string keyList = "Michael|xxxxKey1xxxx"; ! API-Basisschlüssel. Beispiel: "Empfänger01|xxxxKey1xxxx Empfänger02|xxKey2xx" string HMinfoList = "Michael|xxxxKey1xxxx"; ! API-Schlüssel für Info-Meldungen.
Code: Alles auswählen
! Push-Nachrichten per Pushover senden
! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282
! Version 4.4.7, Autor: dtp
! HINWEIS: nicht vorhandene Systemvariablen werden automatisch mit erstmaligem Aufruf dieses Skripts angelegt
! und nicht mehr verwendete werden mit setzen von '= "";' automatisch gelöscht
! ACHTUNG: darauf achten, dass svPushText, svPushTestRef, svPushUserList und svPushImage hier und im Referenzskript
! SetPushTextRef.hsc identisch gesetzt sind. Zudem muss dir dortige lokale Variabel delay > delay sein.
! +++++ User-Daten +++++
! In den nachfolgenden Listen die User-Daten durch "xx|" einleiten und durch EINEN Leerschritt voneinander trennen.
string keyList = "Michael|XXXXXXXXXXXXXKey"; ! API-Basisschlüssel. Beispiel: "Empfänger01|xxxxKey1xxxx Empfänger02|xxKey2xx"
string HMinfoList = "Michael|XXXXXXXXXXXXXKey"; ! API-Schlüssel für Info-Meldungen. Beispiel: "Empfänger01|xxxxKey1xxxx Empfänger02|xxKey2xx"
string HMwarnungList = "Michael|XXXXXXXXXXXXXKey"; ! optionale API-Schlüssel für Warnmeldungen
string HMalarmList = "Michael|XXXXXXXXXXXXXKey"; ! optionale API-Schlüssel für Alarmmeldungen
string prioMinList = "Michael|-2"; ! Prioritäten, ab der die User Nachrichten erhalten sollen. Beispiel: "Empfänger01|-2 Empfänger02|0"
! +++++ Dauer in Sekunden, innerhalb der keine identischen Push-Nachrichten gesendet werden sollen +++++
integer stopRepeat = 0;
! +++++ Verzögerung zum Versenden von Bildern in Sekunden +++++
integer delay = 3; ! muss kleiner sein, als der in SetPushTextRef gesetzte Verzögerungswert
! +++++ Nachrichten auf mehrere Teilnachrichten aufteilen +++++
integer msgLength = 950; ! Länge der Teilnachrichten in Zeichen, default: 950
integer msgInterval = 2; ! Dauer zwischen zwei aufainenderfolgenden Nachrichten in Sekunden, default: 2
integer maxNumMsgs = 10; ! Maximale Anzahl aufeinander folgender Nachrichten, default: 10
boolean msgListInvert = true; ! Teilnachrichten invertieren (ja: true, nein: false)
! +++++ Namen der zwingend benötigten Systemvariablen +++++
string svPushText = "CCU SV Push Text"; ! Text der aktuell zu übertragenden Push-Nachricht, Voreinstellung: "CCU SV Push Text"
string svPushTextRef = "CCU SV Push Text Ref"; ! Text der vorherigen Push-Nachricht als Referenz, Voreinstellung: "CCU SV Push Text Ref"
! +++++ Namen der optionalen Systemvariablen (auf "" setzen, wenn nicht benötigt) +++++
string svPushPrio = "CCU SV Push Prio"; ! Prioritäten der Push-Nachrichten, Voreinstellung: "CCU SV Push Prio"
string svPushService = "CCU SV Push Dienst"; ! Push-Dienste, Voreinstellung: "CCU SV Push Dienst"
string svPushImage = "CCU SV Push Bild"; ! Link auf ein anzufügendes Bild (z.B. "CCU SV Push Bild"), Voreinstellung: "CCU SV Push Bild"
string svPushUserList = ""; ! Empfängerlist für die Push-Nachrichten (z.B. "CCU SV Push Empfängerliste"), Voreinstellung: ""
string svPushoverSound = "CCU SV Pushover Sound"; ! Sound der Nachricht (z.B. "CCU SV Pushover Sound"), Voreinstellung: "CCU SV Pushover Sound"
string svPushoverTitle = ""; ! Titel der Nachricht (z.B. "CCU SV Pushover Titel"), Voreinstellung: ""
string svPushoverDevice = ""; ! Pushover-Gerät (z.B. "CCU SV Pushover Gerät"), Voreinstellung: ""
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Deklaration weiterer Variablen +++++
string message; string key; string HMinfo; string HMwarnung; string HMalarm; string prioMin;
string messagesList = ""; string messageTrc; string gttnHtmlPosList = ""; string lwtnHtmlPosList = "";
string pushService = "alle"; string pushUserList = ""; string userStr; string seperator = "|";
string title = ""; string image = ""; string sound = "pushover"; string device = ""; string svName;
integer prio = 0; integer startIndex; integer diff; integer sendFlag = 1; integer cnt; integer charCnt; integer delayIt;
integer spaceChrPos = 0; integer lineFeedPos = 0; integer trcPos = -1; integer noGttnHtmlPos; integer noLwtnHtmlPos;
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(svPushUserList){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushUserList);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushUserList); svObject.DPInfo("Empfängerliste für die Push-Nachrichten"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{pushUserList = svObject.Value();}
}
else{
foreach(svName, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedNames()){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svName);
if(svObject.DPInfo() == "Empfängerliste für die Push-Nachrichten"){dom.DeleteObject(svObject);}
}
}
if(svPushImage){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushImage);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svPushImage); svObject.DPInfo("Link für ein zu sendendes Bild"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{image = svObject.Value();}
}
else{
foreach(svName, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedNames()){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svName);
if(svObject.DPInfo() == "Link für ein zu sendendes Bild"){dom.DeleteObject(svObject);}
}
}
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 = svObject.Value();}
}
else{
foreach(svName, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedNames()){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svName);
if(svObject.DPInfo() == "Sound der Pushover-Nachricht"){dom.DeleteObject(svObject);}
}
}
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 = svObject.Value();}
}
else{
foreach(svName, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedNames()){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svName);
if(svObject.DPInfo() == "Titel der Pushover-Nachricht"){dom.DeleteObject(svObject);}
}
}
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 = svObject.Value();}
}
else{
foreach(svName, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedNames()){
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svName);
if(svObject.DPInfo() == "Gerät für Pushover-Nachricht"){dom.DeleteObject(svObject);}
}
}
! +++++ Push-Nachrichten erzeugen und versenden ++++
if((pushService == "alle") || (pushService.Contains("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){
! ----- Umwandlung Farbstrings in Farbcodes -----
message = message.Replace("orange", "#ffa500");
message = message.Replace("royalblue", "#4169e1");
message = message.Replace("yellowgreen", "#9acd32");
! ----- Aufteilen einer msgLength überschreitenden Push-Nachricht in mehrere Teilnachrichten -----
cnt = 1;
if(msgLength < 50){msgLength = 50;}
if(message.Length() > msgLength){
while((message.Length() >= msgLength) && (cnt <= maxNumMsgs)){
messageTrc = message.Substr(0, msgLength).Trim(" ");
charCnt = messageTrc.Length() - 1;
while(charCnt >= 0){
if((messageTrc.Substr(charCnt, 1)).Contains(">")){gttnHtmlPosList = gttnHtmlPosList#charCnt#";";}
if((messageTrc.Substr(charCnt, 2)).Contains(" >")){if(gttnHtmlPosList.Contains(charCnt + 1)){gttnHtmlPosList = gttnHtmlPosList.Replace(charCnt#";", "");}}
if((messageTrc.Substr(charCnt, 1)).Contains("<")){lwtnHtmlPosList = lwtnHtmlPosList#charCnt#";";}
if((messageTrc.Substr(charCnt, 2)).Contains("< ")){if(lwtnHtmlPosList.Contains(charCnt)){lwtnHtmlPosList = lwtnHtmlPosList.Replace(charCnt#";", "");}}
if((messageTrc.Substr(charCnt, 2)).Contains("\n")){if(charCnt >= lineFeedPos){lineFeedPos = charCnt;}}
if((messageTrc.Substr(charCnt, 1)).Contains(" ")){if(charCnt >= spaceChrPos){spaceChrPos = charCnt;}}
charCnt = charCnt - 1;
}
gttnHtmlPosList = gttnHtmlPosList.RTrim(";"); noGttnHtmlPos = web.webGetValueListCount(gttnHtmlPosList);
lwtnHtmlPosList = lwtnHtmlPosList.RTrim(";"); noLwtnHtmlPos = web.webGetValueListCount(lwtnHtmlPosList);
if((noGttnHtmlPos == noLwtnHtmlPos) && (noGttnHtmlPos.Mod(2) != 0)){
trcPos = lwtnHtmlPosList.StrValueByIndex(";", 0).ToInteger();
if(trcPos == 0){trcPos = gttnHtmlPosList.StrValueByIndex(";", 0).ToInteger() + 1;}
}
elseif((noGttnHtmlPos < noLwtnHtmlPos) && (noLwtnHtmlPos.Mod(2) == 0)){
trcPos = lwtnHtmlPosList.StrValueByIndex(";", 1).ToInteger();
}
elseif(gttnHtmlPosList.StrValueByIndex(";", 0).ToInteger() == (messageTrc.Length() - 1)){trcPos = msgLength - 1;}
elseif(noGttnHtmlPos < noLwtnHtmlPos){
trcPos = lwtnHtmlPosList.StrValueByIndex(";", 0).ToInteger();
if(trcPos == 0){trcPos = msgLength - 1;}
}
else{trcPos = -1;}
if((trcPos == -1) && (lineFeedPos > 0)){trcPos = lineFeedPos + 1;}
elseif((trcPos == -1) && (spaceChrPos > 0)){trcPos = spaceChrPos + 1;}
elseif(trcPos == -1){trcPos = msgLength - 1;}
message = message.Substr(trcPos, message.Length() - trcPos).Trim();
messageTrc = messageTrc.Substr(0, trcPos);
if(!((messageTrc.Find("<") == 0) && (messageTrc.Find(">") == trcPos) && (noGttnHtmlPos == 1) && (noLwtnHtmlPos == 1))){
if(msgListInvert){messagesList = "Teilnachricht "#cnt#" von cnt.\n"#messageTrc#"\t"#messagesList;}
else{messagesList = messagesList#"\tTeilnachricht "#cnt#" von cnt.\n"#messageTrc;}
cnt = cnt + 1;
}
gttnHtmlPosList = ""; lwtnHtmlPosList = ""; lineFeedPos = 0; spaceChrPos = 0; trcPos = -1;
}
if(message.Length() >= 1){
if(message.Length() > msgLength){message = message.Substr(0, msgLength - 8).Trim()#" ABBRUCH";} else{message = message.Trim();}
if(msgListInvert){messagesList = "Teilnachricht "#cnt#" von cnt.\n"#message#"\t"#messagesList;}
else{messagesList = messagesList#"\tTeilnachricht "#cnt#" von cnt.\n"#message;}
}
}
else{messagesList = message;}
messagesList = messagesList.Replace("cnt", cnt);
! ----- UTF-8-Codierung -----
messagesList = messagesList.ToUTF8();
! ----- Parameter für Bildübertragung -----
if(image){image = "@"#image;}
else{delay = 0;}
delayIt = delay;
! ----- Absenden der Push-Nachrichten -----
foreach(key, keyList.Split(" ")){
userStr = key.Substr(0, key.Find(seperator)+1).Trim();
if((pushUserList.Contains(userStr.Substr(0, userStr.Length()-1))) || (pushUserList == "") || (prio == 2)){
key = key.Replace(userStr, "").Trim();
startIndex = HMinfoList.Find(userStr).ToInteger();
if(startIndex != -1){
HMinfo = HMinfoList.Substr(startIndex+userStr.Length(), HMinfoList.Length()-1);
HMinfo = HMinfo.Substr(0, HMinfo.Find(" "));
} else{HMinfo = "";}
startIndex = HMwarnungList.Find(userStr).ToInteger();
if(startIndex != -1){
HMwarnung = HMwarnungList.Substr(startIndex+userStr.Length(), HMwarnungList.Length()-1);
HMwarnung = HMwarnung.Substr(0, HMwarnung.Find(" "));
} else{HMwarnung = HMinfo;}
startIndex = HMalarmList.Find(userStr).ToInteger();
if(startIndex != -1){
HMalarm = HMalarmList.Substr(startIndex+userStr.Length(), HMalarmList.Length()-1);
HMalarm = HMalarm.Substr(0, HMalarm.Find(" "));
} else{HMalarm = HMinfo;}
startIndex = prioMinList.Find(userStr).ToInteger();
if(startIndex != -1){
prioMin = prioMinList.Substr(startIndex+userStr.Length(), prioMinList.Length()-1);
prioMin = prioMin.Substr(0, prioMin.Find(" "));
} else{prioMin = -2;}
cnt = 0;
foreach(message, messagesList){
if(cnt > 0){image = ""; delayIt = delayIt + msgInterval;}
if(prio >= prioMin){
if((prio == -2) || (prio == -1) || (prio == 0)){! ----- Informationsmeldungen -----
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("/usr/bin/curl -s -k -F token='"#HMinfo#"' -F user='"#key#"' -F device='"#device#"' -F title=' "#title#"' -F message=' "#message#"' -F attachment='"#image#"' -F priority='"#prio#"' -F sound='"#sound#"' -F html=1 https://api.pushover.net/1/messages.json", delayIt * 1000, false);
}
elseif(prio == 1){! ----- Warnmeldungen -----
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("/usr/bin/curl -s -k -F token='"#HMwarnung#"' -F user='"#key#"' -F device='"#device#"' -F title=' "#title#"' -F message=' "#message#"' -F attachment='"#image#"' -F priority='"#prio#"' -F sound='"#sound#"' -F html=1 https://api.pushover.net/1/messages.json", delayIt * 1000, false);
}
elseif(prio == 2){! ----- Alarmmeldungen -----
(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("/usr/bin/curl -s -k -F token='"#HMalarm#"' -F user='"#key#"' -F device='"#device#"' -F title=' "#title#"' -F message=' "#message#"' -F attachment='"#image#"' -F priority='"#prio#"' -F sound='"#sound#"' -F html=1 -F retry=30 -F expire=120 https://api.pushover.net/1/messages.json", delayIt * 1000, false);
}
}
cnt = cnt + 1;
}
}
delayIt = delay;
}
! ----- Zurücksetzen eines vergebenenen Titels -----
if(title){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverTitle)).State("");}
}
}
Code: Alles auswählen
! Zurücksetzen einiger für das zPNP verwendeter Systemvariablen und ggf. Löschen eines übertragenen Bilds
! WICHTITG: Dieses Skript ist OBLIGATORISCH und NACH ALLEN zPNS-xx im zPNP verwendet werden!
! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282
! Version 4.1.2, Autor: dtp
! Achtung: darauf achten, dass svPushText, svPushTestRef, svPushUserList und svPushImage im zPNS-xx
! identisch gesetzt sind.
! ++++++ Löschen eines zu übertragenden Bildes (nur wirksam, wenn svPushImage gesetzt) +++++
boolean deleteImage = true; ! true: Bild löschen, false: Bild nicht löschen
integer delay = 5; ! Verzögerungszeit in Sekunden (muss größer sein, als der in den zPNS-xx gesetze Verzögerungswert)
! +++++ 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
string svPushUserList = "CCU SV Push Empfängerliste"; ! Empfängerlist für die Push-Nachrichten gem. zPNS-xx
! +++++ Namen der optionalen Systemvariablen (auf "" setzen, wenn nicht benötigt) +++++
string svPushImage = "CCU SV Push Bild"; ! Link auf ein anzufügendes Bild (z.B. "CCU SV Push Bild"), default: ""
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Deklaration weiterer Variablen +++++
string image = "";
! +++++ Löschzeit in Millisekunden umwandeln +++++
delay = delay * 1000;
! +++++ Zurücksetzen der Systemvariablen und Löschen eines vorhandenen Bilds +++++
if((dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushImage))){
! ----- Push-Nachrichten-Referenz setzen -----
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef)).State((dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).Value(), delay, false);
! ----- Bild löschen -----
if(deleteImage){
image = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushImage)).Value();
if(image){dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("rm '"#image#"'", delay, false);}
}
! ----- URL des übertragenen Bilds löschen -----
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushImage)).State("", delay, false);
! ----- Empfängerliste zurücksetzen -----
if((dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushUserList))){
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushUserList)).State("", delay, false);
}
}
else{
! ----- Push-Nachrichten-Referenz setzen -----
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef)).State((dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).Value());
! ----- Empfängerliste zurücksetzen -----
if((dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushUserList))){
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushUserList)).State("");
}
}