Fenster Push-Meldung verbessern mit dem Name vom Aktor

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Sn0west
Beiträge: 35
Registriert: 28.09.2019, 23:25
Hat sich bedankt: 2 Mal

Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Sn0west » 25.04.2020, 11:19

Hallo zusammen,

Ich habe seit 6 Monaten einen Fenster Skript aktiv.

Ich habe zwei Programme erstellt ("Pgm_Fensterkontakte" und "Pgm_Push_Fensterkontakte"). "Pgm_Fensterkontakte" schaut welche Fenster offen sind und ggf. in die Variable Wertliste ("sv_Ueberwachung_Fensterkontakte") schreibt ob etwas offen ist oder nicht.

Das zweite Programm ("Pgm_Push_Fensterkontakte") schaut sich diese SystemVariable an und schickt mir einen Push mit HMPocketControl.

Soweit alles gut und es funktioniert!

Ich würde gerne zwei Sachen ändern,

erstens, nur ein Programm haben mit Fensterkontrolle und im gleichen Programm die Push Funktion. Wie geht das?

zweitens, wäre es sehr Praktisch, der Name vom Fenster im Push zu lesen, dass offen ist. Ich bekomme teilweise 3-4 Push und alle sind gleich.

Code: Alles auswählen

!Variable Fenster 15min geoeffnet setzen, wenn Fenster immer noch geoeffnet
var fensterstatus = dom.GetObject('sv_Ueberwachung_Fensterkontakte').Value();
if ( fensterstatus == 1) { dom.GetObject('sv_Ueberwachung_Fensterkontakte').State(2); }
Variable:
HM_Fenster_Variable.png
Fenster Überwachung
HM_Fenster_Uebwerwachung.png
Für den Screenshot habe ich ein paar Aktoren entfernt, es sind aber ca. 20 Fenster und Türen

Push
HM_Fenster_Push.png
Mein System ist ein Rasperymatic auf ein Asusboard
Firmware Version 3.47.22.20191130
Tür und Fenster Aktoren sind:
- HMIP-SWDO
- HmIP-SWDM
- HmIP-SWDO-I

Herzlichen Danke für eure Hilfe
Zuletzt geändert von Sn0west am 29.04.2020, 10:05, insgesamt 1-mal geändert.

Benutzeravatar
Black
Beiträge: 5472
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Black » 25.04.2020, 11:32

Nicht für Ungut, aber...

Software von fremden Seiten = Der Author dieser dort veröffentlichten Software sollte dann auch für seine publizierten Werke den Support übernehmen

Diese Seiten, die von Clicks bzw eingeblendeter Werbung Einnahmen generieren, sollten den support nicht auf Foren abwälzen, deren Mitglieder in ihrer Freizeit versuchen unendgeldlich anderen zu helfen.


jm2c

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Sn0west
Beiträge: 35
Registriert: 28.09.2019, 23:25
Hat sich bedankt: 2 Mal

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Sn0west » 25.04.2020, 12:54

Stimmt da hast du völlig recht... entschuldige diese faux pas...das war nicht meine Absicht.

Soll ich mein Eintrag anpassen oder gar löschen?
Ich bräuchte trotzdem Unterstützung von euch.

Sn0west
Beiträge: 35
Registriert: 28.09.2019, 23:25
Hat sich bedankt: 2 Mal

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Sn0west » 29.04.2020, 10:53

Ich bin meinem Ziel etwas näher gekommen. Und zwar mit Hilfe vom HomeMatic Forum.

Hier bekomme ich den Name von offenen Fenstern und schreibe sie in einer Variabel:
viewtopic.php?f=26&t=25517&start=60#p301186

Hier kann ich den Inhalt der Variabel auslesen und per Push schicken:
viewtopic.php?f=53&t=54105&hilit=pocket ... 10#p538733

Ich habe es so umgesetzt bzw. angepasst:
Programm:
Screen Shot 2020-04-29 at 10.28.01.png
Systemvariabel (hier wird geschrieben ob ein Fenster offen ist bzw. der Status ändert von 0 (geschlossen) auf 1 sobald ein Fenster offen ist und 2 sobald ein Fenster länger als 15 Minuten.
Screen Shot 2020-04-29 at 10.28.43.png
Im Script unten liegt mein Problem, da möchte ich eigentlich, dass er mir ein Push schickt wenn die Variabel "fensterstatus" auf zwei umstellt. Dies sollte aber erst nach 15 Minuten der Fall sein. Im moment schickt er mir immer einen Push, auch wenn das Fenster innerhalb von 15 Minuten geschlossen wird. Wenn das Fenster geschlossen wird, möchte ich kein Push erhalten wenn es innerhalb dieser gegeben Zeit ist.

Erster Script:

Code: Alles auswählen

! Variable Fenster 15min geoeffnet setzen, wenn Fenster immer noch geoeffnet
var fensterstatus = dom.GetObject('sv_Ueberwachung_Fensterkontakte').Value();

if ( fensterstatus == 1)
  {
    dom.GetObject('sv_Ueberwachung_Fensterkontakte').State(2); 
  }


! Push mit TFK Variable einfügen

object tfk_name = dom.GetObject("SV_Name_TFK_offen").Value();  
if (tfk_name)
{ 
string nachricht = "Fenster offen" #dom.GetObject("SV_Name_TFK_offen").Value();
}
else
{string nachricht = "Alle Fenster sind geschlossen.";}
dom.GetObject(ID_SYSTEM_VARIABLES).Get("pocketControlPushMessage").State(nachricht);
WriteLine(nachricht);
Der zweite Script ist copiert von Alchy, danke dafür!!

Code: Alles auswählen

! alle Fenstersensoren / HMW-Sen-SC-12-DR / Winmatic / Keymatic / Funk-Neigungssensor in einem bestimmten Gewerk/ Favoriten u.a. durchsuchen
! und Ausgabe in Variable oder per pushover, telegram oder per Mail oder Ansage Home24 Mediaplayer
! v1.42 (c) by Alchy
! https://homematic-forum.de/forum/viewtopic.php?f=26&t=25517&p=301186#p301186
Im Push sind alle offenen Fenster zu sehen, auch diejenige die nicht 15 Minuten öffnungsdauer überschreiten. Schöner wäre näturlich, das ich per offenen Fenster, dass länger als 15 Minuten offen ist einen Push erhalte. Aber ich gebe mir im moment zufrieden mit einer einfacheren Lösung.

Also nochmals in Kurz:
Wie schalte ich den Push aus wenn alle Fenster geschlossen sind bzw. weniger als 15 Minuten offen waren. Da möchte ich kein Push erhalten.

Herzlichen Dank für eure Hilfe
Zuletzt geändert von alchy am 30.04.2020, 22:36, insgesamt 1-mal geändert.
Grund: Scriptcopy gelöscht

Sn0west
Beiträge: 35
Registriert: 28.09.2019, 23:25
Hat sich bedankt: 2 Mal

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Sn0west » 30.04.2020, 14:48

Wenn ich die else Bedingung entferne, dann pusht er nicht mehr.

Hütte
Beiträge: 746
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 32 Mal
Danksagung erhalten: 75 Mal

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Hütte » 04.05.2020, 18:23

Du must aus deinem SONST-Zweig einen SONST-WENN-Zweig machen, in dem du dann alle Fensterkontakte auf geschlossen prüfst. Dadurch werden deine beiden Variablen auch sofort auf "geschlossen" gesetzt. Denn in deiner aktuellen Variante aus deinem Screenshot wird das Programm nicht mehr getriggert, wenn du das letzte Fenster schließt.

Sn0west
Beiträge: 35
Registriert: 28.09.2019, 23:25
Hat sich bedankt: 2 Mal

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Sn0west » 05.05.2020, 11:18

Danke für deine Antwort Hütte,

Ich habe es nun so umgesetzt, aber jetzt bekomme ich überhaupt kein push mehr.
Die Variabeln werden korrekt befüllt.

Es scheint so, dass mein Programm nicht bis zum Schluss ausgeführt wird. Somit vermute ich, dass die Reihenfolge nicht stimmt.
Screen Shot 2020-05-05 at 11.08.20.png
Ich habe den Push nun am Schluss genommen, sobald die variabel "fensterstatus" den Wert 2 hat, sollte er mir ein push schicken. Das geht aber nicht automatisch. Wenn ich den Code mauel auslöse, dann funtkioniert es.

Code: Alles auswählen

var fensterstatus = dom.GetObject('sv_Ueberwachung_Fensterkontakte').Value();

! Push mit TFK Variable einfügen

! object tfk_name = dom.GetObject("SV_Name_TFK_offen").Value();  
if (fensterstatus == 2)
{ 
string nachricht = "Fenster offen" #dom.GetObject("SV_Name_TFK_offen").Value();
}
else
{string nachricht = "Alle Fenster sind geschlossen.";}
dom.GetObject(ID_SYSTEM_VARIABLES).Get("pocketControlPushMessage").State(nachricht);
WriteLine(nachricht);

Sn0west
Beiträge: 35
Registriert: 28.09.2019, 23:25
Hat sich bedankt: 2 Mal

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Sn0west » 09.05.2020, 00:24

Ich habe x verschiedene Varianten versucht aber irgendwie kriege ich es nicht hin.

Wie sieht es aus mit dem sonst wenn?

Sn0west
Beiträge: 35
Registriert: 28.09.2019, 23:25
Hat sich bedankt: 2 Mal

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Sn0west » 12.05.2020, 07:35

Mache ich da ein Denkfehler?
Ein wenig Hilfe wäre super :roll:

Problem ist, er pusht immer, auch wenn das Fenster innerhalb von 15 Minuten geschlossen wird. Das brauche ich nicht. Nur ein Push wenn ein oder mehrere länger als 15 Minuten offen sind.

Dankeschön

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: Fenster Push-Meldung verbessern mit dem Name vom Aktor

Beitrag von Baxxy » 12.05.2020, 09:28

Sn0west hat geschrieben:
12.05.2020, 07:35
Ein wenig Hilfe wäre super
versuche mal folgenden Scriptschnippsel... aber nur im ersten DANN, das SONST WENN muss weg

Code: Alles auswählen

! Variable Fenster 15min geoeffnet setzen wenn Fenster immer noch geoeffnet, und Push schicken
var fensterstatus = dom.GetObject(ID_SYSTEM_VARIABLES).Get("sv_Ueberwachung_Fensterkontakte").Value();
string nachricht = "Fenster offen" #dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV_Name_TFK_offen").Value();
  if ( fensterstatus == 1)
  {
    dom.GetObject(ID_SYSTEM_VARIABLES).Get("sv_Ueberwachung_Fensterkontakte").State(2);
    dom.GetObject(ID_SYSTEM_VARIABLES).Get("pocketControlPushMessage").State(nachricht);
    WriteLine(nachricht);
  }
Grüße
Baxxy

Antworten

Zurück zu „RaspberryMatic“