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); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden