Seite 131 von 133

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V4.4

Verfasst: 02.07.2021, 08:14
von dtp
Servicemeldungen V3.2.3 hochgeladen.

Batterieanzeige für HmIP-SLO von 2 x AAA auf 2 x AA geändert.

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V4.4

Verfasst: 25.07.2021, 18:50
von SabineT
Gibt es eine Möglichkeit, LowBat-Meldungen von virtuellen Devices (Gruppen, also die INT... Devices) auszulassen? Die LowBat-Meldung kommt da ja ohnehin beim betroffenen physischen Gerät, also z.B. Thermostat oder Fensterkontakt.

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V4.4

Verfasst: 26.07.2021, 08:10
von dtp
Dafür gibt es die lokalen Variablen "exDevicesList" und "exDeviceTypesList".

In der unter "svServicesListPrev" angelegte Systemvariablen ist eine Liste aller Servicemeldungen enthalten, die zuletzt erzeugt wurden. Diese Nomenklatur einfach übernehmen für "exDevicesList" bzw. "exDeviceTypesList", um die nicht gewünschten Servicemeldungen auszufiltern.

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V4.4

Verfasst: 26.07.2021, 08:45
von SabineT
Ah, danke für den Hinweis!
So genau hatte ich das Script bisher nicht angeschaut. Hab jetzt mal in "exDeviceTypesList" als Wert "HmIP-HEATING" eingetragen.
Muss mir das im Hinterkopf behalten, falls ich mal eine weitere Type ausschließen will oder einzelne Devices (dann natürlich in "exDevicesList" eingetragen).

Re: Howto - zentrales Push-Nachrichten-Programm zPNP

Verfasst: 06.02.2022, 08:50
von Mechaniker
Guten Morgen,
das zPNP ist wirklich toll und macht manches einfacher. Danke für die Arbeit und die Weiterentwicklung. Seit dem Umstieg auf die CCU3 habe ich folgende Fehlermeldung beim versenden von Push-Nachrichten über Pushover.

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. 
Ich habe es mit neu anlegen des zPNP und der Variablen bereits probiert, hat keine Änderung gebracht. Die Fehlermeldung wird immer beim versenden einer Push-Nachricht erzeugt, die Nachrichten über Pushover kommen aber alle wir bisher an. Kann mir jemand einen Tipp geben wo ich suchen kann? Danke!
VG
Mechaniker

Re: Howto - zentrales Push-Nachrichten-Programm zPNP

Verfasst: 10.02.2022, 23:00
von Mechaniker
Guten Abend, als Ergänzung zur Fehlermeldung noch das Programm und die Skripte:
Programm das den Fehler/Error auslöst:
Screenshot 2022-02-10 225114.png
Die Skripte dazu:

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("");}
  }
}
2. Skript:

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("");
  }
}
Hat einer eine Idee odeer ist die Fehlermeldung bei Euch auch vorhanden? Wie gesagt, der Versand der Nachrichten klappt ja, nur die Fehlermeldung in der Log-Datei verstehe ich nicht. Bin für einen Tipp oder Erklärung Dankbar :D

Re: Howto - zentrales Push-Nachrichten-Programm zPNP

Verfasst: 11.02.2022, 19:54
von dtp
Ich muss mir das mal in Ruhe ansehen. Derzeit ist es bei mir aber leider etwas turbulent. Daher bitte etwas Geduld.

Gruß,

Thorsten

Re: Howto - zentrales Push-Nachrichten-Programm zPNP

Verfasst: 11.02.2022, 22:15
von Mechaniker
Hallo Thorsten, danke für die Rückmeldung. Kein Stress, es läuft ja und ist ein Hobby. VG Michael

Re: Howto - zentrales Push-Nachrichten-Programm zPNP

Verfasst: 31.03.2022, 20:47
von FuFrank
Hallo Mechaniker,

seit dem Firmwareupdate der CCU3 auf 3.63.8 sind bei mir die Fehler im syslog weg.

Gruß FuFrank

Re: Howto - zentrales Push-Nachrichten-Programm zPNP

Verfasst: 03.04.2022, 18:24
von Mechaniker
Hallo FuFrank, danke für die Info. Habe es gerade ausprobiert, bei mir sind ebenfalls keine Einträge mehr seit dem Update auf 3.63.8. Damit gelöst, wobei mich es interessieren würde wie es zustande gekommen ist. VG Michael