Signalisieren, dass mindestens ein Fenster geöffnet ist

Begonnen von stobor, 03 Juni 2013, 21:04:03

Vorheriges Thema - Nächstes Thema

stobor

Hallo,
ich möchte eine Lampe leuchten lassen, sobald mindestens ein Fenster geöffnet ist.
Die Fensterkontakte sind wie folgt definiert:

define MAX_0063c3 MAX ShutterContact 0063c3
attr MAX_0063c3 alias KuechenfensterSued
attr MAX_0063c3 fm_name Küchenfenster Süd
attr MAX_0063c3 fm_order 5
attr MAX_0063c3 room MAX

define MAX_006445 MAX ShutterContact 006445
attr MAX_006445 alias Terrassentuer
attr MAX_006445 fm_name Terrassentür
attr MAX_006445 fm_order 4
attr MAX_006445 room MAX
...


Ich prüfe jetzt schon erfolgreich MAX!-Fensterkontakte:

define chkFenster14 notify MAX_06a42d:opened {\
if (Value("alle_Lampen") ne "on") {\
fhem "set alle_Lampen on";;\
}\
}


Wie kann ich denn aber sinnvollerweise über eine Funktion o.ä. alle Fenster abprüfen, und sobald mindestens eines geöffnet ist, die Lampe einschalten? Wie erstellt man solche Funktionen/...?

Danke für eure Hilfe.

Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-113-generic x86_64))  mit CUL V3.2 (FW 1.57 CUL868) für FS20 und CCU3 für HM(IP) + Arduino Mega (Firmata) - FHEM Revision: 29534 - FS20, HM(IP), MQTT, Philips HUE, ModBus

justme1968

schau dir mal strucure in der commandref an.

etas in der art (das ist für den hm fenstergriff sensor. der hat drei zustände wenn es nur open und closed sind entfällt tilted):
define FensterEsszimmer structure Fenster TerrasseLinks TerrasseRechts
attr FensterEsszimmer clientstate_behavior relative
attr FensterEsszimmer clientstate_priority open tilted closed
attr FensterEsszimmer group Fenster

du kannst entweder alle fenster in eine structure stecken oder die fenster jeweils raum weise und dann die räume stockwerks weise zusammen fassen. und dann ein mal alle stockwerke.

wenn du hier suchst findest du auch einige beispele.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Zrrronggg!

Lies dir mal den Artikel "Alarmanlage" im Wiki durch, insbesondere den Teil, wo es um Meldegruppensignalisierung geht. (Meldegruppen LED auf grün, wenn alle Türen eines Bereiches geschlossen sind).
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Petrosilius Zwackelmann

Hier ein Beispiel: Hier habe ich eine kleine Signalleuchte angesteuert (fs20st)falls im Haus ein Fenster geöffnet ist.
Gruß Manuel


### Signalleuchte an wenn Fenster Offen ? ####################################

define signal_Fenster_Offen FS20 1234 59
attr signal_Fenster_Offen model fs20st


define FileLog_signal_Fenster_Offen FileLog ../Verbatim-STORENGO-01/signal_Fenster_Offen-%Y.log signal_Fenster_Offen
attr FileLog_signal_Fenster_Offen logtype text


define weblink_signal_Fenster_Offen weblink fileplot FileLog_signal_Fenster_Offen:fs20:CURRENT
attr weblink_signal_Fenster_Offen label "signal_Fenster_Offen Min $data{min1}, Max $data{max1}, Last $data{currval1}"

define n5_Fenster notify .*:Window.*(Open|Closed) { \
  my $window_state=ReadingsVal("@", "Window", "nA");;\
  my $deftype=$defs{@}{TYPE};;\
  return if ( $deftype ne "CUL_FHTTK" );;\
  if ( $defs{@}{PREVSTATE} ne $window_state ) { \
    my $fhttk_status=FHTTK_status;;\
    my $subject="FHEM: Fenster @ ".$window_state;; \
    if ( $fhttk_status =~ /offen/ ) { \
       if (Value("signal_Fenster_Offen") eq "off") {fhem ("set signal_Fenster_Offen on")} ;;\
       }\
    else { \
       if (Value("signal_Fenster_Offen") eq "on") {fhem ("set signal_Fenster_Offen off")};;\
       }\
   }\
}
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

Zrrronggg!

Wau!

Ich würde ja einfach alle Fenster mit dem Namen "Fenster" anfangen lassen und dann:

define act_on_Fenster notify Fenster.*:open set Lamp on

(Oder was immer der open Statusje nach eingesetztem Gerät ist.)

Zugegeben, das ist vermutlich nur die halbe Miete aber streng genommen das, was Threadowner laut Frage will.
Er hat es nicht gesagt, aber ich nehme an, er meint in Wirklichkeit was anderes, nämlich: Es soll eine Lampe leuchten SOLANGE mindestens eine Fenster offen ist und wenn alle Fenster zu sind, soll die Lampe aus sein.

Dann würde ich sowas machen:

define Fenster_auf notify Fenster.* { if (Value("Fenster_Kueche") eq "closed" && Value("Fenster_WZ") eq "closed" && Value("Fenster_Bad") eq "closed" && Value("Fenster_Schlafzimmer") eq "cloesd") { fhem ("set MeldeLampe off") } else { fhem ("set MeldeLampe on") }}

Das ist natürlich bei 20 Fenstern unpraktisch aber am Ende überwacht man ja doch nur 3-6 Fenster und da geht das gut und ist noch vergleichsweise kurz.

So mache ich es mit meiner Alarmanlage (siehe auch bereits erwähnten Wikiartikel) und das funktioniert 1a.

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL