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?
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 ....
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.
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
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.
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
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
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.
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
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
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.
@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
Es muss nicht unbedingt ein Dummy sein.
Wichtig ist nur. Highlander – Es kann nur einen geben :D Der das sagen hat.
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.
Vielleicht sind da ja brauchbare Ideen/Ansätze dabei: https://forum.fhem.de/index.php/topic,129852.msg431560/topicseen.html#new
Gruß, Joachim
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.
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
,
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.