Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Ccu.io regaIndex und regaObjects wird ersetzt durch?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Ccu.io regaIndex und regaObjects wird ersetzt durch?

    This topic has been deleted. Only users with topic management privileges can see it.
    • carsten04
      carsten04 Developer last edited by

      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);
      });
      
      
      1 Reply Last reply Reply Quote 0
      • carsten04
        carsten04 Developer last edited by

        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

        1 Reply Last reply Reply Quote 0
        • carsten04
          carsten04 Developer last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          674
          Online

          31.7k
          Users

          79.7k
          Topics

          1.3m
          Posts

          1
          3
          1054
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo