Funklast bei LightScene minimieren

Begonnen von roedert, 06 Februar 2014, 02:11:17

Vorheriges Thema - Nächstes Thema

roedert

Ich habe in 2 Räumen an einigen diverse LEDs installiert - geschaltet über 6 bis 8 FS20-Komponenten.
Wenn ich dort jetzt mittels Fernbedienung hintereinander zwischen einigen LightScene's  wechsle, werden jedesmal alle Schalter angesprochen, d.h. eine bereits eingeschaltete Lampe wird nochmals eingeschaltet und bei aus genauso.
Dadurch kommt eine sehr hohe Funklast zusammen, die schnell mal zum berühmten LOVF führt,

Gibt es einen Weg, in der LightScene vor dem Senden des Schaltbefehls den aktuellen Status eines jeden Schalters zu prüfen und entsprechend nur zu Senden wenn der Status abweicht?

justme1968

ich bin dabei in LightScene eine option einzubauen das nur geschaltet wird wenn der zustand sich vom aktuellen unterscheidet.

bis dahin kannst du das aber manuell erreichen wenn du die set kommandos in den szenen so bearbeitest das du die FILTER syntax von hier http://forum.fhem.de/index.php/topic,17074.msg112685.html#msg112685 verwendest.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

probier mal die angehängte version.

neu ist das attribut onlyIfChanged.

sobald es für die LightScene gesetzt ist wird bei jedem device beim schalten zuerst geprüft ob der aktuelle status ungleich dem gespeicherten status ist und nur dann geschaltet.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

roedert

Zitat von: justme1968 am 06 Februar 2014, 22:44:18
probier mal die angehängte version.

Hallo Andre,
sieht doch schonmal gut aus .... danke für die schnelle Umsetzung.
Beim Umschalten zwischen den Scene's wird wesentlich weniger "sinnlos" gefunkt.

Neu und etwas komisch sind nur die on/off-Einträge im Log ohne weitere Informationen:
2014.02.07 02:19:20 3: off
2014.02.07 02:19:20 3: on
2014.02.07 02:19:20 3: FS20 set Wohnzimmer.Bar.LED on
2014.02.07 02:19:20 3: off
2014.02.07 02:19:20 3: on
2014.02.07 02:19:20 3: FS20 set Wohnzimmer.Couch.LED on
2014.02.07 02:19:20 3: off
2014.02.07 02:19:20 3: on
2014.02.07 02:19:20 3: FS20 set Wohnzimmer.Leinwand.LED on
2014.02.07 02:19:20 3: off
2014.02.07 02:19:20 3: on
2014.02.07 02:19:20 3: FS20 set Wohnzimmer.Pflanzen.Licht on
2014.02.07 02:19:20 3: off
2014.02.07 02:19:20 3: bri 134 : xy 0.3931,0.4828
2014.02.07 02:19:47 3: on
2014.02.07 02:19:47 3: off
2014.02.07 02:19:47 3: FS20 set Wohnzimmer.Pflanzen.Licht off
2014.02.07 02:19:48 3: bri 134 : xy 0.3931,0.4828
2014.02.07 02:19:48 3: bri 88 : xy 0.5033,0.398

justme1968

die  log einträge sind noch debug info von mir. die kommen noch raus.

ich bin noch am überlegen das attribut auf die device ebene zu ziehen. gerade bei den hue devices die nicht unbedingt sychron den aktuellen status haben kann es sonst passieren das sie nicht richtig geschaltet werden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

roedert

Wieso, gerade die HUEs sollten doch in FHEM den aktuellen Status haben - die sind ja bidirektional, genau wie HM oder PCA301.
Abweichung kannst du doch eigentlich nur bei unidirektionalen Devices wie IT oder FS20 haben.

Um es universell zu lösen könnten man ja auch beide Möglichkeiten anbieten - auf Device- oder LightScene-Ebene ... wenn das nicht zu viel Aufwand ist.
Den größeren Nutzen sehe ich aber (zumindest für mich) auch LightScene-Ebene so wie es jetzt gelöst ist.

Gruß Tilo

justme1968

die hues sind zwar bidirektional aber wenn sie nicht über fhem geschaltet werden (also z.b. über einen lichtschalter oder eine lc remote oder die app) erfährt fhem davon nur verzögert. je nach dem entweder weil es die bridge auch noch nicht weiß (zigbee) ist asynchron oder weil die bridge nicht aktiv an fhem meldet sondern gepollt wird.

das auf beiden ebenen zu machen ist kein problem.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

ich hab eben eine version eingecheckt bei der das attribut auf device und auf szenen ebene gesetzt werden kann. die device ebene hat vorrang. den namen habe ich auf lightSceneRestoreOnlyIfChanged geändert.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

minicupper

Hallo,
versuche gerade verzweifelt das Attribut lightSceneRestoreOnlyIfChanged zu setzen aber es will einfach nicht funktionieren. Wie müsste der Code hierfür aussehen?
Gruß
Gero

justme1968

das attribut wird nicht in der LightScene sondern in den beteiligten devices gesetzt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

minicupper

Hallo,
jetzt habe ich's kapiert! Im Device das Userattribut lightSceneRestoreOnlyIfChanged:0,1 setzen und dann das daraus entstehende Attribut auf 1:


# Definition TEST
define TestIT IT 0FF0F0000F FF F0
attr TestIT userattr lightSceneRestoreOnlyIfChanged:0,1
attr TestIT lightSceneRestoreOnlyIfChanged 1


Funzt prima.
Danke für die Hilfe,
Gero