Howto - zentrales Push-Nachrichten-Programm zPNP

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

Moderator: Co-Administratoren

Shuo
Beiträge: 215
Registriert: 18.09.2014, 23:19
Danksagung erhalten: 6 Mal

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

Beitrag von Shuo » 19.11.2020, 11:41

dtp hat geschrieben:
09.11.2020, 09:55
Versuch's mal damit:

Code: Alles auswählen

! Meldung Fenster/Türen schließen
! Version 2.8, Autor: dtp

! Liste der Gewerke für die Türen- und Fenster-Sensoren (trennen mit "\t")
string tradesList = "Türe\tFenster";

! Listen geöffneter und gekippter Fenster und Türen, die nicht berücksichtigt werden sollen (trennen mit "\t")
string exTiltList = ""; ! gekippte Fenster und Türen
string exOpenList = ""; ! geöffnete Fenster und Türen

! Schlüsselbegriffe von Fenstern und Türen mit Priorität 2 (trennen mit "\t")
string highPrioKeywordsList = "";

! 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 svPushoverSound = "CCU SV Pushover Sound"; ! gem. zPNS-Po, optional

! Name des zentralen Push-Nachrichten-Programms
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

! +++++ Deklaration weiterer Variablen +++++
var device;
string trade; string index; string list = ""; string stateList = ""; string message; string highPrioKeyword; 
integer prio; integer prioMax = -2;

! +++++ Sound für Pushover-Nachricht +++++
if(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushoverSound)).State("alien");}

! +++++ Auslesen der Fenster- und Türenzustände und Erzeugen einer Liste +++++
foreach(trade, tradesList){
  foreach(index, dom.GetObject(ID_FUNCTIONS).Get(trade).EnumUsedIDs()){
    if(dom.GetObject(index).IsTypeOf(OT_CHANNEL)){
      device = dom.GetObject(dom.GetObject(index).Device());
      if(!exTiltList.Contains(device.Name())){
        if((device.HssType() == "HM-Sec-RHS") || (device.HssType() == "HmIP-SRH")){
          if(dom.GetObject(index).DPByHssDP("STATE").Value() == 1){
            list = list#"\n- "#(device.Channel()).Name()#"<font color=orange> gekippt</font>.";
            stateList = stateList#"\t"#dom.GetObject(index).DPByHssDP("STATE").Value();
          }
        }
      }
      if(!exOpenList.Contains(device.Name())){
        if((device.HssType() == "HM-Sec-RHS") || (device.HssType() == "HmIP-SRH")){
          if(dom.GetObject(index).DPByHssDP("STATE").Value() == 2){
            list = list#"\n- "#(device.Channel()).Name()#"<font color=red> offen</font>.";
            stateList = stateList#"\t"#dom.GetObject(index).DPByHssDP("STATE").Value();
          }
        }
        if((device.HssType() == "HM-Sec-SC") || (device.HssType() == "HM-Sec-SC-2") || (device.HssType() == "HM-Sec-SCo") || (device.HssType() == "HMIP-SWDO") || (device.HssType() == "HmIPW-FIO6")){
          if((dom.GetObject(index).DPByHssDP("STATE").Value() == 1) || (dom.GetObject(index).DPByHssDP("STATE").Value() == true)){
            list = list#"\n- "#(device.Channel()).Name()#"<font color=red> offen</font>.";
            stateList = stateList#"\t2";
          }
        }
      }
    }
  }
}

! +++++ Setzen der Priorität in Abhängigkeit vom Zustand der Fenster und Türen sowie der Schlüsselbegriffe +++++
if(stateList.Contains("2")){
  foreach(highPrioKeyword, highPrioKeywordsList){
    if(list.Contains(highPrioKeyword)){prio = 2; if(prio >= prioMax){prioMax = prio;}} 
    else{prio = 1; if(prio >= prioMax){prioMax = prio;}}
  }
}
else{prio = "0"; if(prio >= prioMax){prioMax = prio;}}
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State(prioMax);

! +++++ Erzeugen der Nachricht +++++
if(prio == 2){message = "<font color=red>Achtung, Fenster/Türen schließen!</font>";}
else{message = "<font color=orange>Achtung, Fenster/Türen schließen!</font>";}

if(list != ""){
  message = message#list;
  
  ! +++++ zPNP ausführen +++++
  (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).State(message);
  (dom.GetObject(ID_PROGRAMS).Get(zPNP)).ProgramExecute();
}
Hoffe, es funktioniert.

Gruß,

Thorsten
Hi Thorsten, war mein Fehler. Dein Skript funktionert mit einer seltsamen Einschränkung (daher dachte ich es würde nicht funktioneren):
Wenn ich keine Schlüsselbegriffe eingebe, dann sollte es mit Prio 0 gesendet werden und ich dennoch eine Benachrichtigung und eine Vibration erhalten, richtig?
Im Eingang bei Pushover sehe ich es mit Prio 0. Aber warum bekomme ich keine Benachrichtigung?

Eine Idee?

Und noch eines was mir aufgefallen ist: Es kann in highPrioKeywordsList alles stehen was will und es wird mit Prio 2 geschickt. Findet kein Parsen vom text statt

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) V4.3

Beitrag von dtp » 19.11.2020, 16:51

Shuo hat geschrieben:
19.11.2020, 11:41
Eine Idee?
Ja, da war was unsauber programmiert. :roll: Versuch's mal hiermit:
Zuletzt geändert von dtp am 22.11.2020, 11:13, insgesamt 3-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.

Shuo
Beiträge: 215
Registriert: 18.09.2014, 23:19
Danksagung erhalten: 6 Mal

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

Beitrag von Shuo » 19.11.2020, 17:57

Skript läuft durch, aber keinerlei Meldungen im Eingang von Pushover :(

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) V4.3

Beitrag von dtp » 19.11.2020, 19:50

Bitte noch mal die Version 2.9 testen.
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.

Shuo
Beiträge: 215
Registriert: 18.09.2014, 23:19
Danksagung erhalten: 6 Mal

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

Beitrag von Shuo » 19.11.2020, 20:07

Gleiches Verhalten wie version 2.8
- Falls highPrioKeywordsList leer ist, kommt keine Benachrichtigung (wird aber in Pushover aufgelistet)
- In highPrioKeywordsList kann "bla" stehen und es wird als Prio2 geschickt (vibration etc funktioniert)

Shuo
Beiträge: 215
Registriert: 18.09.2014, 23:19
Danksagung erhalten: 6 Mal

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

Beitrag von Shuo » 21.11.2020, 23:22

Hi Thorsten, konntest was feststellen, oder liegt es an mir?!

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) V4.3

Beitrag von dtp » 22.11.2020, 11:13

Versuch's noch mal hiermit:
Zuletzt geändert von dtp am 25.11.2020, 17:55, 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.

Shuo
Beiträge: 215
Registriert: 18.09.2014, 23:19
Danksagung erhalten: 6 Mal

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

Beitrag von Shuo » 22.11.2020, 11:53

Unverändert. Wie Version 2.8 und 2.9

Mache ich etwas falsch?

Shuo
Beiträge: 215
Registriert: 18.09.2014, 23:19
Danksagung erhalten: 6 Mal

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

Beitrag von Shuo » 25.11.2020, 09:49

Hi Thorsten, kurzes Update.
Nachdem ich den Wert

Code: Alles auswählen

integer prioMax = -2;
auf 0 geändert habe, funktionert es wie es soll.

Das einzige was immer noch nicht geht ist

Code: Alles auswählen

highPrioKeywordsList
. Da kann drin stehen was will und es findet kein parsen statt.

VG

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) V4.3

Beitrag von dtp » 25.11.2020, 12:31

Ich schau's mir heute Abend noch mal an. Hab auch schon eine Idee. ;)
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.

Antworten

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