NEWS
Ccu.io regaIndex und regaObjects wird ersetzt durch?
-
Nabend zusammen,
ich habe mich bisher und das auch erst seit kurzem mit ccu.io beschäftigt und auch schon fleißig Scripte erstellt. Bei der Portierung nach iobroker habe ich aber noch nicht so wirklich verstanden wie die beiden Objekte regaIndex und regaObjects ersetzt werden müssen. Hierzu mal ein ccu.io Beispielscript. Das Script schaltet in der Küche, Wohzimmer oder in allen Räumen das Licht entweder an oder aus, aber nur für die Lichter, die auch tatsächlich aus oder an sind. Dazu nutze ich an vielen Stellen die Objekte regaIndex und regaObjects zur Ermittlung von devices, channels und DPs. Wie muss ich das jetzt in iobroker scripten, damit es funktioniert. Bin für jeden Hinweis dankbar.
Beste Grüße
Carsten
function allLightsToggle(obj) { var idRole = regaIndex.Name["Licht"][0]; // ID des Gewerks mit dem Namen "Licht" ermitteln var arrWithChannelIds = []; // alle IDs der Kanäle im Gewerk ermitteln /* Alle ChannelIds bestimmen, die zu dem Raum gehören für den der Event ausgelöst wurde. */ /* Wenn kein Raum gefunden wird, enthält arrWithChannelIds alle Ids aus dem Gewerk Licht. */ if(regaObjects[regaIndex.Name["Kueche"][0]].Channels.indexOf(obj.channel.id) != -1) { arrWithChannelIds = regaObjects[regaIndex.Name["Kueche"][0]].Channels; } else if(regaObjects[regaIndex.Name["Wohnzimmer"][0]].Channels.indexOf(obj.channel.id) != -1) { arrWithChannelIds = regaObjects[regaIndex.Name["Wohnzimmer"][0]].Channels; } else { arrWithChannelIds = regaObjects[regaIndex.Name["Licht"][0]].Channels; } var cnt = 0; for (var i = 0; i < arrWithChannelIds.length; i++) { var channelName = regaObjects[arrWithChannelIds[i]].Name; switch(regaObjects[arrWithChannelIds[i]].HssType) { case 'SWITCH': if(obj.channel.name.match(/aus:/) && getState(channelName, "STATE")) { setTimeout(function(_NAME) { setState(_NAME, false); }, cnt * 500, channelName); cnt++; } else if(obj.channel.name.match(/an:/) && !getState(channelName, "STATE")) { setTimeout(function(_NAME) { setState(_NAME, true); }, cnt * 500, channelName); cnt++; } break; case 'DIMMER': if(obj.channel.name.match(/aus:/) && getState(channelName, "LEVEL") > 0) { setTimeout(function(_NAME) { setState(_NAME, 0); }, cnt * 500, channelName); cnt++; } else if(obj.channel.name.match(/an:/) && getState(channelName, "LEVEL") == 0) { setTimeout(function(_NAME) { setState(_NAME, 1); }, cnt * 500, channelName); cnt++; } break; default: log("function: allLightsOff -> unknown Device in Gewerk Licht: <<" + channelName + ">> Type: <<" + regaObjects[arrWithChannelIds[i]].HssType + ">>"); } } } // Lichter aus oder an subscribe({channel:/^Alle Lichter( | Wohnzimmer | Kueche )(aus|an):[0-9]{1,2}$/}, function (obj) { allLightsToggle(obj); });
-
Hallo zusammen,
niemand eine Idee, oder zu einfach? Vielleicht seh ich ja gerade nur den Wald vor lauter Bäumen nicht.
Beste Grüße
Carsten
-
Wer die Doku findet und auch liest der braucht nicht fragen :D. Lösung wäre dann die Nutzung des Selektors $(selector). Sehr mächtig und auch einfach in der Nutzung.