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); });