FHEM Forum

FHEM - Hausautomations-Systeme => Zigbee => Thema gestartet von: Superposchi am 14 Oktober 2022, 11:48:38

Titel: Manuelle Übersteuerung
Beitrag von: Superposchi am 14 Oktober 2022, 11:48:38
Ich habe mal eine Frage an die Gemeinschaft.

Ich habe mein Hue system über diverse Helligkeits- und Bewegungsmelder automatisiert. Wenn ich nun manuell etwas einstelle, greift bei der nächsten Abfrage aber wieder die Automatik und die manuelle Einstellung wird zurückgesetzt.

Wie habt ihr dieses Problem bei euch gelöst?
Titel: Antw:Manuelle Übersteuerung
Beitrag von: bartman121 am 14 Oktober 2022, 20:51:20
wie machst du denn etwas manuell?

Wenn alles zentral über fhem gesteuert wird, dann würde ich beim manuellen Steuern per setreading ein Reading "automatic_disabled" setzen, darauf ein notify, was die Automatik-Notifies halt set .... inactive/active macht .... das geht auch mit wachtdogs ....

Titel: Antw:Manuelle Übersteuerung
Beitrag von: Superposchi am 17 Oktober 2022, 11:18:09
Mit manuellem Schalten meine ich beispielsweise das Einschalten einer einzelnen Lampe per Handy-App, welche sonst durch die Automatik anhand eines Helligkeitsmelders gesteuert wird.
Gibt es eventuell eine Möglichkeit abzufangen oder festzustellen woher der Schaltbefehl gesendet wurde?

Andernfalls müsste ich ja immer erst die Automatik ausschalten, die Lampe manuell einschalten und dann die Automatik wieder einschalten.
Titel: Antw:Manuelle Übersteuerung
Beitrag von: MadMax-FHEM am 17 Oktober 2022, 11:28:05
Zitat von: Superposchi am 17 Oktober 2022, 11:18:09
Andernfalls müsste ich ja immer erst die Automatik ausschalten, die Lampe manuell einschalten und dann die Automatik wieder einschalten.

Das ist doch genau was mit setreading... gemeint war automatisch zu machen.

Also: du drückst einen Knopf in der App oder sonstwo -> Licht wird geschaltet UND es wird die Automatic deaktiviert / Licht wird ausgeschaltet über die App und Automatik wird wieder eingeschaltet

Mache ich so z.B. wenn ich mein Eingangslicht per physischem Schalter einschalte -> neben dem Einschalten des Lichts deaktiviere ich auch die Automatik (Bewegungsmelder). Beim manuellen Ausschalten wird die Automatik wieder aktiviert.

D.h. wenn ich manuell einschalte MUSS ich auch wieder manuell ausschalten...

Gruß, Joachim
Titel: Antw:Manuelle Übersteuerung
Beitrag von: Superposchi am 18 Oktober 2022, 14:29:11
Zitatdu drückst einen Knopf in der App oder sonstwo -> Licht wird geschaltet UND es wird die Automatic deaktiviert / Licht wird ausgeschaltet über die App und Automatik wird wieder eingeschaltet
Das ist schon klar, aber meine Frage war ja wie ihr das automatische Anschalten von dem manuellen Anschalten unterscheidet.

Beispielweise schaltet mein Wohnzimmerlicht über einen Helligkeitsmesser automatisch bei einer bestimmten Verdunklung ein.
Natürlich aber auch aus wenn es wieder Heller wird, z. B. nach einem Gewitter. Dabei soll die Automatik ja normal weiterlaufen.

Nur eben wenn ich die Lampen manuell per App einschalte um z. B. was zu essen oder was zu lesen, soll die Automatik ausgeschaltet werden, damit die Lampen nicht wieder von alleine Ausschalten (dem Helligkeitsmesser zu folge ist es ja noch zu Hell).

Ich kann ja bei der App (z. B. Hue Essentials) keinen weiteren Befehl mit absetzen der z. B. einen Automatik-Dummy abschaltet.
Titel: Antw:Manuelle Übersteuerung
Beitrag von: MadMax-FHEM am 18 Oktober 2022, 14:34:20
Ich weiß nicht wie genau(er) ich das noch schreiben soll, ich versuch's mal (noch mal):

Automatik:

BWM -> motion
motion -> notify
notify: wurde irgendwas manuell gemacht (z.B. Abfrage eines gesetzten Readings etc.)
ja -> dann macht es nix, ist ja manu-Modus
nein -> dann schalte Licht nach Automatik


Manuell/Ich drücke einen Knopf (oder in meinem Fall einen tatsächlichen Schalter/Taster):

Tastendruck -> notify
notify: schalte Licht UND setreading Device Modus manu (kann das Lampendevice sein, ist bei mir so)
(wobei bei mir der Taster DIREKT das Licht einschaltet, das notify setzt also "nur" das "Manual-Reading")

Beim Ausschalten manuell:

Tastendruck -> notify
notify: schalte aus UND setreading Device Modus auto
(wobei bei mir der Taster DIREKT das Licht ausschaltet, das notify setzt also "nur" das "Automatik-Reading")

Genau so mache ich das...


EDIT: ob man da dann notify braucht für den manuellen Fall oder ob das auch anders geht hängt davon ab, wie genau das manuelle Schalten umgesetzt ist. Bei einem Shelly kann man das auch direkt in einen http-Request vom Shelly an fhem einbauen usw.

EDIT: was (nat.) nicht geht, wenn der BWM DIREKT ein (Funk-)Signal an die Lampe sendet, außer man kann den BWM deaktivieren. Dann eben statt setzen des Readings "Modus" auf "manu" den BWM deaktivieren usw.

EDIT:
Zitat von: Superposchi am 18 Oktober 2022, 14:29:11
Ich kann ja bei der App (z. B. Hue Essentials) keinen weiteren Befehl mit absetzen der z. B. einen Automatik-Dummy abschaltet.
Tja Steuerungen außerhalb von fhem wo fhem nichts mitkriegt usw.: was soll fhem da dann tun? Siehe BWM sendet direkt. Ist ja dasselbe/sehr ähnliche Szenario (nur halt andersrum ;)  )...

Gruß, Joachim
Titel: Antw:Manuelle Übersteuerung
Beitrag von: bartman121 am 18 Oktober 2022, 14:36:04
Aber genau dort ist das Problem, warum schaltest du denn über die App manuell? Wenn du eine Steuerzentrale wie fhem betreibst, dann sollte die auch die Steuerung zentral übernehmen.

Ich schalte halt auch manuelle Sachen über fhem, dafür hast du ja nahezu unendlich viele verschiedene Möglichkeiten nutzen. (Floorplan,ftui, http-shortcut oder was auch immer)... Dann geht auch das was du brauchst wenn du unbedingt an fhem vorbei steuern willst, dann wirst du diese Schwierigkeiten immer behalten. Übrigens ist das steuern per Handy sicher irgendwie cool, aber völliger Unfug eine Aktion auszulösen und dafür ein extra gerät zu nutzen. Was spricht denn gegen einen weiteren zigbee-schalter, der nur die manuelle Steuerung macht?

Grüße Andreas

Titel: Antw:Manuelle Übersteuerung
Beitrag von: Superposchi am 21 Oktober 2022, 10:02:44
ZitatTja Steuerungen außerhalb von fhem wo fhem nichts mitkriegt usw.: was soll fhem da dann tun? Siehe BWM sendet direkt. Ist ja dasselbe/sehr ähnliche Szenario (nur halt andersrum ;)  )...
Genau darauf zielte die Frage aber ab. Ob es dort Lösungen für gibt oder schon jemand sowas umsetzen konnte.

ZitatÜbrigens ist das steuern per Handy sicher irgendwie cool, aber völliger Unfug eine Aktion auszulösen und dafür ein extra gerät zu nutzen
Also als Unfug würde ich es nicht bezeichnen da sich durch das Handy die Lampe von überall in der Wohnung bedienen lässt.
Ein Schalter ist entweder fest montiert oder muss spätestens wenn man mehrere hat eindeutig gekennzeichnet werden.

ZitatWas spricht denn gegen einen weiteren zigbee-schalter, der nur die manuelle Steuerung macht?
Zum einen die zusätzlichen Kosten und zum Anderen das Verständnis für die Technik bei anderen Personen wie meiner Lebensgefährtin, der ich die Handy-Steuerung schon nur schwer vermitteln konnte. Sie ist halt der Typ Mensch der zum PC einschalten den Stecker in die Steckdose stecken will, komplett Technik-avers.
Titel: Antw:Manuelle Übersteuerung
Beitrag von: MadMax-FHEM am 21 Oktober 2022, 10:50:10
Zitat von: Superposchi am 21 Oktober 2022, 10:02:44
Genau darauf zielte die Frage aber ab. Ob es dort Lösungen für gibt oder schon jemand sowas umsetzen konnte.

War halt (eingangs) nicht klar (genug [für mich]) formuliert...

Zitat von: Superposchi am 21 Oktober 2022, 10:02:44
Also als Unfug würde ich es nicht bezeichnen da sich durch das Handy die Lampe von überall in der Wohnung bedienen lässt.

Ich steuere (wenn es unedingt sein muss / ansonsten: Automatik wo es geht :)  ) per Handy aber halt "über" fhem -> da bekommt fhem das mit ergo kann man das entspr. umsetzen.

Was an einer Steuerung "vorbei geht" kann diese doch weder mitbekommen noch beeinflussen... 8)

Zitat von: Superposchi am 21 Oktober 2022, 10:02:44
Ein Schalter ist entweder fest montiert oder muss spätestens wenn man mehrere hat eindeutig gekennzeichnet werden.
Zum einen die zusätzlichen Kosten und zum Anderen das Verständnis für die Technik bei anderen Personen wie meiner Lebensgefährtin, der ich die Handy-Steuerung schon nur schwer vermitteln konnte. Sie ist halt der Typ Mensch der zum PC einschalten den Stecker in die Steckdose stecken will, komplett Technik-avers.

Eben drum ja ein Schalter...
Ich selbst nutze entweder die Automatik oder einen echten Schalter und den bevorzugt auch direkt mit dem Aktor "verbunden" (entweder echt Draht ;)  oder mindestens per direktem Funk).
Weil das ist doch einfach zu verstehen, seit vielen Jahrzehnten: Schalter drücken Licht geht an/aus :)

Dass es mit dem Handy auch geht nutze ich ab und an, meine Freundin auch nicht wirklich.
Die will einen Schalter (wie "früher")...
...und ich als "Notlösung" auch.

Gruß, Joachim
Titel: Antw:Manuelle Übersteuerung
Beitrag von: bartman121 am 21 Oktober 2022, 18:06:38
Natürlich kannst du was bauen um das zu regeln, aber schlussendlich scheint es am logischem denken zu fehlen....

Stell dir doch Mal den Vorgang im Detail vor, wenn die Automatik was macht....

Der BWM meldet Motion als Event, darauf reagiert ein notify und schaltet die Lampe an .... Ist doch richtig?

Das ganze jetzt Mal im Kopf zerlegen, wenn die Lampe angeht und die letzte Triggerzeit des notifies nicht innerhalb der letzten Sekunden liegt, dann war es manuell ....

Am Ende ist das nur ein notify auf die Lampe "onoff" mit ein bissl Readingsage und set inactive ....

Wenn du partout nicht aufhören willst extern rumzupfuschen, dann musst du es mit denken erschlagen.... Das denken und lesen musst du dann aber eigentlich übernehmen

Titel: Antw:Manuelle Übersteuerung
Beitrag von: DetlefR am 21 Oktober 2022, 23:39:57
ZitatGenau darauf zielte die Frage aber ab. Ob es dort Lösungen für gibt oder schon jemand sowas umsetzen konnte.
Das Problem ist schon alt und nicht nur in FHEM. Meines Wissens gibt es nur eine Lösung.

Um mehreren Leuten den Zugriff auf eine Festplatte zu ermöglichen, wurde der Server erfunden. Er regelt die Anfragen und steuert die Festplatte. Ansonsten gibt es Datenmüll.

Genau so ist es in deinem Fall. Irgendein Device und nur eins steuert die Lampe und weiß über ihren Zustand Bescheid. Alle Anfragen/Befehle werden an dieses Device gesendet. Das wertet sie dann entsprechend aus und gibt sie an die Lampe weiter.
Auch die Befehle vom Handy gehen dann an dieses Device und nicht direkt an die Lampe.
Titel: Antw:Manuelle Übersteuerung
Beitrag von: Superposchi am 24 Oktober 2022, 08:08:53
@bartman121
Interessanter Ansatz, so etwas habe ich mir erhofft. Doch leider bin ich (noch) nicht tief genug in der Materia um alle Möglichkeiten zu kennen.

@DetlefR
Du meinst also einen Dummy vor die Lampe zu setzen, der dann mit einem notify die Lampe schaltet und bei manueller Schaltung entsprechend den Bewegingsmelder / Helligkeitssensor ignoriert. Auch eine denkbare Lösung
Titel: Antw:Manuelle Übersteuerung
Beitrag von: DetlefR am 24 Oktober 2022, 20:58:04
Es muss nicht unbedingt ein Dummy sein.
Wichtig ist nur. Highlander – Es kann nur einen geben :D Der das sagen hat.
Titel: Antw:Manuelle Übersteuerung
Beitrag von: bartman121 am 24 Oktober 2022, 21:11:47
Superposchi...

Liegt es am durchdenken oder an der mangelnden Kenntnis von notify, ReadingsAge und If?

Grundsätzlich kannst du letzteres sehr leicht Erlernen, ich denke wenn du mit konkreten Ideen und ein bisschen Code um die Ecke kommst, dann kriegst du auch Unterstützung, aber das durchdenken und erarbeiten einer Logik kann dir keiner abnehmen, da wir dein System nicht kennen.

Readingsage wäre hier beschrieben:
https://wiki.fhem.de/wiki/DevelopmentModuleAPI

das ganze wäre dann natürlich eher eine perl-aufgabe, aber so schwer ist das auch nicht ...

Aber die Arbeit wird dir keiner abnehmen, einfach Mal im Kopf zerdenken und die nötigen Schlüsse ziehen.

Die Lösung von detlefR ist keine Lösung für dich, wenn du nicht aufhören willst über die App zu steuern.
Titel: Antw:Manuelle Übersteuerung
Beitrag von: MadMax-FHEM am 25 Oktober 2022, 07:39:06
Vielleicht sind da ja brauchbare Ideen/Ansätze dabei: https://forum.fhem.de/index.php/topic,129852.msg431560/topicseen.html#new

Gruß, Joachim
Titel: Antw:Manuelle Übersteuerung
Beitrag von: Superposchi am 08 November 2022, 10:53:31
ZitatDie Lösung von detlefR ist keine Lösung für dich, wenn du nicht aufhören willst über die App zu steuern.
Wie gesagt liegt es weniger an mir. Ich muss immer schauen wie ich meine Freundin miteinbeziehen kann.

Ich gehe jetzt erst mal den Weg, dass ich einen Dummy mit TrippleState nutze, der "Ein", "Aus" oder "Auto" haben kann und das DOIF für die automatische Steuerung entsprechend der Einstellung deaktiviert. Damit die Steuerung vom Handy funktioniert werde ich die Apps wohl durch ein FTUI fürs Handy ersetzen. aber das muss ich dann noch planen.
Titel: Antw:Manuelle Übersteuerung
Beitrag von: bartman121 am 08 November 2022, 21:14:36
Damit hast du doch schon 80% der Lösung geschafft.


Wovor hast du jetzt noch Angst/wo traust du dich nicht Ran?

Ich kenn mich zwar mit DOIF gar nicht aus, aber ich vermute du nutzt ein DOIF, dess einziger Event-Trigger ein Motion-Sensor ist? (Das bisschen Helligkeit und Uhrzeit ist für diese Aufgabe irrelevant).

Gib Mal bitte ein list deines deines doif, deiner Lampe um die es geht und des Motion Sensors. Natürlich auch ein list des Dummies.

Du brauchst lediglich ein notify, welches auf onoff der Lampe reagiert, dann liest du mit Readingsage das Alter des Motion Events aus und mit dem kleinen If setzt du deinen Dummy weg von Auto.

Ich würde noch ein at definieren, welches die Automatik wieder startet auch wenn man die Lampe nicht ausschaltet (2 oder 3stunden?)

Das ist kein Hexenwerk


,
Titel: Antw:Manuelle Übersteuerung
Beitrag von: Superposchi am 10 November 2022, 11:48:05
In erster Linie ist einfach das Problem, dass meiner Freundin wieder mal halbwegs verständlich zu machen. Ansonsten gibt es eigentlich kein Problem.

Ich bevorzuge DOIF, weil man dort meiner Meinung nach besser mehrere Stati gleichzeitig prüfen kann.

Mein Steuerungs-DOIF sieht so aus:
Internals:
   DEF        (([sensor_sz_bewegungsmelder:state] eq "motion") and ([?sensor_sz_bewegungsmelder:brightness] < 70) and ([?Schlafend] eq "off") and ([unit_sz_dm7020hd] ne "on"))
(set HUEGroup9 rgb ffffff : pct 100 : on-for-timer 150)
DOELSEIF ([sensor_sz_bewegungsmelder:state] eq "noMotion")
(set HUEGroup9 off)
DOELSEIF ([Homestatus] eq "2")
(set HUEGroup9 off)

   FUUID      612be67d-f33f-6c14-6e8d-8f58fc6531c94da4
   FVERSION   98_DOIF.pm:0.261590/2022-06-19
   MODEL      FHEM
   NAME       sw_deckenlicht_starten
   NOTIFYDEV  Homestatus,global,unit_sz_dm7020hd,sensor_sz_bewegungsmelder
   NR         159
   NTFY_ORDER 50-sw_deckenlicht_starten
   STATE      cmd_2
   TYPE       DOIF
   VERSION    26159 2022-06-19 16:10:29
   eventCount 18
   READINGS:
     2022-11-10 10:57:18   Device          sensor_sz_bewegungsmelder
     2022-11-10 10:57:18   cmd             2
     2022-11-10 10:57:18   cmd_event       sensor_sz_bewegungsmelder
     2022-11-10 10:57:18   cmd_nr          2
     2022-11-10 07:56:02   e_Homestatus_STATE undefined
     2022-11-10 10:57:18   e_sensor_sz_bewegungsmelder_state noMotion
     2022-11-10 09:28:47   e_unit_sz_dm7020hd_STATE off
     2022-11-02 20:17:19   mode            enabled
     2022-11-10 10:57:18   state           cmd_2
   Regex:
     accu:
     collect:
     cond:
       Homestatus:
         0:
         1:
         2:
           &STATE     ^Homestatus$
       sensor_sz_bewegungsmelder:
         0:
           state      ^sensor_sz_bewegungsmelder$:^state:
         1:
           state      ^sensor_sz_bewegungsmelder$:^state:
         2:
       unit_sz_dm7020hd:
         0:
           &STATE     ^unit_sz_dm7020hd$
         1:
         2:
   attr:
     cmdState:
     wait:
       0:
         0
       1:
         0
       2:
         15
     waitdel:
   condition:
     0          (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','state') eq "motion") and (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','brightness') < 70) and (::InternalDoIf($hash,'Schlafend','STATE') eq "off") and (::InternalDoIf($hash,'unit_sz_dm7020hd','STATE') ne "on")
     1          ::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','state') eq "noMotion"
     2          ::InternalDoIf($hash,'Homestatus','STATE') eq "2"
   do:
     0:
       0          set HUEGroup9 rgb ffffff : pct 100 : on-for-timer 150
     1:
       0          set HUEGroup9 off
     2:
       0          set HUEGroup9 off
     3:
   helper:
     NOTIFYDEV  Homestatus,global,unit_sz_dm7020hd,sensor_sz_bewegungsmelder
     event      motion: off,motionDuration: 32,noMotion
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   sensor_sz_bewegungsmelder
     timerevent motion: off,motionDuration: 32,noMotion
     triggerDev sensor_sz_bewegungsmelder
     timerevents:
       motion: off
       motionDuration: 32
       noMotion
     timereventsState:
       motion: off
       motionDuration: 32
       state: noMotion
     triggerEvents:
       motion: off
       motionDuration: 32
       noMotion
     triggerEventsState:
       motion: off
       motionDuration: 32
       state: noMotion
   internals:
     all         Schlafend:STATE unit_sz_dm7020hd:STATE Homestatus:STATE
   perlblock:
   readings:
     all         sensor_sz_bewegungsmelder:state
   trigger:
   uiState:
   uiTable:
Attributes:
   alias      Deckenlicht bei Bewegung
   do         always
   group      Deckenstrahler
   room       Steuerung->Licht->Schlafzimmer
   wait       0:0:15


In die einzelnen Äste kommt jetzt noch ein "([Dummy:state] eq "auto") and " hinzu, wodurch das DOIF nicht mal aktiviert/deaktiviert, sondern einfach nicht ausgeführt wird.

Das Dummy muss ich erst noch erstellen, leider fehlt mir aktuell die Zeit um wirklich voran zu kommen.