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

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

Vorheriges Thema - Nächstes Thema

harle

Hallo zusammen,

wir haben eine Lampe im Flur (via Gosund Wifi Steckdose), die über einen Bewegungsmelder an und aus geschaltet wird.

Diese Lampe würden wir aber auch gerne zu bestimmten Zeiten manuell dauerhaft einschalten (via Gassistent per Handy).

Gibt es eine Möglichkeit die Quelle der Ein-/Ausschaltung zu erkennen und falls diese "manuell" war, dann soll der Bewegungsmelder nicht auslösen?

Mein Google-Fu ist hier leider gescheitert.

Vielen Dank und beste Grüße

betateilchen

Zu wenig Informationen, um Dir wirklich gezielt helfen zu können.

Grundsätzlich: wenn Du die Lampe so steuerst, dass ein notify auf den Bewegungsmelder reagiert und dann das Licht angeht, kannst Du das im notify feststellen. Im notify gibt es seit neuestem ein reading, in dem das auslösende device steht. Damit kannst Du feststellen, ob das notify über den Bewegungsmelder getriggert wurde oder nicht.

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

harle

Hallo betateilchen,

danke für deine Antwort, ich versuche mein Struktur so gut wie möglich darzustellen.

Die Steckdose "Flur" können wir auch am Handy über Google Home FHEM Integration an/aus schalten.

Der Bewegungsmelder ist momentan über DOIF  angesteuert:

([Bewegungsmelder_Flur:occupancy] eq "true" and isday() eq "0") (set Flur on)


Wenn ich dich korrekt verstehe sollte ich hier auf notify umstellen, da es dort ein Verursacher reading gibt.

Das könnte ich dann über if abfangen und entsprechend die Lampe schalten?


betateilchen

Zitat von: harle am 13 November 2021, 11:06:01
Wenn ich dich korrekt verstehe sollte ich hier auf notify umstellen, da es dort ein Verursacher reading gibt.

Das könnte ich dann über if abfangen und entsprechend die Lampe schalten?

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

FHEMAN

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

Gisbert

Hallo FHEMAN,

du bist am Zug, d.h. poste deine Definitionen, die mit deiner Frage zu tun haben.

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

MadMax-FHEM

Steht das bei notify nicht auch in $NAME?

Und "sowas" gibt's doch bestimmt auch bei DOIF ;)
(nicht dass ich das nutze aber wollte nur "fair" bleiben 8)  )

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)

FHEMAN

Zitat von: Gisbert am 13 November 2021, 11:26:15
Hallo FHEMAN,

du bist am Zug, d.h. poste deine Definitionen, die mit deiner Frage zu tun haben.

Viele​ Grüße​ Gisbert​
Ich bin nicht der eigentliche Fragesteller. Frage aber deshalb, weil ich einen Verursacher schon lange suche. Und es diesen meiner Meinung nach nur bei Aktoren gibt, aber nicht im Web Interface, leider.

Ich denke ansonsten auch, dass ein notify zum DOIF hier keinen Mehrwert hat (?)
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

harle

Die Anschlussfrage würde mich natürlich auch interessieren, ich sehe im Notify z.B. triggeredByDev.

Sehe aber momentan noch kein Land, wie ich das notify aufbaue, damit ich abhängig von triggeredByDev Aktionen einleiten kann.

MadMax-FHEM

Poste doch lists des notify und des BWM und des Schaltaktors...

Dann kann man da schon was "basteln"...

Ansonsten halt so "PSEUDO-CODE"!


define nSchalte notify SchalterTaster:RegEx {if($NAME eq "DiesesDevice"){fhem("set DasDevice on/off")}elsif($NAME eq "EinAnderesDevice"){fhem("set AnderesDevice on/off")}else{"..."}}


Statt $NAME geht auch ReadingsVal("nSchalte", "triggeredByDev", "nn")
ob es auch "sowas" wie $SELF gibt weiß ich grad nicht, dann könnte auch ReadingsVal($SELF, "triggeredByDev", "nn") gehen...

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)

harle

Hi Joachim,

hier mal die Lists. Beim Notify muss ich zugeben bin ich nach beim grundsätzlichen Anlegen noch beim Verstehen des if-Konstruktes...falls notify aber keinen Mehrwert hat, wie kann ich den "Trigger" bei DOIF abfragen?

Schaltaktor



Internals:
   CID        DVES_054D12
   DEF        DVES_054D12
   DEVICETOPIC Flur
   FUUID      61023f95-f33f-d342-2ab3-cf1c2f994e36a561
   IODev      m2s
   LASTInputDev m2s
   MSGCNT     86
   NAME       Flur
   NR         99
   STATE      off
   TYPE       MQTT2_DEVICE
   m2s_MSGCNT 86
   m2s_TIME   2021-11-13 12:18:32
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   READINGS:
     2021-11-13 10:13:23   FallbackTopic   cmnd/DVES_054D12_fb/
     2021-11-13 10:13:23   GroupTopic      donoffs
     2021-11-13 12:18:32   Heap            27
     2021-11-13 10:13:23   Hostname        tasmota_054D12-3346
     2021-11-13 01:03:55   IODev           m2s
     2021-11-13 10:13:23   IPAddress       192.168.178.114
     2021-11-13 10:13:23   LWT             Online
     2021-11-13 12:18:32   LoadAvg         19
     2021-11-13 10:13:23   Module          Delock 11826
     2021-11-13 12:18:32   MqttCount       1
     2021-11-13 10:13:23   RestartReason   Power on
     2021-07-29 07:43:54   SaveData        on
     2021-07-29 07:43:54   SetOption26     on
     2021-11-13 12:18:32   Sleep           50
     2021-11-13 12:18:32   SleepMode       Dynamic
     2021-07-29 07:43:53   StateText1      off
     2021-07-29 07:43:53   StateText2      on
     2021-07-29 07:43:53   StateText3      toggle
     2021-07-29 07:43:54   StateText4      hold
     2021-11-13 12:18:32   Time            2021-11-13T12:18:31
     2021-11-13 12:18:32   Uptime          0T02:05:16
     2021-11-13 12:18:32   UptimeSec       7516
     2021-11-13 12:18:32   Vcc             3.463
     2021-11-13 10:13:23   Version         6.7.1(basic)
     2021-11-13 10:13:23   WebServerMode   Admin
     2021-11-13 12:18:32   Wifi_AP         1
     2021-11-13 12:18:32   Wifi_BSSId      00:A0:F9:37:3C:CF
     2021-11-13 12:18:32   Wifi_Channel    11
     2021-11-13 12:18:32   Wifi_Downtime   0T00:00:05
     2021-11-13 12:18:32   Wifi_LinkCount  1
     2021-11-13 12:18:32   Wifi_RSSI       86
     2021-11-13 12:18:32   Wifi_SSId       Knutschkuller
     2021-07-29 07:43:53   attrTemplateVersion 20210523
     2021-11-13 11:44:35   state           off
     2021-11-12 16:40:57   subscriptions   cmnd/DVES_054D12_fb/# cmnd/donoffs/# cmnd/tasmota_054D12/#
Attributes:
   autocreate 0
   comment    NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10; 'cmnd/cmnd/tasmota_054D12/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
   genericDeviceType switch
   icon       hue_filled_outlet
   jsonMap    POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
   model      tasmota_basic_state_power1
   readingList tele/tasmota_054D12/LWT:.* LWT
  tele/tasmota_054D12/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_054D12/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_054D12/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_054D12/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  stat/tasmota_054D12/POWER1:.* state
  stat/tasmota_054D12/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       09_Flur,GoogleAssistant,MQTT2_DEVICE
   setList    off:noArg    cmnd/tasmota_054D12/POWER1 0
  on:noArg     cmnd/tasmota_054D12/POWER1 1
  toggle:noArg cmnd/tasmota_054D12/POWER1 2
  setOtaUrl:textField cmnd/tasmota_054D12/OtaUrl $EVTPART1
  upgrade:noArg   cmnd/tasmota_054D12/upgrade 1
   setStateList on off toggle



BWM:

Internals:
   CID        zigbee_0x001788010918e497
   DEF        zigbee_0x001788010918e497
   DEVICETOPIC zigbee2mqtt/0x001788010918e497
   FUUID      618cbc41-f33f-d342-e64a-981ff083571710e7
   IODev      m2s
   LASTInputDev m2s
   MSGCNT     242
   NAME       Bewegungsmelder_Flur
   NR         141
   STATE      T: 22.8 B: 12878 L: 255
   TYPE       MQTT2_DEVICE
   m2s_MSGCNT 242
   m2s_TIME   2021-11-13 12:20:34
   READINGS:
     2021-11-13 01:03:55   IODev           m2s
     2021-11-11 07:46:25   associatedWith  MQTT2_zigbee_pi
     2021-11-11 07:48:15   attrTemplateVersion 20200904
     2021-11-13 12:20:34   battery         100
     2021-11-13 12:20:34   illuminance     12878
     2021-11-13 12:20:34   illuminance_lux 19
     2021-11-13 12:20:34   linkquality     255
     2021-11-13 12:20:34   motion_sensitivity high
     2021-11-13 12:20:34   occupancy       false
     2021-11-13 12:20:34   occupancy_timeout 30
     2021-11-13 12:20:34   temperature     20.27
     2021-11-13 12:20:34   temperature_weather 22.8
     2021-11-13 12:20:34   update_available false
     2021-11-11 08:37:59   update_progress 100
     2021-11-11 08:37:59   update_remaining 29
     2021-11-13 12:20:34   update_state    idle
Attributes:
   devicetopic zigbee2mqtt/0x001788010918e497
   genericDeviceType motion
   homebridgeMapping "MotionDetected=state,values=motion:1;nomotion:0"
   icon       people_sensor
   model      zigbee2mqtt_hueMotionSensor
   readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
   room       09_Flur,MQTT2_DEVICE
   stateFormat T: temperature_weather B: illuminance L: linkquality
   userReadings temperature_weather { sprintf("%.1f",ReadingsVal($name,"temperature","")+2.5) }

MadMax-FHEM

Zitat von: harle am 13 November 2021, 12:25:54
hier mal die Lists.

Jetzt wäre noch (mal) die Frage welche "Wege" zum Einschalten du willst und was dazu führen soll, dass es "Dauer-an" bleibt?

Bzw. ich habe EnOcean Taster, die senden (glücklicherweise) selbst ein "Signal" an fhem.
Wenn nun per Taster EIN geschalten wird, dann setzte ich ein Reading im Aktor (z.B. setreading Aktor meinModus manual).
Im notify was auf den BWM reagiert wird eben dieses Reading abgefragt (ReadingsVal("Aktor", "meinModus", "nn")  ) und wenn da manual steht macht das notify nix :)

Wenn ich mit dem Taster wieder AUS schalte, dann schreibe ich in den Aktor eben "automatic" (z.B. setreading Aktor meinModus automatic) und wenn der BWM auslöst und dort "automatic" steht, dann macht eben das notify was für "automatic" vorgesehen ist :)

Zitat von: harle am 13 November 2021, 12:25:54
Beim Notify muss ich zugeben bin ich nach beim grundsätzlichen Anlegen noch beim Verstehen des if-Konstruktes

Erstellen von notify/DOIF am einfachsten per Eventmonitor: https://wiki.fhem.de/wiki/Event_monitor

(ein Auszug davon bei den verschiedenen Aktionen würde auch helfen und auch welcher Eintrag zu welcher Aktion gehört hat)

Das if-Zeugs in den geschweiften Klammern ist halt Perl, gibt es Seiten zum Selbststudium im Netz... ;)

notify und dann eben Perl -> { Perl-Code } (oder besser: auslagern in myUtils)
https://wiki.fhem.de/wiki/99_myUtils_anlegen


Zitat von: harle am 13 November 2021, 12:25:54
...falls notify aber keinen Mehrwert hat, wie kann ich den "Trigger" bei DOIF abfragen?

Was heißt "Mehrwert"?

notify und dann eben Perl -> { Perl-Code } (oder besser: auslagern in myUtils) ist doch ähnlich wie DOIF...

Was mich bei DOIF eher "stört" ist die "Mischung" zwischen "Programmierung" (mit DOIF-Sytax) und "Beeinflussung" durch Attribute...

Und wenn DOIF-Perl, dann kann ich auch gleich bei notify/at etc. bleiben ;)

Aber egal, führt hier weg...
...soll aber sagen: ich habe bzgl. DOIF keine Ahnung, sorry... :-\

Und wen du das DOIF schon hast, dann einfach commandre lesen was dazu steht oder warten bis sich jemand meldet, der das beantworten kann...

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)

harle

Zitat von: MadMax-FHEM am 13 November 2021, 13:18:23
Jetzt wäre noch (mal) die Frage welche "Wege" zum Einschalten du willst und was dazu führen soll, dass es "Dauer-an" bleibt?

Ich habe es Stand jetzt so, dass der BW die Lampe an und aus schaltet.

Wenn wir jetzt aber die Lampe manuell auf "on" schalten, dann soll der BWM so lange keine Aktion machen, bis die Lampe wieder manuell auf aus geschaltet wird.

Der BW soll quasi deaktiviert werden sobald manuell in die Schaltung der Lampe eingegriffen wird.

Ist das grundsätzlich überhaupt erfass-/bzw. machbar?

MadMax-FHEM

Zitat von: harle am 13 November 2021, 13:39:09
Wenn wir jetzt aber die Lampe manuell auf "on" schalten, dann soll der BWM so lange keine Aktion machen, bis die Lampe wieder manuell auf aus geschaltet wird.

Ja schon klar.
ABER: WAS schaltet denn manuell ein? Also ist es ein Schalter/Taster, der auch in fhem integriert ist bzw. zumindest fhem erkennen kann, wenn dadurch geschalten wird/wurde?

Zitat von: harle am 13 November 2021, 13:39:09
Ist das grundsätzlich überhaupt erfass-/bzw. machbar?

Ja, also wenn fhem den Schalter erkennen kann bzw. es eben eine Möglichkeit für fhem gibt irgendwie zu unterscheiden, dann klar, siehe meine Antwort!

Genau das mache ich ja... 8)

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)

harle

Zitat von: MadMax-FHEM am 13 November 2021, 13:51:01
WAS schaltet denn manuell ein? Also ist es ein Schalter/Taster, der auch in fhem integriert ist bzw. zumindest fhem erkennen kann, wenn dadurch geschalten wird/wurde?

Wir benutzen Google_Assistant_FHEM_Connect (https://wiki.fhem.de/wiki/Google_Assistant_FHEM_Connect) im ganzen Haus und schalten entweder per Sprache oder per Shortcuts über Google Home auf dem Handy.
Ich könnte natürlich jetzt für den Flur einen separaten Schalter noch integrieren (z.B. Philips Hue Smart Button long press für an/aus), den könnte man dann abfragen? Ich gehe jetzt mal davon aus, dass man keine Rückmeldung von Google Assistant FHEM Connect bekommt, dass geschaltet wurde.