NEWS
[Frage]Aufzählungen/Gewerke STATES nicht CHANNELS abfragen
-
Hallo,
im Skript zum Zählen der eingeschalteten Lichter http://forum.iobroker.net/viewtopic.php … 79c1#p6625 frage ich alle dem Gewerk Licht zugeordneten Channels mit der State.id STATE oder LEVEL ab````
var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Licht
var cacheSelectorLevel = $('channelstate.id=*.LEVEL');Diese werden dann später im Skript überwacht und bei Änderung zu true bzw. >0% gezählt. Soweit klar. Ich nutze nun für die Steuerung meines Lichtes bei vielen Dimmern (wenn vorhanden) die virtuellen Kanäle. Da kann es durchaus vorkommen, dass einer der Kanäle 1-3 einen LEVEL Datenpunkt hat, der auf über 0% steht und das Licht wegen der Verknüpfungsregeln trotzdem aus ist. Für genau diesen Fall gibt es ja den Datenpunkt LEVEL_REAL. Der zeigt über alle Kanäle den gleichen Wert und zwar die wirkliche Helligkeit der angeschlossenen Leuchtmittel, level real eben :-D Da liegt es nahe, diesen Datenpunkt im Lichter-zählen-Skript abzufragen. Das geht ja auch sehr leicht analog zu obigen Code mit```` var cacheSelectorLevelReal = $('channel[state.id=*.LEVEL_REAL](functions="Licht")');
Problem: Alle Dimmer, die einen LEVEL_REAL Datenpunkt haben, haben natürlich auch drei LEVEL Datenpunkte und werden daher mehrfach gezählt.
Ich habe versucht, das zu umgehen. Ich habe im Reiter Aufzählungen eine neue Aufzählung/Gewerk "countLights" angelegt und nur jeweils die relevanten Datenpunkte der Geräte zugeordnet (Schalter -> STATE, alte Dimmer ohne virtuelle Kanäle -> LEVEL, neue Dimmer mit virtuellen Kanälen LEVEL_REAL).
Den Code geändert:var cacheSelectorState = $('channel[state.id=*.STATE](functions="countLights")'); // Gewerk countLights var cacheSelectorLevel = $('channel[state.id=*.LEVEL](functions="countLights")'); var cacheSelectorLevelReal = $('channel[state.id=*.LEVEL_REAL](functions="countLights")');
Funktioniert nicht.
Beim Vergleich mit der dem Homematic-Gewerk Licht fällt mir auf, dass in dieser Aufzählung die Kanäle gelistet sind, nicht die States.
Frage: Wie muss ich den Selektor abändern, damit die States durchgezählt werden?
Gruß
Pix
-
kommt mir vor wie meine Hue Versuche. Da hat er auch immer alles gedoppelt, egal ob ich nur in einigen Bereichen als function "Hue" eingetragen hatte.
Lösung habe ich leider nicht gefunden (bzw ich habe manuell ein Array erstellt)
-
> Frage: Wie muss ich den Selektor abändern, damit die States durchgezählt werden?
Das würde mich auch interessieren! Wenn nämlich die Datem aus einer CCU übernommen werden, dann werden in den Gewerken (also den enum.functions) die Einträge als "channels" und nicht als "states" eingetragen. Manuell habe ich dazu aber noch keine Möglichkeit gefunden. Weiß hier jemand Abhilfe?