welches Fenster WAR offen?

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
mazta
Beiträge: 42
Registriert: 27.07.2018, 12:40
Hat sich bedankt: 8 Mal
Danksagung erhalten: 1 Mal

welches Fenster WAR offen?

Beitrag von mazta » 21.05.2020, 09:08

Hi,

ich nutze aktuell folgendes Script, um mir die offenen Fenster bei Verlassen des Hauses anzuzeigen:

Code: Alles auswählen

string message; string now; string present; string status; string msg1; string msg2;
var var_fensterkontakte = dom.GetObject(ID_SYSTEM_VARIABLES).Get("var_Fensterkontakte").Value();

! +++++++++++ Setup Script ++++++++++++++++
string ONLYOPEN= "yes"; ! if yes pushed only the opened sensors
string FUNCTIONS = "Fensterkontakte"; ! which function / room / favorites
boolean DEBUG = true; ! true/false zusaetzliche Ausgabe des Scriptes auf dem Monitor

! +++++ Setzen der Priorität für die Push-Nachricht +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio)).State("0");

!++++++ DONT TOUCH BEHIND THIS LINE +++++++++
string i;
string slist;
integer count = 0;
var sec=dom.GetObject(FUNCTIONS);
if ( (DEBUG == true) && (!sec) ){ WriteLine(" Gewerk nicht vorhanden");quit;}
foreach(i,sec.EnumUsedIDs()) {
string status_new = "unbekannt";
boolean choice = false;
boolean status = false;
var ch = dom.GetObject(i);
if ( ch.IsTypeOf(OT_CHANNEL) ) {
var dev = dom.GetObject(ch.Device());
var chType = ch.HssType();
var devType = dev.HssType();
string room; string id; foreach(id, ch.ChnRoom()) {   var roomi = dom.GetObject(id);   room = room # " "# roomi.Name() ; } 
if ( ( chType == "SHUTTER_CONTACT") || ( chType == "ROTARY_HANDLE_SENSOR") || ( chType == "ROTARY_HANDLE_TRANSCEIVER") ) { choice = true; var status = ch.DPByHssDP("STATE").Value();}
if ( ( devType == "HMW-Sen-SC-12-DR") && ( chType == "SENSOR")  ) { choice = true; var status = ch.DPByHssDP("SENSOR").Value();}
if (choice){
if (status) { count = count +1; }
if (status == 0 ) { status_new = " zu "; }
if (status == 1 ) { status_new = " gekippt "; }
if (status == 2 ) { status_new = " offen "; }

if (ONLYOPEN == "yes")  {
    if (status) { slist=slist # dev.Name() #" - Status: " # status_new #" - im Raum: "#room #"\n"; }
    } else { slist=slist # dev.Name() #" - Status: " # status_new #" - im Raum: "#room #"\n"; }
    }
    }
	if(count > 0) { msg1 = (count #" offen \n" #slist).ToUTF8(); }
	else { msg1 = "Es ist sind alle Fenster geschlossen"; }
}



	
!Überprüfen ob alle Fenster zu sind, dann erst Alarmanlage scharf stellen
if( (count == 0) ) {
	var sirene_scharf = (dom.GetObject(ID_DATAPOINTS)).Get("BidCos-RF.OEQ0491823:4.ARMSTATE").State(2); !Sirene scharf
	dom.GetObject(ID_SYSTEM_VARIABLES).Get("Alarmanlage_aktivieren_zeitverzoegert").State(1); !Alarmanlage zeitverzögert scharf stellen
}

Ich würde es gerne in abgewandelter Form nutzen, um mir bei einem Einbruch das geöffnete Fenster anzuzeigen. Bei der Haustür geht der Alarm z.B. verzögert an. Wenn die Tür dann wieder zu ist, schickt das Script nur, dass keins offen ist.

Wie würdet ihr das lösen, sich das zuletzt geöffnete Fenster schicken zu lassen?

Viele Grüße

Xel66
Beiträge: 6889
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg
Hat sich bedankt: 32 Mal
Danksagung erhalten: 205 Mal

Re: welches Fenster WAR offen?

Beitrag von Xel66 » 21.05.2020, 09:36

DIe Lösung ist, wie bei den vielen vorhandenen Anfragen zu exakt dem gleichen Thema, das verzögerte Setzen einer Systemvariable und das Triggern des Scriptes auf diesen Statuswechsel. Anders wirst Du es kaum hinbekommen, außer Du baust eine Abfrage im Script ein, welche den aktuellen Status verarbeitet und dann ggf. den Sciptlauf abbricht.

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 103 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
253 Programme, 218 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.45.7.20190622
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

alchy
Beiträge: 9538
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 15 Mal
Danksagung erhalten: 214 Mal

Re: welches Fenster WAR offen?

Beitrag von alchy » 21.05.2020, 11:13

Woher ist das Script?.

Alchy

.................... full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

dtp
Beiträge: 8204
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart
Hat sich bedankt: 62 Mal
Danksagung erhalten: 187 Mal

Re: welches Fenster WAR offen?

Beitrag von dtp » 23.05.2020, 07:19

Würde ich so lösen.
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.

mazta
Beiträge: 42
Registriert: 27.07.2018, 12:40
Hat sich bedankt: 8 Mal
Danksagung erhalten: 1 Mal

Re: welches Fenster WAR offen?

Beitrag von mazta » 23.05.2020, 18:52

dtp hat geschrieben:
23.05.2020, 07:19
Würde ich so lösen.
Perfekt, danke! Das kann ich ja direkt mit dem ZPNS so nutzen. Das habe ich mir nämlich gerade eingerichtet :)

Das ist genau das was ich gesucht habe.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“