Hi Thorsten, war mein Fehler. Dein Skript funktionert mit einer seltsamen Einschränkung (daher dachte ich es würde nicht funktioneren):dtp hat geschrieben: ↑09.11.2020, 09:55Versuch's mal damit:
Hoffe, es funktioniert.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(); }
Gruß,
Thorsten
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