Autor Thema: Manuelle Übersteuerung  (Gelesen 1707 mal)

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 916
Antw:Manuelle Übersteuerung
« Antwort #15 am: 08 November 2022, 10:53:31 »
Zitat
Die 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.

Offline bartman121

  • Sr. Member
  • ****
  • Beiträge: 615
Antw:Manuelle Übersteuerung
« Antwort #16 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


,
« Letzte Änderung: 08 November 2022, 21:17:44 von bartman121 »

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 916
Antw:Manuelle Übersteuerung
« Antwort #17 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.

 

decade-submarginal