HUEGroup Readings state und pct

Begonnen von igami, 28 Dezember 2017, 09:36:46

Vorheriges Thema - Nächstes Thema

igami

Zitat von: Mave am 02 Januar 2018, 21:28:14
Okay, verstanden. Also Zimmer (rooms) werden nicht beachtet, nur selbst in FHEM angelegte Gruppen vom Typ LightGroup.
Soweit ich weiß, kann man die Gruppen auch in der HUE App anlegen.

Zitat von: Mave am 02 Januar 2018, 21:28:14
Aber warum wird pct in der Gruppe HUEGroup16 nicht aktualisiert?
Ich hab keine Ahnung, warum das auf 70 steht. Es steht immer auf 70 und wird nicht aktualisiert.  :-[
Laut list ist der Wert aber von heute. Spiel doch mal ein bisschen mit den pct Werten von den einzelnen Devices und guck nach ob das notify auslöst (Internal STATE ändert sich) und ob sich was in der Gruppe tut (Zeitstempel vom Reading pct)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Mave

Ich habe jetzt mal folgendes gemacht:

- Gruppe HUEGroup16 gelöscht
- Gruppe HUEGroup16 neu angelegt

Gruppe hatte nach einer Änderung des pct Wertes eines Gruppenmitglieds keine Readings pct und state!

Erst nach einem Neustart von FHEM, hatte die Gruppe die beiden Readings pct und state!

Änderungen an pct Werten von Gruppenmitgliedern ändert aber nachwievor nichts an dem pct Wert der Gruppe selbst.  :-\

Mave

Beim Internal STATE vom Notify ändert sich der Zeitstempel.

Beim Reading pct der Gruppe ändert sich nichts am Zeitstempel.

Mave

Kann es sein, dass das Notify nur eine Gruppe findet?

In meiner Gruppe "alle HUE Lampen" sind nämlich alle HUE Lampen integriert.

Wenn das Notify also nur die erste Gruppe hernimmt, in der die ID gefunden wurde, dann wird immer die Gruppe "alle HUE Lampen" modifiziert und keine weitere Gruppe mehr.

Mave

Ja, das war die Lösung.

Nachdem ich die Gruppe "alle HUE Lampen" gelöscht habe, wurde meine neue Gruppe korrekt modifiziert.

stebar_

Ich würde mich auch über eine übernahme ins Modul freuen  :)

Als Ergänzung würde ich noch das Reading reachable benötigen. Ich benutze vorwiegend die Color temperature lights.

Mave

Wie bekommt man für die Gruppe das devStateIcon mit Glühbirne und Dimmwert?

Mave

@igami

Jetzt habe ich aber ein ganz anderes Problem, wo ich gespannt bin, wie Du das gelöst hast.

Nach jedem Neustart von FHEM legt die HUE Bridge automatisch ein neue Gruppe "alle HUE Lampen" an.
Somit wird wieder nur diese Gruppe von dem Notify bedient und nicht die Gruppe, für die ich es gerne hätte.

Wie hast Du das gelöst?

igami

Ich nutze kein autocreate ;)

Lässt sich aber alles erweitern, nur nicht jetzt. Vermutlich finde ich erst im Februar wieder Zeit zum programmieren. Bis dahin Bitte alle Wünsche mit Begründung sinnvoll sammeln.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

igami

Update für beliebig Viele Gruppen und Räume

defmod HUE_LightGroup_Status notify .+:pct:..+ {\
  my $ID = InternalVal($NAME, "ID", "");;\
  \
  return unless($TYPE eq "HUEDevice" && looks_like_number($ID));;\
  \
  foreach my $group (\
    devspec2array(\
      "TYPE=HUEDevice".\
      ":FILTER=type=(LightGroup|Room)".\
      ":FILTER=lights=(^|.+\\D)$ID(\\D.+|\$)"\
    )\
  ){\
    next unless($group);;\
  \
    my $hash = $defs{$group};;\
    my $lights = InternalVal($group, "lights", "");;\
    my $count = int(split(",", $lights));;\
    $lights =~ s/,/|/g;;\
    my $pct;;\
    $pct += (split(/[\s]+/, $_))[3]\
      foreach (split("\n", fhem("list TYPE=HUEDevice:FILTER=ID=$lights pct", 1)));;\
    $pct /= $count;;\
\
    readingsBeginUpdate($hash);;\
    readingsBulkUpdate($hash, "pct", $pct);;\
    readingsBulkUpdate($hash, "state", $pct == 0 ? "off" : "on");;\
    readingsEndUpdate($hash, 1);;\
  }\
  \
  return;;\
}


Wäre es für Räume nicht interessanter wie viele Leuchtmittel eingeschaltet sind, anstelle des pct Mittelwertes?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Mave

Ja, ist denn schon Februar?  ;D

Super, vielen Dank. Werde ich gleich mal testen.

Ich denke, es kommt immer auf den Anwendungsfall an.

Ich habe mir innerhalb des Wohnzimmers eine Gruppe von Lampen zusammengefügt, die ich gemeinsam per Dimmer Widget (FTUI) und Alexa schalte bzw. dimme.
Da diese Lampen immer gemeinsam gesteuert werden sollen, ist mir in diesem speziellen Fall die Helligkeit der Gruppe wichtig. Der Mittelwert ist also immer auch die Helligkeit jeder einzelnen Lampe.

Es gibt mit Sicherheit auch Anwendungsfälle, wo die Anzahl der eingeschalteten Lampen in einem Raum (in einer Gruppe) interessant sind.

Mave

Funktioniert einwandfrei.

Vielen herzlichen Dank.

stebar_

Vielen Dank Igami [emoji4]

Wie bekomme ich denn noch den reachable rein?

igami

Zitat von: Mave am 06 Januar 2018, 09:25:31
Ja, ist denn schon Februar?  ;D
Nein, aber es gab neue Leuchtmittel für die Wohnzimmer Strahler. Je zwei vorne und hinten.
Dadurch habe ich 4 Leuchtmittel mit 3 Gruppen: vorne, hinten, alle :D

Zitat von: stebar_ am 06 Januar 2018, 09:36:25
Wie bekomme ich denn noch den reachable rein?
Gucke ich mir im Februar an
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

hoppel118

Zitat von: igami am 06 Januar 2018, 08:33:29
Update für beliebig Viele Gruppen und Räume

defmod HUE_LightGroup_Status notify .+:pct:..+ {\
  my $ID = InternalVal($NAME, "ID", "");;\
  \
  return unless($TYPE eq "HUEDevice" && looks_like_number($ID));;\
  \
  foreach my $group (\
    devspec2array(\
      "TYPE=HUEDevice".\
      ":FILTER=type=(LightGroup|Room)".\
      ":FILTER=lights=(^|.+\\D)$ID(\\D.+|\$)"\
    )\
  ){\
    next unless($group);;\
  \
    my $hash = $defs{$group};;\
    my $lights = InternalVal($group, "lights", "");;\
    my $count = int(split(",", $lights));;\
    $lights =~ s/,/|/g;;\
    my $pct;;\
    $pct += (split(/[\s]+/, $_))[3]\
      foreach (split("\n", fhem("list TYPE=HUEDevice:FILTER=ID=$lights pct", 1)));;\
    $pct /= $count;;\
\
    readingsBeginUpdate($hash);;\
    readingsBulkUpdate($hash, "pct", $pct);;\
    readingsBulkUpdate($hash, "state", $pct == 0 ? "off" : "on");;\
    readingsEndUpdate($hash, 1);;\
  }\
  \
  return;;\
}


Wäre es für Räume nicht interessanter wie viele Leuchtmittel eingeschaltet sind, anstelle des pct Mittelwertes?

Sorry, wegen der wahrscheinlich dummen Frage, bin noch frisch im Umgang mit FHEM. Ich versuche gerade genau so etwas. Ist das mittlerweile im offiziellen Code?


  • Wenn ja, was muss ich machen, damit diese Readings mit meinen Gruppen verknüpft werden?
  • Wenn nicht, wo genau ist dieser Code einzufügen?

Danke und Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi