FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: yep_DD am 26 Oktober 2018, 19:48:27

Titel: Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 26 Oktober 2018, 19:48:27
Hallo zusammen,

gibt es eine Möglichkeit durch alle erkannten HUE Lichter zu iterieren um zu Prüfen ob irgendeines an ist? Die HUEBridge ist bei mir ganz normal eingebunden und alle devices werden angezeigt.

Liebe Grüße
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 26 Oktober 2018, 19:53:13

list TYPE=HUEDevice:FILTER=onoff=1
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 26 Oktober 2018, 19:57:41
Super, vielen lieben Dank. Sagen wir, ich möchte ein DoIf ausführen wenn irgendein HUE Licht aktiv ist, in meinem Fall:

define MonitorOnPresence DOIF ([JemandDa] eq "present" and [HIER_DIE_HUE_PRÜFUNG]) ({GetHttpFile("10.0.1.49:8000", "/on");return undef})

wie könnte ich das am einfachsten realisieren?
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 26 Oktober 2018, 20:02:35
Ich persönlich würde dann eher alle Hue Devices in eine Struktur packen. Dann siehst auch gleich sobald eines an geschalten wurde.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 26 Oktober 2018, 20:05:29
Leider bin ich im Thema FHEM noch nicht wirklich so firm. Kann ich die HUE Devices alle zusammen in eine Struktur packen und neue Devices darin automatisch ebenfalls hinzufügen wenn welche dazukommen?
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: betateilchen am 26 Oktober 2018, 20:08:31
Zitat von: yep_DD am 26 Oktober 2018, 20:05:29
Leider bin ich im Thema FHEM noch nicht wirklich so firm.

Das ist nicht schlimm, dafür gibt es ja die Doku. Nimm Dir einfach die Zeit, das zu lesen ("help structure") dann erledigen sich Deine Fragen von ganz alleine.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 26 Oktober 2018, 20:34:18
Fair enough....

ich habe jetzt eine HUE Strucure angelegt und die devices damit: addstruct HUEState TYPE=HUEDevice:FILTER=onoff=1 hinzugefügt.

Jetzt müsste ich doch mit:

attr HUEState clientstate_behavior relative
attr HUEState clientstate_priority on off


[HUEState] eq "on" oder eben off müsste ja jetzt mein gewünschtes Verhalten widerspiegeln? Bin ich auf dem richtigen Weg?

Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 26 Oktober 2018, 21:51:07
sieht doch gut aus. wenn du Dimmer ist kommt noch ne kleine Herausforderung, sonst passt das aber
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 26 Oktober 2018, 22:58:17
Ja, das ist das Problem, es sind ca. 30 Lampen, 5 Dimmer Switches und alle in verschiedenen Räumen und Konfigurationen. Ich sehe noch nicht, wie es passt. In der Lösung jetzt kann ich alle Lampen aus- und wieder einschalten. Aber auslesen als single read "off" / "on", weiß ich nicht wie es geht. Ich müsste den Status jeder einzelnen Lampe "dimxx%" zu on setzen und alles andere wäre off?
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: Markus M. am 26 Oktober 2018, 23:06:33
Einfach nur WTF?!?  :o
Ihr müsst dafür überhaupt nichts machen, dafür gibt es ein Reading!
ReadingsVal("HUEGroup0","any_on","?")
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 26 Oktober 2018, 23:09:16
Hi Markus,

okay.... also wären alle Lampen ja über "Lightset 0" (HueGroup0) standardmäßig definiert? Gedimmte Lampen sind auch abgedeckt?

Grüße
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: Markus M. am 26 Oktober 2018, 23:13:38
Das ist die interne Gruppe der Bridge für alle Lampen.
Sobald nicht alles komplett aus ist, sollte da eine 1 stehen.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 26 Oktober 2018, 23:24:01
okay, ich habe jetzt folgendes versucht, könnte das klappen?

([JemandDa] eq "absent" or ([HUEGroup0:any_on eq "0"] and [?{sunset("HORIZON=+6.0")}-{sunrise("HORIZON=+6.0")}])) ({GetHttpFile("10.0.1.49:8000", "/off");;return undef})


edit: geschweifte klammern um sunset/sunrise

es geht mir da um den HUEGroup und sunset / sunrise Teil. Wenn also alle Lampen aus sind und es zwischen Sonnenauf- und untergang ist, soll das Command ausgeführt werden.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: OdfFhem am 27 Oktober 2018, 00:59:25
In der Hilfe zu HUEDevice steht u.a.
ZitatGroups are updated only on definition and statusRequest

Bei mir war der Timestamp für all_on bzw. any_on dann auch tatsächlich mehrere Monate alt.

Daher scheinen diese Readings im vorliegenden Fall zunächst eher ungeeignet ...
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: binford6000 am 27 Oktober 2018, 09:19:28
ZitatDaher scheinen diese Readings im vorliegenden Fall zunächst eher ungeeignet ...
Sehe ich auch so. Structure ist die bessere Wahl. Also:
defmod HUEState structure room TYPE=HUEDevice
attr HUEState clientstate_behavior relative
attr HUEState clientstate_priority on|On|ON off|Off|OFF


Ein HUEDevice als Beispiel für room_map. Das brauchst du um den state dim... der HUEs auf on|off zu mappen:
defmod wz_kugel_licht HUEDevice 9 IODev=moebHUEs
attr wz_kugel_licht userattr room_map structexclude
attr wz_kugel_licht room_map onoff:[1]{1}:on onoff:[0]{1}:off

Die structure geht auf on wenn mind. ein HUEDevice auf on ist. Und auf off wenn alle HUEs off sind.

Also dann für dein DOIF:
([JemandDa] eq "absent" or ([HUEState] eq "on"]...
VG Sebastian
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 27 Oktober 2018, 12:15:31
Hallo zusammen,

vielen Dank für die hilfreichen Inputs. Die Struktur funktioniert erstmal so weit. Welche Teil mir noch etwas unklar ist, ist folgender:

defmod wz_kugel_licht HUEDevice 9 IODev=moebHUEs
attr wz_kugel_licht userattr room_map structexclude
attr wz_kugel_licht room_map onoff:[1]{1}:on onoff:[0]{1}:off


heißt das ich definiere das Model "wz_kugel_licht" als HUEDevice, und ändere den Zustand als entweder off oder on, das bedeutet aber, dass ich jede Lampe die dimmbar ist einzelnen so modifizieren muss?

Tausend Dank für die Hilfe,

Stephan
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 27 Oktober 2018, 12:28:26
Nein.
Ich denke was da gemeint ist, ist das alle Deine Huelampen die in der Structure sind nun ein Attribut zur Verfügung haben das sich XXX_map nennt.


Internals:
   CFGFN     
   CHANGED   
   DEF        7  IODev=HUELAN1
   ID         7
   INTERVAL   
   IODev      HUELAN1
   NAME       LED_StreifenSchlafzimmerBett
   NR         107
   STATE      off
   TYPE       HUEDevice
   desired    0
   manufacturername Philips
   modelid    LST001
   name       LightStrips 2
   swversion  66010400
   type       Color light
   uniqueid   00:17:88:01:00:ce:2e:33-0b
   Helper:
     DBLOG:
       state:
         logDbCurrent:
           TIME       1540531588.48394
           VALUE      off
   READINGS:
     2018-10-20 07:45:31   alert           none
     2018-10-26 06:14:09   bri             34
     2018-10-20 07:45:31   colormode       xy
     2018-10-20 07:45:31   effect          none
     2018-10-20 07:45:31   hue             54568
     2018-10-26 07:26:28   onoff           0
     2018-10-26 07:26:28   pct             0
     2018-10-20 07:45:31   reachable       1
     2018-10-26 06:14:09   rgb             361148
     2018-10-20 07:45:31   sat             218
     2018-10-26 07:26:28   state           off
     2018-10-20 07:45:31   xy              0.3814,0.1981
   helper:
     alert      none
     bri        34
     colormode  xy
     ct         -1
     devtype   
     effect     none
     hue        54568
     on         0
     pct        0
     reachable  1
     rgb        361148
     sat        218
     update_timeout -1
     xy         0.3814,0.1981
Attributes:
   IODev      HUELAN1
   LichtSchlaf structureLichtSchlafzimmer
   LichtSchlaf_map pct:^[1-9][0-9]{0,2}:on pct:^0$:off
   LichtWohnung structureLichtWohnung
   VerbraucherWohnung structureVerbraucherWohnung
   alias      LED Streifen
   color-icons 2
   devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
   event-on-change-reading state,onoff,pct,hue,sat,rgb
   group      Licht Schlafzimmer
   icon       hue_filled_lightstrip
   model      LST001
   room       Schlafzimmer
   subType    colordimmer
   userattr   LichtSchlaf LichtSchlaf_map LichtWohnung LichtWohnung_map VerbraucherWohnung VerbraucherWohnung_map structexclude
   webCmd     hue:rgb:rgb ff0000:rgb 98FF23:rgb 0000ff


Hier mal ein list eines meiner Devices. Ich habe für alle Zimmer eine Lichtstruktur. Also eine pro Raum.
Wie Du siehst wird hier bei
LichtSchlaf_map pct:^[1-9][0-9]{0,2}:on pct:^0$:off
alles was pct > 0 ist auf on und 0 auf off für die structure gemappt. Damit kommt nur on oder off bei der structure an und nicht der Status unbekannt
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: Markus M. am 27 Oktober 2018, 12:48:52
Zitat von: OdfFhem am 27 Oktober 2018, 00:59:25
In der Hilfe zu HUEDevice steht u.a.
Bei mir war der Timestamp für all_on bzw. any_on dann auch tatsächlich mehrere Monate alt.
Daher scheinen diese Readings im vorliegenden Fall zunächst eher ungeeignet ...
Das ist seltsam, scheint aber aus irgendwelchen Gründen nur bei HUEGroup0 so zu sein.
Gestern hatte ich da ein aktuelles Reading, heute nicht.
Alle anderen Gruppen werden bei mir aber zuverlässig aktualisiert, auch wenn nicht über FHEM geschalten wird.
Wenn das bei euch auch funktioniert wären immer noch die any_on Readings der Gruppen der einfachste Weg.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 27 Oktober 2018, 15:43:05
Also ich habe die Lampen mittels

defmod HUEState structure room TYPE=HUEDevice

hinzugefügt und das ist der Inhalt meiner Struktur:

ATTR room
CFGFN
CHANGEDCNT 78
DEF room
TYPE=HUEDevice
DEVSPECDEF 1
NAME HUEState
NR 28027
NTFY_ORDER 50-HUEState
STATE off
TYPE structure


als ich es gestern mit

addstruct HUEState TYPE=HUEDevice:FILTER=onoff=1 hinzugfügt habe, waren alle einzelnen Lampen in der Struktur. Ich glaube es fehlt nicht mehr viel, bis es funktioniert. Vielen Dank für eure Hilfe.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 27 Oktober 2018, 15:56:44
Ich glaube das ist falsch. Lasse mich da aber gerne eines besseren belehren.
Hast Du den den Status der einzelnen Devices in der Struktur abgebildet?
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 27 Oktober 2018, 16:33:51
Okay, ich habe es jetzt folgendermaßen eingebunden:


defmod HUEState structure room TYPE=HUEDevice
attr HUEState clientstate_behavior relative
attr HUEState clientstate_priority on|On|ON off|Off|OFF
attr HUEState userattr room_map structexclude
attr HUEState room_map onoff:[1]{1}:on onoff:[0]{1}:off


wenn ich jetzt irgendeine Lampe anschalte, gedimmt, ist die struct on.... nur bin ich mir nicht sicher, ob es so richtig ist.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 27 Oktober 2018, 17:56:38
Das map doch nicht bei der Struktur sondern direkt bei den Devices welche in der Struktur sind.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 27 Oktober 2018, 17:59:00
alo bei jeder einzelnen Device oder wie soll ich das verstehen?
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 27 Oktober 2018, 18:14:03
Bei jedem Device bei dem der state nicht on oder off sein kann
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 27 Oktober 2018, 18:19:37
also tatsächlich wirklich einzeln?
Aber das ist ja die Frage von eher, wenn ich deine Methode anwende, habe ich jedes HUE Light einzeln im Struct und könnte das machen, was du sagst, bei der von @binford6000 nicht, und deswegen bin ich nun nicht sicher, mir ist klar, dass du mir hier sicher keine Lösung fix- und fertig präsentieren wirst, ohne dass ich mich selber informiere, aber wir haben hier gerade 3 Ansätze und nun hat jeder sein Fachgebiet und für mich ist FHEM sehr neu und ich versuche es  noch zu verstehen.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 27 Oktober 2018, 18:29:10
Du solltest Dir in Ruhe unsere Beispiele anschauen, dann siehst du das sie gleich sind. Auch er hat das map im Hue Device gemacht und nicht im structure Device.
Alternativ lese wenigstens einmal die Commandref zur structure komplett durch und ganz genau zum Attribut _map
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 27 Oktober 2018, 18:30:17
ja, mache ich sehr gern. aber noch mal zu ersten Frage, das heißt mit deiner und seiner Methode, muss ich jedes einzelne Device modifizieren?

edit: warum geht die structure dann aber in meiner form, korrekt auf "on", wenn ich ein licht nur dimme?
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 27 Oktober 2018, 18:44:41
Ich gehe davon aus das dein Attribut map in der structure zu den einzelnen Devices durchgereicht wird. Das siehst du wenn du dir mal ein Device an schaust, da steht bestimmt auch das map.

Und du hörst nicht zu, ich sagte nicht jedes Device sondern nur die Devices wo state einen anderen Wert haben kann als on oder off.

Lass es einfach so wie es jetzt ist, es geht ja so. In einen halben Jahr machst du es dann nach Deinem Wissen/Erfahrung besser.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 27 Oktober 2018, 18:48:50
du hast absolut recht, jedes einzelne Device enthält mein mapping, aber ich würde gern verstehen warum.
Denn du hast ja gesagt, das mapping auf die Strukture wäre falsch, und deswegen auf jedes Device (welches einen anderen State als on / off haben kann). Und da ich ca. 30 Lampe und 5 Dimmerschalter habe, müsste ich es ja bei den 30 Lampen einzeln machen, korrekt?

Wie dem auch sei, ich möchte dich nicht weiter damit nerven, sollte es nicht funktionieren, melde ich mich noch mal und wenn es funktioniert, dann vielen Dank für eure Hilfe und Entschuldigung für mein Unwissen.

Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 27 Oktober 2018, 18:56:07
Structure vererbt viele Attribute weiter an seine Mitglieder. Das dies bei map auch so ist wusste ich nicht. Meistens ist das vererben auch gar nicht gewünscht. Das nervt sehr.
Und noch mal, du musst es nicht an alle 40 einstellen sondern nur da wo das Reading state auch einen anderen Wert haben kann wie on oder off. Also Lampen die dimmen zum Beispiel.
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 27 Oktober 2018, 18:57:39
und noch mal vielen Dank für deine Antwort. Aber alle meine Lampen sind meist gedimmt in irgendeiner Form. Und damit bei all denen Lampen wäre das einzustellen, wenn ich dich richtig verstehe?
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: CoolTux am 27 Oktober 2018, 19:37:35
jepp korrekt. Aber Du kannst auch das Attribut im Strukture Device belassen und die Strukture vererbt es dann weiter. Passt also.


Grüße
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: Jamo am 28 Oktober 2018, 12:48:19
Ich habe es wie folgt gelöst. Am Anfang muss natuerlich ein statusRequest kommen, da die Hue Gruppen nur nach einem Statusrequest aktualisiert werden. Danach (sleep 10;) kann man aber die Huegroup 0 'AllLights' abfragen, und erhält über any_on die Information, ob noch Lampen an sind.
In $devices in der sub 'checkLamps' stehen dann alle Lampen drin, die noch an sind. Die Liste ist Komma (,) separiert.

define test_n notify test {\
fhem ("set AllLights statusRequest;sleep 10;{if (ReadingsNum(\"AllLights\",\"any_on\",\"nA\")) {checkLamps()}}")}


sub checkLamps {
my $devices = "";
my @list = devspec2array("TYPE=HUEDevice:FILTER=onoff=1");
($devices)= join(',', @list);
Log 3, "devices:$devices";
fhem ("set pushmsg msg 'Folgende HUEDevice sind noch an' '$devices' '' 2 'siren' 30 3600");
# return "$devices";
}
Titel: Antw:Prüfen ob irgendein HUE Licht an ist
Beitrag von: yep_DD am 28 Oktober 2018, 18:47:54
Hallo inoma,

vielen Dank für deine Antwort. Ich glaube die Lösung mit der Struktur funktioniert bei mir jetzt auch ganz gut, leider bin ich noch neu um alle Hintergründe zu verstehen. Aber es funktioniert. Sollte es Probleme geben, versuche ich deine Variante.

LG,

Stephan