Auslösen über Bewegungsmelder ignorieren, wenn Lampe manuell angeschaltet wurde

Begonnen von harle, 13 November 2021, 09:38:43

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo harle,

ich glaube, dass du die Frage von Joachim noch nicht ausreichend beantwortet hast.

Beispiel: dein BW und Google Assistant und dein vorhandener(?), manueller(?) Schalter schalten das gleiche Relais - wie soll denn Fhem den Unterschied registrieren? Entweder es gibt für jeden der 3 Schaltmöglichkeiten in irgendeinem Fhem-Device ein Reading, dann lässt sich dein Vorhaben umsetzen.

Denke mal bitte in diese Richtung und schildere genau, was von dem vorhanden ist und auf deine Situation passt.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

harle

Hi Gisbert,

ich denke schon, dass ich es verstanden habe und ich gehe jetzt davon aus, dass FHEM den Unterschied nicht erkennen kann.

Heute schaltet nur der BW und Google Assistant das Relais, aber auch da wird es ja kein Reading geben, dass das Schalten von Google kam.

Was ich sagen wollte war, falls ich das Problem des nicht vorhandenen Readings über einen zusätzlichen, manuellen Schalter umgehen könnte, dann würde ich einen solchen in das System einbinden.

Da wir aber hauptsächlich Gassistant nutzen wird es keine Lösung geben das Relais auf Dauer-An zu lassen, wenn es über eben diesen Assistenten geschaltet wurde, so wie ich es mittlerweile verstanden habe.

kabanett

Hallo harle,
nimm doch in deinem DOIF den Zustand der Lampe bei der Einschaltbedingung
und
den eigenen Zustand des DOIF bei den Ausschaltbedingungen mit auf.

([Bewegungsmelder_Flur:occupancy] eq "true" and isday() eq "0" and [Flur] eq "off") (set Flur on)
DOELSE
([Bewegungsmelder_Flur:occupancy] eq "false" and [$SELF] eq "cmd_1") (set Flur off)


So sollte es nur einschalten wenn die Lampe vorher nicht an war
und nur ausschalten wenn das DOIF es selbst eingeschaltet hat.

Achtung Code ist nur aus der Hüfte geschossen ;)

Gruß
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Gisbert

Hallo harle,

ich hab einen ESP8266 (vermutlich steckt in deiner Gosund Wifi Steckdose auch ein ESP8266), an dem ein Bewegungsmelder und eine Lampe dran hängt (in der Realität noch etwas komplizierter als dein Fall, da es ein Wechselschalter ist).

Tagsüber möchte ich nicht, dass der Bewegungsmelder das Licht einschaltet - verständlich. Andererseits möchte ich manchmal nicht, dass das Licht nach 1~2 Minuten ausgeht.

Um das zu erreichen habe ich ESPEasy am Start zusammen mit sogenannten Rules in ESPEasy.

Tag/Nacht-Unterscheidung mache ich in Fhem in einem DOIF und sende ein Event zum ESP. Auf dieses Event setzt eine Rule auf und setzt ein Dummy in ESPEasy entsprechend (0 oder 1).
Willentlich setze ich die Automatik außer Kraft, indem ich ein weiteres Dummy-Device ändere (0 oder 1), so dass das Ausschalten nach Bewegungsende unterbleibt; der umgekehrte Fall geht auch (d.h. trotz Bewegung kein Licht).

Hier meine Rules:
on Wechselschalter2#Wechselschalter2 do
  if [Relais#Relais]=0
    gpio,14,1
  elseif [Relais#Relais]=1
    gpio,14,0
  endif
endon

on PIR#PIRstate=0 do
  if [detectVcc#stateVcc]=1 and [daylight#day]=0 and [automode#mode]=0 and [Relais#Relais]=0
    gpio,14,1
  elseif [detectVcc#stateVcc]=1 and [daylight#day]=0 and [automode#mode]=0 and [Relais#Relais]=1
    gpio,14,0
  endif
endon

on PIR#PIRstate=1 do
  if [daylight#day]=0
    timerSet,1,40
  elseif [daylight#day]=1
    timerSet,1,20
  endif
endon

on Rules#Timer=1 do
  if [detectVcc#stateVcc]=0 and [PIR#PIRstate]=1 and [automode#mode]=0 and [Relais#Relais]=0
    gpio,14,1
  elseif [detectVcc#stateVcc]=0 and [PIR#PIRstate]=1 and [automode#mode]=0 and [Relais#Relais]=1
    gpio,14,0
  endif
endon

on Einschalten do
  if [detectVcc#stateVcc]=1 and [Relais#Relais]=0
    gpio,14,1
  elseif [detectVcc#stateVcc]=1 and [Relais#Relais]=1
    gpio,14,0
  endif
endon

on Ausschalten do
  if [detectVcc#stateVcc]=0 and [Relais#Relais]=0
    gpio,14,1
  elseif [detectVcc#stateVcc]=0 and [Relais#Relais]=1
    gpio,14,0
  endif
endon

on Tag do
  taskvalueset 6,1,1
  Publish WechselschalterFlurEG_13/daylight/day,1
endon

on Nacht do
  taskvalueset 6,1,0
  Publish WechselschalterFlurEG_13/daylight/day,0
endon

on Auto do
  taskvalueset 7,1,0
  Publish WechselschalterFlurEG_13/automode/mode,0
endon

on noAuto do
  taskvalueset 7,1,1
  Publish WechselschalterFlurEG_13/automode/mode,1
endon


Vielleicht hilft dir dieser Ansatz weiter.
Viele​ Grüße​
Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

betateilchen

Irgendwie bewegen sich alle hinzukommenden Helfer mit ihren Fragen immer weiter weg vom eigentlichen Problem.
Jeder hat irgendwie recht mit seinen Fragen - aber weiterhelfen tut das alles dem Fragesteller nicht.

Ich mach mal Popcorn.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEMAN

Zitat von: betateilchen am 13 November 2021, 18:50:13
Irgendwie bewegen sich alle hinzukommenden Helfer mit ihren Fragen immer weiter weg vom eigentlichen Problem.
Jeder hat irgendwie recht mit seinen Fragen - aber weiterhelfen tut das alles dem Fragesteller nicht.

Ich mach mal Popcorn.
Du warst doch derjenige, der dem TE und mir mit seiner Aussage den Mund wässrig gemacht hat. Also anstatt Popcorn zu kaufen lass uns doch mal teilhaben an Deinem Wissen ;)
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

betateilchen

Zitat von: FHEMAN am 13 November 2021, 18:55:24
Du warst doch derjenige, der dem TE und mir mit seiner Aussage den Mund wässrig gemacht hat. Also anstatt Popcorn zu kaufen

Sorry, dass ich hier nicht 24/7 vor dem PC sitze, um immer innerhalb weniger Sekunden antworten zu können. Wenn ein Thread dann zwischenzeitlich so zerfleddert wurde wie dieser hier, habe ich einfach keine Lust mehr, weil die Erfahrung lehrt, dass sich der Zeitaufwand für eine Rückführung meistens nicht mehr lohnt.

Außerdem kaufe ich kein Popcorn, ich mache das in meiner Popcornmaschine selbst und immer frisch.
Dabei frage ich mich übrigens immer, warum die Menschheit aufgehört hat, herauszufinden, ob man noch andere Dinge durch Explosion besser machen kann als nur das Maiskorn...


--
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

solange der Schaltaktor in der Lage ist, seinen eigenen Zustand an FHEM zu melden, ist die Sache doch recht einfach logisch zu ermitteln.

Wenn der Bewegungsmelder auslöst und die Lampe zu dem Zeitpunkt schon an ist, muss sie auf anderem Weg eingeschaltet worden sein.
In dem Moment würde ich dafür sorgen, dass das notify, das auf den Bewegungsmelder reagiert, den Status des Schaltaktors nicht verändert. Es gibt mehrere mögliche Lösungsansätze, die man beliebig komplex und komfortabel gestalten kann.


Ähnliches Beispiel aus meiner eigenen FHEM Installation:

Bei mir gibt es an der Wohnungstür einen Türsensor, der beim Öffnen das Licht im Flur einschaltet. Dies soll er aber nur tun, wenn die Tür von außen aufgemacht wird. Das wiederum wird dadurch festgestellt, dass die Bewegungsmelder im Flur zu dem Öffnungszeitpunkt keine Bewegung IM Flur festgestellt haben (es ist also niemand innen zur Tür gelaufen, um sie aufzumachen)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

Zitat von: harle am 13 November 2021, 16:11:21
Hi Gisbert,

ich denke schon, dass ich es verstanden habe und ich gehe jetzt davon aus, dass FHEM den Unterschied nicht erkennen kann.

Heute schaltet nur der BW und Google Assistant das Relais, aber auch da wird es ja kein Reading geben, dass das Schalten von Google kam.

Was ich sagen wollte war, falls ich das Problem des nicht vorhandenen Readings über einen zusätzlichen, manuellen Schalter umgehen könnte, dann würde ich einen solchen in das System einbinden.

Da wir aber hauptsächlich Gassistant nutzen wird es keine Lösung geben das Relais auf Dauer-An zu lassen, wenn es über eben diesen Assistenten geschaltet wurde, so wie ich es mittlerweile verstanden habe.

Also "nur" Sprache und BWM.

Ich weiß, jetzt gibt's wieder Haue ;)

Aber wenn du statt den direkten Aktor einen dummy per Sprache steuerst und dann eben ein DOIF (gut ich würde ja ein notify nehmen ;)  ) auf BWM und Sprache machst und eben bei Sprache im DOIF oder im Aktor merkst -> Sprache (so wie mein automatic/manual), dann kann das DOIF (oder notify) das ja abfragen und dann entweder bei BWM was tun oder lassen...

Alternativ: bei Alexa gibt es zusätzlich noch das echodevice, da gibt es ein Reading voice, das könnte man ebenfalls abfragen...
...evtl. gibt es sowas ja bei Google Home auch. Es gibt ja noch das GoogleCast/ChromeCast Device, vielleicht liefert das was...

Und Haue hin oder her: wenn ich etwas per Sprache (nutze Alexa) schalten will, wo ich aber vorher noch Dinge abfrage etc. dann nehme ich dafür entweder einen dummy... 8)

Zitat von: kabanett am 13 November 2021, 16:24:16
Hallo harle,
nimm doch in deinem DOIF den Zustand der Lampe bei der Einschaltbedingung
und
den eigenen Zustand des DOIF bei den Ausschaltbedingungen mit auf.

([Bewegungsmelder_Flur:occupancy] eq "true" and isday() eq "0" and [Flur] eq "off") (set Flur on)
DOELSE
([Bewegungsmelder_Flur:occupancy] eq "false" and [$SELF] eq "cmd_1") (set Flur off)


So sollte es nur einschalten wenn die Lampe vorher nicht an war
und nur ausschalten wenn das DOIF es selbst eingeschaltet hat.

Achtung Code ist nur aus der Hüfte geschossen ;)

Gruß

Ob das mit dem DOIF und self klappt: keine Ahnung.

Bin etwas skeptisch (dachte auch zuerst das ginge bei meinen "echt vorhandenen" Schaltern), weil wenn der BWM "schneller" ist, ok, dann evtl. ist das SELF schon damit gesetzt...
...aber wenn dann Sprache kommt, hmmm. Dann ist Self und somit keine Sprache oder wie ist/war das gedacht...

...bzw. wenn Sprache kam ist dann das SELF?

Ich kenne DOIF halt zu wenig...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: betateilchen am 13 November 2021, 19:15:41
solange der Schaltaktor in der Lage ist, seinen eigenen Zustand an FHEM zu melden, ist die Sache doch recht einfach logisch zu ermitteln.

Wenn der Bewegungsmelder auslöst und die Lampe zu dem Zeitpunkt schon an ist, muss sie auf anderem Weg eingeschaltet worden sein.
In dem Moment würde ich dafür sorgen, dass das notify, das auf den Bewegungsmelder reagiert, den Status des Schaltaktors nicht verändert. Es gibt mehrere mögliche Lösungsansätze, die man beliebig komplex und komfortabel gestalten kann.

Naja aber nur, wenn die Sprache vorher war...
...wenn zuerst Bewegung -> an (notify merkt sich das vielleicht sogar) und dann Sprache?
Was zählt nun?
Weil Sprache schaltet ja den (bereits an Aktor) ja "nur "wieder an...
...und was ist beim Ausschalten?

Wenn keine Bewegung mehr ist?
Die Lampe/Aktor ist ja an aber keiner weiß mehr wodurch? ;)

Soll nun der BWM (also das BWM-notify) ausschalten oder nicht, weil ja evtl. Sprache?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Genau das meinte ich mit "Thread zerfleddern". Schade.

Ich bin hier raus.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

Zitat von: betateilchen am 13 November 2021, 19:27:23
Genau das meinte ich mit "Thread zerfleddern". Schade.

Ich bin hier raus.

Dass du immer gleich "beleidigt" bist...
...als Helfer "muss" man ab und an von dir auch einige (unnötige) "Schüsse" verkraften...

Außerdem wäre es ja doch interessant zu sehen, ob es tatsächlich so einfach geht, ich mag ja auch falsch liegen...
...sorry, dass ich (auch nur) ein Mensch bin und halt auch versuche zu (mitzu)denken und Finger um was zu schreiben... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Zitat von: MadMax-FHEM am 13 November 2021, 19:31:24
Dass du immer gleich "beleidigt" bist...

Ich bin überhaupt nicht beleidigt, solche Unterstellungen kannst Du gerne weglassen.


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEMAN

Zitat von: betateilchen am 13 November 2021, 19:06:19
Sorry, dass ich hier nicht 24/7 vor dem PC sitze, um immer innerhalb weniger Sekunden antworten zu können. Wenn ein Thread dann zwischenzeitlich so zerfleddert wurde wie dieser hier, habe ich einfach keine Lust mehr, weil die Erfahrung lehrt, dass sich der Zeitaufwand für eine Rückführung meistens nicht mehr lohnt.

Außerdem kaufe ich kein Popcorn, ich mache das in meiner Popcornmaschine selbst und immer frisch.
Dabei frage ich mich übrigens immer, warum die Menschheit aufgehört hat, herauszufinden, ob man noch andere Dinge durch Explosion besser machen kann als nur das Maiskorn...


--
Na wenn Du Zeit für Popcorn Kommentare findest..

Das Kaufen war doch direkt ein T9-Fehler ;) ;)

Um mal wieder konstruktiv zu werden, hier mein (schlechter) Lösungsansatz für das Sender/Verursacher-Problem:
https://forum.fhem.de/index.php/topic,122468.msg1171989.html#msg1171989
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Icinger

Hier eine Version, wie sie bei mir im Einsatz ist:
Normalerweise wird das Licht über BWM gesteuert. Wenn ich länger im Keller bin, will ich den BWM aber übergehen --> Hierzu habe ich einen Taster.
Da ich mich aber nicht drauf verlassen will, dass das Licht auch über den Taster wieder ausgeschaltet wird, läuft zusätzlich im DOIF ein Timer, welcher in diesem Fall (Taster) das Licht nach einer Stunde ausschaltet.
Ab diesem Zeitpunkt (Timer ODER nochmalig Taster) läuft wieder der normale BWM-Timer.

define di_Kellerlicht DOIF ([xi_Motion_3:occupancy] eq "true") (set mq2_Mini2 on)(set mq2_Mini2 off;;setreading $SELF delay 600) \
DOELSEIF ([mq2_Mini5:Switch1]) (set mq2_Mini2 toggle;;setreading $SELF delay 3600)(setreading $SELF delay 600)

attr di_Kellerlicht do resetwait
attr di_Kellerlicht wait 0,[$SELF:delay]:0,[$SELF:delay]


lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho