Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

Geplant Angeheftet Gesperrt Verschoben Tester
appdark-modeiqontrolresponsivevisvisualisierungvisualizationwidget
7.6k Beiträge 296 Kommentatoren 7.0m Aufrufe 201 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B blackeagle998

    @s-bormann
    Du bist uns definitiv einige Schritte / Meilen voraus 😊

    1. wie kriege ich von einem State nicht den Wert, sondern den dazugehörigen String (bspw. "Ampel rot")?
      Beispiel im RAW:
    states: {
    "0": "Ampel rot",
    "1": "Ampel gelb",
    "2": "Ampel grün"
    }
    

    --> getState liefert hier ja nur 0, 1 oder 2.
    Irgendwann habe ich mal im Forum dafür folgende funktionierende Funktionen gefunden:

    function getStatetxt(id, val) {
        let states = getStatesObj(id);
        if(states) return states[val];
        else return null;
    }
    
    function getStatesObj(id) {
        if(!getObject(id)) {
            log(id + ': kein Objekt', 'warn');
            return null;
        }
        let obj = getObject(id);
        if (!obj.common.states) {
            log(id + ': keine Zustandtexte', 'warn');
            return null;
        }
        var states = obj.common.states;
        if (typeof states == 'string') {
            var arr = states.split(';');
            states = {};
            for(var i = 0; i < arr.length; i++) {
                var ele = arr[i].split(':');
                states[ele[0]] = ele[1];
            }
        }
        return states;
    }
    
    1. Nochmal die Frage, wie ich den getState Rückgabewert in eine andere Funktion als receivePostMessage bekomme.
      Folgendes Beispiel soll ungefähr verdeutlichen worauf ich hinaus will:
    function showBatteryGIF() {
       let vacuum_state = sendPostMessage("getState", 'mihome-vacuum.0.info.state');
       if (vacuum_state == 8){
           blende GIF Battery ein
       }
    }
    
    function clearCleanCounter(){
        let vacuum_state = sendPostMessage("getState", 'mihome-vacuum.0.info.state');
        if (vacuum_state == 1){
           setze CleanCounter auf 0 zurück
       }
    }
    

    Ich habe zwei verschiedene Funktionen, die beide den State desselben Datenpunktes abfragen, aber zu völlig unterschiedlichen Zeiten benutzt werden können.

    Bisher habe ich verstanden, dass die Funktion receivePostMessage den Rückgabewert verarbeiten kann, deshalb habe ich teshalber folgendes gebaut, was auch funktioniert:

    var img_locked 		= 'http://192.x.x.x:8082/iqontrol.meta/userimages/usericons/vacuum/locked.png';
    var img_unlocked 	= 'http://192.x.x.x:8082/iqontrol.meta/userimages/usericons/vacuum/unlocked.png';
    
    window.addEventListener("message", receivePostMessage, false);
    function receivePostMessage(event) { //event = {data: message data, origin: url of origin, source: id of sending element}
      if(event.data && event.data.command) switch(event.data.command){
        case "getState":
          if (((event.data.stateId == '0_userdata.0.vacuum.rooms.Bad.locked'){
    	let img_room_locked = document.getElementById('img_room_locked');
    	if (event.data.value.val){
              img_room_locked.setAttribute("onclick", "setState('0_userdata.0.vacuum.room_lock', 'Bad')");
    	  img_room_locked.setAttribute("src", img_locked);
    	}else{
              img_room_locked.setAttribute("onclick", "setState('0_userdata.0.vacuum.room_lock', 'Bad')");
    	  img_room_locked.setAttribute("src", img_unlocked);
    	}
          }
          break;
      }
    }
    

    Momentan sehe ich mit dieser Funktion nur die Möglichkeit, jeden einzelnen Datenpunkt innerhalb jedes einzelnen Case (getState oder setState oder.....) abzufragen und den Rückgabewert auszuwerten.
    Im obigen Beispiel ist genau definiert, was passieren soll, wenn der Rückgabewert true / false ist. Was wäre jetzt aber, wenn ich im true-Fall was anderes ausführen lassen will, aber nicht parallel zu dem Beispiel, sondern alternativ?

    Ich hoffe das ist halbwegs verständlich ausgedrückt, ansonsten müssen wir mal chatten 🙂

    s.bormannS Offline
    s.bormannS Offline
    s.bormann
    Most Active
    schrieb am zuletzt editiert von
    #3389

    @blackeagle998 sagte in Test Adapter iQontrol 1.3.x:

    @s-bormann
    Du bist uns definitiv einige Schritte / Meilen voraus 😊

    1. wie kriege ich von einem State nicht den Wert, sondern den dazugehörigen String (bspw. "Ampel rot")?
      Beispiel im RAW:
    states: {
    "0": "Ampel rot",
    "1": "Ampel gelb",
    "2": "Ampel grün"
    }
    

    --> getState liefert hier ja nur 0, 1 oder 2.

    Nein, ich bin Euch da nicht sehr weit voraus. Auch bei mir ist das viel abgucken und sehr viel try'n'error.

    So habe ich das mit dem String (oder wie ich es bei mir intern genannt habe 'plainText') gar nicht bedacht. Habe deshalb die Rückmeldung für die postMessage-Kommunikation jetzt in der aktuellen Github-Version noch mal erweitert:

    Jetzt wird nicht nur der nackte State geliefert, sondern es werden noch einige Daten (z.B. value, min, max, readonly etc.) aus dem zugehörigen Objekt des Datenpunktes geliefert - oder einfach gesagt, genau das, was iQontrol auch intern auswertet und sieht. Die Rückmeldung auf ein getState, getStateSubscribed, getWidgetState oder getWidgetStateSubscribed sieht jetzt so aus:

    event.data.value = {
    	val: <value>,
    	unit: "<unit>",
    	plainText: "<clear text of val, for example taken from valuelist>",
    	min: <minimum>,
    	max: <maximum>,
    	valuelist: {<object with possible values and corresponding clear text>},
    	targetValues: {<target value list>},
    	ack: <true|false>,
    	readonly: <true|false>,
    	custom: {<object with custom settings>},
    	from: "<source of state>",
    	lc: <timestamp of last change>,
    	ts: <timestamp of last actualization>,
    	q: <quality of signal>,
    	role: "<role of state>",
    	type: "<string|number|boolean>"
    }
    
    1. Nochmal die Frage, wie ich den getState Rückgabewert in eine andere Funktion als receivePostMessage bekomme.
      Folgendes Beispiel soll ungefähr verdeutlichen worauf ich hinaus will:
    function showBatteryGIF() {
       let vacuum_state = sendPostMessage("getState", 'mihome-vacuum.0.info.state');
       if (vacuum_state == 8){
           blende GIF Battery ein
       }
    }
    
    function clearCleanCounter(){
        let vacuum_state = sendPostMessage("getState", 'mihome-vacuum.0.info.state');
        if (vacuum_state == 1){
           setze CleanCounter auf 0 zurück
       }
    }
    

    Ja, da muss man etwas umdenken und weg vom "linearen", hin zum parallelen oder - fachlich korrekt "synchronen" ausführen von Befehlen. Musste ich auch erst mal kapieren. Die Idee ist die:

    Als erstes definierst Du, was passieren soll, wenn Dir ein State geliefert wird. Das machst Du alles (wie Du es unten schon im nächsten Beispiel getan hast) innerhalb der receivePostMessage-Funktion. Die wird also am Ende ziemlich lang werden, weil da die ganze Logik reingepackt wird. Also im konkreten Beispiel müsste da stehen:
    Wenn Du einen neuen Zustand der Batterie empfängst, dann zeige das Battrie-Logo, wenn der Zustand leer ist. Ansonsten verstecke das Bild.

    Erst als letztes subscribest Du dann, ganz am Ende des Scripts, alle States, die Du für Dein Widget benötigst.

    Ich habe zwei verschiedene Funktionen, die beide den State desselben Datenpunktes abfragen, aber zu völlig unterschiedlichen Zeiten benutzt werden können.

    Bisher habe ich verstanden, dass die Funktion receivePostMessage den Rückgabewert verarbeiten kann, deshalb habe ich teshalber folgendes gebaut, was auch funktioniert:

    var img_locked 		= 'http://192.x.x.x:8082/iqontrol.meta/userimages/usericons/vacuum/locked.png';
    var img_unlocked 	= 'http://192.x.x.x:8082/iqontrol.meta/userimages/usericons/vacuum/unlocked.png';
    
    window.addEventListener("message", receivePostMessage, false);
    function receivePostMessage(event) { //event = {data: message data, origin: url of origin, source: id of sending element}
      if(event.data && event.data.command) switch(event.data.command){
        case "getState":
          if (((event.data.stateId == '0_userdata.0.vacuum.rooms.Bad.locked'){
    	let img_room_locked = document.getElementById('img_room_locked');
    	if (event.data.value.val){
              img_room_locked.setAttribute("onclick", "setState('0_userdata.0.vacuum.room_lock', 'Bad')");
    	  img_room_locked.setAttribute("src", img_locked);
    	}else{
              img_room_locked.setAttribute("onclick", "setState('0_userdata.0.vacuum.room_lock', 'Bad')");
    	  img_room_locked.setAttribute("src", img_unlocked);
    	}
          }
          break;
      }
    }
    

    Genau so ist es richtig. Hier muss alle Logik rein.
    Wenn man Logiken benötigt, die mehrere States kombinieren, dann muss man sich die States, die man empfängt, in Variablen ablegen und dann jeweils eine ausgelagerte Funktion aufrufen. Schau mal das map.html-Beispiel an:

    map.html

    Hier wird jeweils für altitude, longitude und zoom beim Empfangen des States eine entsprechende Variable gesetzt und danach repositionMap() aufgerufen:

    case "Map.Position.latitude":
    console.log("Set latitude to " + event.data.value.val);
    mapPositionLatitude = parseFloat(event.data.value.val) || 0;
    if(mymap) repositionMap();
    break;
    

    In der repositionMap()-Funktion wird dann aus den drei Variablen altitude, longitude und zoom die neue Kartenposition angefahren. Wenn sich eine der drei Variablen ändert, weil eben ein aktualisierter State geliefert wird, wird die Karte neu positioniert.
    Man könnte das jetzt auch noch so erweitern, dass die repositionMap()-Funktion zuerst schaut, ob schon alle drei Variablen empfangen wurden if(altitude != null && longitude != null && zoom != null){...} (das fehlt im map.html-Beispiel eigentlich noch).

    Wenn man dann die drei States für alt, long und zoom subscribed, kommen die Werte (in ggf. auch zufälliger Reihenfolge!) kurze Zeit später an:
    Dann wird meinetwegen zuerst altitude empfangen, repositionMap() aufgerufen -> bricht ab, weil longitude und zoom noch fehlen.
    Dann kommt z.B. zoom als nächstes rein, repositionMap() wird wieder aufgerufen -> bricht ab, weil longitude immer noch fehlt.
    Dann kommt als letztes irgendwann longitude rein -> jetzt läuft die Funktion durch, weil alle drei Werte da sind.

    Jetzt etwas verständlicher?

    B 1 Antwort Letzte Antwort
    1
    • s.bormannS s.bormann

      @blackeagle998 sagte in Test Adapter iQontrol 1.3.x:

      @s-bormann
      Du bist uns definitiv einige Schritte / Meilen voraus 😊

      1. wie kriege ich von einem State nicht den Wert, sondern den dazugehörigen String (bspw. "Ampel rot")?
        Beispiel im RAW:
      states: {
      "0": "Ampel rot",
      "1": "Ampel gelb",
      "2": "Ampel grün"
      }
      

      --> getState liefert hier ja nur 0, 1 oder 2.

      Nein, ich bin Euch da nicht sehr weit voraus. Auch bei mir ist das viel abgucken und sehr viel try'n'error.

      So habe ich das mit dem String (oder wie ich es bei mir intern genannt habe 'plainText') gar nicht bedacht. Habe deshalb die Rückmeldung für die postMessage-Kommunikation jetzt in der aktuellen Github-Version noch mal erweitert:

      Jetzt wird nicht nur der nackte State geliefert, sondern es werden noch einige Daten (z.B. value, min, max, readonly etc.) aus dem zugehörigen Objekt des Datenpunktes geliefert - oder einfach gesagt, genau das, was iQontrol auch intern auswertet und sieht. Die Rückmeldung auf ein getState, getStateSubscribed, getWidgetState oder getWidgetStateSubscribed sieht jetzt so aus:

      event.data.value = {
      	val: <value>,
      	unit: "<unit>",
      	plainText: "<clear text of val, for example taken from valuelist>",
      	min: <minimum>,
      	max: <maximum>,
      	valuelist: {<object with possible values and corresponding clear text>},
      	targetValues: {<target value list>},
      	ack: <true|false>,
      	readonly: <true|false>,
      	custom: {<object with custom settings>},
      	from: "<source of state>",
      	lc: <timestamp of last change>,
      	ts: <timestamp of last actualization>,
      	q: <quality of signal>,
      	role: "<role of state>",
      	type: "<string|number|boolean>"
      }
      
      1. Nochmal die Frage, wie ich den getState Rückgabewert in eine andere Funktion als receivePostMessage bekomme.
        Folgendes Beispiel soll ungefähr verdeutlichen worauf ich hinaus will:
      function showBatteryGIF() {
         let vacuum_state = sendPostMessage("getState", 'mihome-vacuum.0.info.state');
         if (vacuum_state == 8){
             blende GIF Battery ein
         }
      }
      
      function clearCleanCounter(){
          let vacuum_state = sendPostMessage("getState", 'mihome-vacuum.0.info.state');
          if (vacuum_state == 1){
             setze CleanCounter auf 0 zurück
         }
      }
      

      Ja, da muss man etwas umdenken und weg vom "linearen", hin zum parallelen oder - fachlich korrekt "synchronen" ausführen von Befehlen. Musste ich auch erst mal kapieren. Die Idee ist die:

      Als erstes definierst Du, was passieren soll, wenn Dir ein State geliefert wird. Das machst Du alles (wie Du es unten schon im nächsten Beispiel getan hast) innerhalb der receivePostMessage-Funktion. Die wird also am Ende ziemlich lang werden, weil da die ganze Logik reingepackt wird. Also im konkreten Beispiel müsste da stehen:
      Wenn Du einen neuen Zustand der Batterie empfängst, dann zeige das Battrie-Logo, wenn der Zustand leer ist. Ansonsten verstecke das Bild.

      Erst als letztes subscribest Du dann, ganz am Ende des Scripts, alle States, die Du für Dein Widget benötigst.

      Ich habe zwei verschiedene Funktionen, die beide den State desselben Datenpunktes abfragen, aber zu völlig unterschiedlichen Zeiten benutzt werden können.

      Bisher habe ich verstanden, dass die Funktion receivePostMessage den Rückgabewert verarbeiten kann, deshalb habe ich teshalber folgendes gebaut, was auch funktioniert:

      var img_locked 		= 'http://192.x.x.x:8082/iqontrol.meta/userimages/usericons/vacuum/locked.png';
      var img_unlocked 	= 'http://192.x.x.x:8082/iqontrol.meta/userimages/usericons/vacuum/unlocked.png';
      
      window.addEventListener("message", receivePostMessage, false);
      function receivePostMessage(event) { //event = {data: message data, origin: url of origin, source: id of sending element}
        if(event.data && event.data.command) switch(event.data.command){
          case "getState":
            if (((event.data.stateId == '0_userdata.0.vacuum.rooms.Bad.locked'){
      	let img_room_locked = document.getElementById('img_room_locked');
      	if (event.data.value.val){
                img_room_locked.setAttribute("onclick", "setState('0_userdata.0.vacuum.room_lock', 'Bad')");
      	  img_room_locked.setAttribute("src", img_locked);
      	}else{
                img_room_locked.setAttribute("onclick", "setState('0_userdata.0.vacuum.room_lock', 'Bad')");
      	  img_room_locked.setAttribute("src", img_unlocked);
      	}
            }
            break;
        }
      }
      

      Genau so ist es richtig. Hier muss alle Logik rein.
      Wenn man Logiken benötigt, die mehrere States kombinieren, dann muss man sich die States, die man empfängt, in Variablen ablegen und dann jeweils eine ausgelagerte Funktion aufrufen. Schau mal das map.html-Beispiel an:

      map.html

      Hier wird jeweils für altitude, longitude und zoom beim Empfangen des States eine entsprechende Variable gesetzt und danach repositionMap() aufgerufen:

      case "Map.Position.latitude":
      console.log("Set latitude to " + event.data.value.val);
      mapPositionLatitude = parseFloat(event.data.value.val) || 0;
      if(mymap) repositionMap();
      break;
      

      In der repositionMap()-Funktion wird dann aus den drei Variablen altitude, longitude und zoom die neue Kartenposition angefahren. Wenn sich eine der drei Variablen ändert, weil eben ein aktualisierter State geliefert wird, wird die Karte neu positioniert.
      Man könnte das jetzt auch noch so erweitern, dass die repositionMap()-Funktion zuerst schaut, ob schon alle drei Variablen empfangen wurden if(altitude != null && longitude != null && zoom != null){...} (das fehlt im map.html-Beispiel eigentlich noch).

      Wenn man dann die drei States für alt, long und zoom subscribed, kommen die Werte (in ggf. auch zufälliger Reihenfolge!) kurze Zeit später an:
      Dann wird meinetwegen zuerst altitude empfangen, repositionMap() aufgerufen -> bricht ab, weil longitude und zoom noch fehlen.
      Dann kommt z.B. zoom als nächstes rein, repositionMap() wird wieder aufgerufen -> bricht ab, weil longitude immer noch fehlt.
      Dann kommt als letztes irgendwann longitude rein -> jetzt läuft die Funktion durch, weil alle drei Werte da sind.

      Jetzt etwas verständlicher?

      B Offline
      B Offline
      blackeagle998
      schrieb am zuletzt editiert von
      #3390

      @s-bormann
      Super, jetzt habe ich es verstanden, denke ich zumindest. Da ist tatsächlich Umdenken gefragt.
      Ich denke, dass ich mit dem Zeit/Wetter Widget dann mal anfangen werde, das Staubsauger-Skript ist zu komplex für den Anfang.

      V 1 Antwort Letzte Antwort
      1
      • dslraserD Offline
        dslraserD Offline
        dslraser
        Forum Testing Most Active
        schrieb am zuletzt editiert von dslraser
        #3391

        @Julian-0

        Ich habe das Script nochmal angepasst. Beim Scriptstart wird die Ordnerstruktur erstellt und danach werden dann durch das scheudele die Daten eingelesen und aktualisiert. So gibt es jetzt bei mir keine Fehlermeldung mehr.

        ///////////////Struktur erstellen
        var url = 'http://192.168.1.53/api/epgbouquet?bRef=1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.favourites.tv%22%20ORDER%20BY%20bouquet&stype=tv'; //bRef der entsprechenden Favoritenliste
        request(url, function(err, state, body) {
           if (body) {
               body = JSON.parse(body);
               for (var i = 0; i < body.events.length; i++) {
                   var current_service = body['events'][i]['sname'];
                   var title = body['events'][i]['title'];
                   var shortdesc = body['events'][i]['shortdesc'];
                   var longdesc = body['events'][i]['longdesc'];
                   var sref = body['events'][i]['sref'];
                   var begin_timestamp = body['events'][i]['begin_timestamp'];
                   var duration = (body['events'][i]['duration_sec']) / 60;
                   duration = Math.floor(duration);
                   var time;
        
                   time = new Date(begin_timestamp * 1000).toLocaleTimeString();
        
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".00Alexa_Trigger", {
                       name: current_service + ' Button_Alexa_Trigger',
                       'type': 'boolean',
                       'read': true,
                       'write': true,
                       'role': 'button'
                   });
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".01Sendername", {
                       name: current_service + ' Sender Name',
                       'type': 'string',
                       'read': true,
                       'write': true,
                       'role': 'string'
                   });
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".02EPG_jetzt_Beginn", {
                       name: current_service + ' 02EPG jetzt Beginn',
                       'type': 'string',
                       'read': true,
                       'write': true,
                       'role': 'string'
                   });
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".03EPG_jetzt_Dauer", {
                       name: current_service + ' EPG jetzt Dauer',
                       'type': 'number',
                       'read': true,
                       'write': true,
                       'role': 'number'
                   });
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".04EPG_jetzt_Titel", {
                       name: current_service + ' EPG jetzt Titel',
                       'type': 'string',
                       'read': true,
                       'write': true,
                       'role': 'string'
                   });
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".05EPG_jetzt_Kurzinfo", {
                       name: current_service + ' EPG jetzt Kurzinfo',
                       'type': 'string',
                       'read': true,
                       'write': true,
                       'role': 'string'
                   });
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".06EPG_jetzt_Langinfo", {
                       name: current_service + ' EPG jetzt Langinfo',
                       'type': 'string',
                       'read': true,
                       'write': true,
                       'role': 'string'
                   });
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".07EPG_gesamt", {
                       name: current_service + ' EPG gesamt',
                       'type': 'string',
                       'read': true,
                       'write': true,
                       'role': 'string'
                   });
                   createState("javascript.0.VU.Wohnzimmer." + current_service + ".08Servicereference", {
                       name: current_service + ' Servicereference',
                       'type': 'string',
                       'read': true,
                       'write': true,
                       'role': 'string'
                   });
        
               }
           } else {
               log('EPG_now meldet Fehler: ' + err, 'error');
           }
        });
        
        ///////////////Daten einlesen
        schedule('*/1 * * * *', function() {
           var url = 'http://192.168.1.53/api/epgbouquet?bRef=1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.favourites.tv%22%20ORDER%20BY%20bouquet&stype=tv'; //bRef der entsprechenden Favoritenliste
           request(url, function(err, state, body) {
               if (body) {
                   body = JSON.parse(body);
                   for (var i = 0; i < body.events.length; i++) {
                       var current_service = body['events'][i]['sname'];
                       var title = body['events'][i]['title'];
                       var shortdesc = body['events'][i]['shortdesc'];
                       var longdesc = body['events'][i]['longdesc'];
                       var sref = body['events'][i]['sref'];
                       var begin_timestamp = body['events'][i]['begin_timestamp'];
                       var duration = (body['events'][i]['duration_sec']) / 60;
                       duration = Math.floor(duration);
                       var time;
        
                       time = new Date(begin_timestamp * 1000).toLocaleTimeString();
                       setState("javascript.0.VU.Wohnzimmer." + current_service + ".01Sendername", current_service);
                       setState("javascript.0.VU.Wohnzimmer." + current_service + ".02EPG_jetzt_Beginn", time);
                       setState("javascript.0.VU.Wohnzimmer." + current_service + ".03EPG_jetzt_Dauer", duration);
                       setState("javascript.0.VU.Wohnzimmer." + current_service + ".04EPG_jetzt_Titel", title);
                       setState("javascript.0.VU.Wohnzimmer." + current_service + ".05EPG_jetzt_Kurzinfo", shortdesc);
                       setState("javascript.0.VU.Wohnzimmer." + current_service + ".06EPG_jetzt_Langinfo", longdesc);
                       setState("javascript.0.VU.Wohnzimmer." + current_service + ".07EPG_gesamt", 'Beginn: ' + time + '\n' + 'Dauer: ' + duration + '\n' + title + '\n' + shortdesc + '\n' + longdesc);
                       setState("javascript.0.VU.Wohnzimmer." + current_service + ".08Servicereference", sref);
        
                   }
               } else {
                   log('EPG_now meldet Fehler: ' + err, 'error');
               }
           });
        });
        

        1 Antwort Letzte Antwort
        0
        • s.bormannS s.bormann

          @dslraser sagte in Test Adapter iQontrol 1.3.x:

          @s-bormann sagte in Test Adapter iQontrol 1.3.x:

          Für die REMOTE-Sektionen wurde jetzt eine eigene Option eingebaut (aktuelle Github-Version).

          Funktioniert auch bei mir, dann werde ich mal alle meine Sender einbauen 👍
          Kannst Du bitte die Beschriftung für "Channels:" auch "umbenennbar" machen.

          Bildschirmfoto 2020-10-09 um 23.03.35.png

          Ist es schon. Guck noch mal in den Optionen. LG

          K Offline
          K Offline
          Kueppert
          schrieb am zuletzt editiert von
          #3392

          @s-bormann sagte in Test Adapter iQontrol 1.3.x:

          @dslraser sagte in Test Adapter iQontrol 1.3.x:

          @s-bormann sagte in Test Adapter iQontrol 1.3.x:

          Für die REMOTE-Sektionen wurde jetzt eine eigene Option eingebaut (aktuelle Github-Version).

          Funktioniert auch bei mir, dann werde ich mal alle meine Sender einbauen 👍
          Kannst Du bitte die Beschriftung für "Channels:" auch "umbenennbar" machen.

          Bildschirmfoto 2020-10-09 um 23.03.35.png

          Ist es schon. Guck noch mal in den Optionen. LG

          Wie hast du die Channels jeweils hinterlegt? Du nutzt doch auch den HarmonyHub, oder? Da kannst ja nur 0-9 auswählen als Button. Nutzt du hier im Hintergrund noch ein SKript? zB für "0012, select"?

          UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

          dslraserD 1 Antwort Letzte Antwort
          0
          • K Kueppert

            @s-bormann sagte in Test Adapter iQontrol 1.3.x:

            @dslraser sagte in Test Adapter iQontrol 1.3.x:

            @s-bormann sagte in Test Adapter iQontrol 1.3.x:

            Für die REMOTE-Sektionen wurde jetzt eine eigene Option eingebaut (aktuelle Github-Version).

            Funktioniert auch bei mir, dann werde ich mal alle meine Sender einbauen 👍
            Kannst Du bitte die Beschriftung für "Channels:" auch "umbenennbar" machen.

            Bildschirmfoto 2020-10-09 um 23.03.35.png

            Ist es schon. Guck noch mal in den Optionen. LG

            Wie hast du die Channels jeweils hinterlegt? Du nutzt doch auch den HarmonyHub, oder? Da kannst ja nur 0-9 auswählen als Button. Nutzt du hier im Hintergrund noch ein SKript? zB für "0012, select"?

            dslraserD Offline
            dslraserD Offline
            dslraser
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #3393

            @Kueppert sagte in Test Adapter iQontrol 1.3.x:

            Wie hast du die Channels jeweils hinterlegt? Du nutzt doch auch den HarmonyHub, oder?

            Die Sender schalte ich über meine VU und ein Blockly.

            Harmony Aktionen (activity) habe ich hier drinn.
            Screenshot_20201013-142354_Chrome.jpg

            1 Antwort Letzte Antwort
            0
            • E Offline
              E Offline
              eMd
              schrieb am zuletzt editiert von
              #3394

              Hallo,

              ich habe gerade für eine Kachel Additional Controls hinterlegt, diese hätte ich gerne in 4 weiteren bestehenden Kacheln auch drin.
              Kann man die irgendwie kopieren?

              MfG
              eMd

              Master: Intel NUC 16GB/500GB
              Slave: Raspberry Pi 3 + Homematicmodul
              Shelly, Google Home, Zigbee Aqara, Sonoff

              Meine VIS: https://youtu.be/JMYr2KYlpME

              s.bormannS 1 Antwort Letzte Antwort
              0
              • dslraserD Offline
                dslraserD Offline
                dslraser
                Forum Testing Most Active
                schrieb am zuletzt editiert von dslraser
                #3395

                @s-bormann
                siehst Du eine Möglichkeit die Ansicht "sortierbar" bzw. die "Anzeigenreihenfolge" verschiebbar zu machen ? Ich hätte z.B. gern die Sender ganz oben (da wo jetzt Pad steht) und darunter EPG usw....

                Bildschirmfoto 2020-10-13 um 19.55.18.png

                EDIT: Zusatzfrage
                Kann man die Hintergrundfarbe der Button oder der ganzen Mediaplayer/Fernbedienung verändern ?
                Hintergrund: manche TV Logos haben teilweise transparente Inhalte und sind dann schlechter zu erkennen.

                Bildschirmfoto 2020-10-13 um 20.14.38.png

                s.bormannS 1 Antwort Letzte Antwort
                0
                • s.bormannS Offline
                  s.bormannS Offline
                  s.bormann
                  Most Active
                  schrieb am zuletzt editiert von
                  #3396

                  @dslraser hi, kannst Du mir bitte noch mal zeigen, wie genau bzw. in welchem Datenformat die Positionsdaten Deiner Familie in die Map kommen? Ggf. mit Screenshot vom Datenpunkt. Danke!

                  dslraserD 1 Antwort Letzte Antwort
                  0
                  • s.bormannS s.bormann

                    @dslraser hi, kannst Du mir bitte noch mal zeigen, wie genau bzw. in welchem Datenformat die Positionsdaten Deiner Familie in die Map kommen? Ggf. mit Screenshot vom Datenpunkt. Danke!

                    dslraserD Offline
                    dslraserD Offline
                    dslraser
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #3397

                    @s-bormann sagte in Test Adapter iQontrol 1.3.x:

                    @dslraser hi, kannst Du mir bitte noch mal zeigen, wie genau bzw. in welchem Datenformat die Positionsdaten Deiner Familie in die Map kommen? Ggf. mit Screenshot vom Datenpunkt. Danke!

                    Ich habe Dir per Chat geschrieben.

                    s.bormannS 1 Antwort Letzte Antwort
                    0
                    • K Offline
                      K Offline
                      Kueppert
                      schrieb am zuletzt editiert von Kueppert
                      #3398

                      Hallo wissende Mituser,
                      ggf. könnt ihr mir hierbei helfen. Ich nutze für die Steuerung meines Samsung-TV einen HarmonyHub. Der Adapter für den Hub stellt mir für Channel nur 0-9 bereit (BUTTONS). Ein Feld für zB eine "12" gibt es nicht.
                      Nun möchte ich in der Fernbedienung "REMOTE_CHANNELS" nutzen.
                      Folgendes habe ich bereits laufen:
                      ein JAVA-Skript, welches nacheinander Buttons drücken kann (zB 1, 2, select) (zu finden unter https://forum.iobroker.net/topic/4704/harmony-hub-sender-umschalten/2).
                      Funktioniert wie folgt:
                      wenn ich zB

                      ["harmony.0.Wohnzimmer_Hub.TV.Number1","harmony.0.Wohnzimmer_Hub.TV.Select"]
                      

                      eintrage, werden die Knöppe 1 und select beim HarmonyHub angesteuert. Dafür muss ich den Code in einen Datenpunkt schreiben, der da bei mir lautet:

                      0_userdata.0.HarmonyHub.ChannelSequenz
                      

                      So weit so gut.
                      Ich habe nun im iQontrol unter RemoteChannels folgendes eingetragen (den selbst erstellten einen DP für beide Sender):
                      db0fb74e-df03-4d3e-96fb-35181d0fd3d6-image.png
                      im Datenpunkt (mit Schraubenschlüssel) dann folgendes hinterlegt:
                      cb336f7d-119d-4bcd-a4a9-03fc64a654fd-image.png
                      Drücke ich nun den Senderbutton "ARD" in der iQontrol-FB, schreibt es mir aber nur "ARD" in den o. g. Datenpunkt, nicht den Code, der da rein müsste...hab ich ggf die Optionen (letztes Bildchen) falsch befüllt??

                      UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                      dslraserD 1 Antwort Letzte Antwort
                      0
                      • K Kueppert

                        Hallo wissende Mituser,
                        ggf. könnt ihr mir hierbei helfen. Ich nutze für die Steuerung meines Samsung-TV einen HarmonyHub. Der Adapter für den Hub stellt mir für Channel nur 0-9 bereit (BUTTONS). Ein Feld für zB eine "12" gibt es nicht.
                        Nun möchte ich in der Fernbedienung "REMOTE_CHANNELS" nutzen.
                        Folgendes habe ich bereits laufen:
                        ein JAVA-Skript, welches nacheinander Buttons drücken kann (zB 1, 2, select) (zu finden unter https://forum.iobroker.net/topic/4704/harmony-hub-sender-umschalten/2).
                        Funktioniert wie folgt:
                        wenn ich zB

                        ["harmony.0.Wohnzimmer_Hub.TV.Number1","harmony.0.Wohnzimmer_Hub.TV.Select"]
                        

                        eintrage, werden die Knöppe 1 und select beim HarmonyHub angesteuert. Dafür muss ich den Code in einen Datenpunkt schreiben, der da bei mir lautet:

                        0_userdata.0.HarmonyHub.ChannelSequenz
                        

                        So weit so gut.
                        Ich habe nun im iQontrol unter RemoteChannels folgendes eingetragen (den selbst erstellten einen DP für beide Sender):
                        db0fb74e-df03-4d3e-96fb-35181d0fd3d6-image.png
                        im Datenpunkt (mit Schraubenschlüssel) dann folgendes hinterlegt:
                        cb336f7d-119d-4bcd-a4a9-03fc64a654fd-image.png
                        Drücke ich nun den Senderbutton "ARD" in der iQontrol-FB, schreibt es mir aber nur "ARD" in den o. g. Datenpunkt, nicht den Code, der da rein müsste...hab ich ggf die Optionen (letztes Bildchen) falsch befüllt??

                        dslraserD Offline
                        dslraserD Offline
                        dslraser
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von dslraser
                        #3399

                        @Kueppert
                        hast mal da im Schraubenschlüssel, wo jetzt ARD steht, mal eine 1 (also das was Du brauchst ) probiert ?

                        K 1 Antwort Letzte Antwort
                        0
                        • dslraserD dslraser

                          @Kueppert
                          hast mal da im Schraubenschlüssel, wo jetzt ARD steht, mal eine 1 (also das was Du brauchst ) probiert ?

                          K Offline
                          K Offline
                          Kueppert
                          schrieb am zuletzt editiert von
                          #3400

                          @dslraser ich brauche da ja 1 und select, also 2 verschiedene Tasten in Folge

                          UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                          dslraserD 2 Antworten Letzte Antwort
                          0
                          • K Kueppert

                            @dslraser ich brauche da ja 1 und select, also 2 verschiedene Tasten in Folge

                            dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #3401

                            @Kueppert
                            Kannst Du nicht den Code den Du brauchst bei Key rein schreiben ? (ich bin gerade unterwegs und kann gerade nichts selbst probieren)

                            1 Antwort Letzte Antwort
                            0
                            • K Kueppert

                              @dslraser ich brauche da ja 1 und select, also 2 verschiedene Tasten in Folge

                              dslraserD Offline
                              dslraserD Offline
                              dslraser
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von dslraser
                              #3402

                              @Kueppert
                              also noch mal kurz zur Erklärung wie ich es gemacht habe (mit einer VU, aber müßte mit dem Harmony HUB auch gehen)
                              Ich habe mir für jeden Sender einen eigenen DP als Button erstellt. (macht ein Script) Dieser Button ist auch bei iQontrol hinterlegt in der Fernbedienung bei den remote Channel (ohne Schraubenschlüssel)
                              Wenn der Button gedrückt wird, dann baut ein Blockly den benötigten Code zusammen und sendet das an den Adapter) Das Prinzip ist also ähnlich, oder ?

                              Screenshot_20201014-101644_Firefox.jpg

                              K 1 Antwort Letzte Antwort
                              0
                              • dslraserD dslraser

                                @Kueppert
                                also noch mal kurz zur Erklärung wie ich es gemacht habe (mit einer VU, aber müßte mit dem Harmony HUB auch gehen)
                                Ich habe mir für jeden Sender einen eigenen DP als Button erstellt. (macht ein Script) Dieser Button ist auch bei iQontrol hinterlegt in der Fernbedienung bei den remote Channel (ohne Schraubenschlüssel)
                                Wenn der Button gedrückt wird, dann baut ein Blockly den benötigten Code zusammen und sendet das an den Adapter) Das Prinzip ist also ähnlich, oder ?

                                Screenshot_20201014-101644_Firefox.jpg

                                K Offline
                                K Offline
                                Kueppert
                                schrieb am zuletzt editiert von
                                #3403

                                @dslraser ja, ist ähnlich, nur dass ich mehrere Buttons hintereinander drücken lassen muss...dann mache ich es so wie du und baue mir ein eigenes Blockly für die Sender. Dann hab ich kein JS übernommen (das ich nicht selbst bearbeiten kann mangels JS-Wissen) sondern ein Blockly, bei dem ich weiß, wie es gehen sollte ^^
                                Danke für den Screen. Werdemich daran orientieren 👍

                                UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                dslraserD 1 Antwort Letzte Antwort
                                0
                                • K Kueppert

                                  @dslraser ja, ist ähnlich, nur dass ich mehrere Buttons hintereinander drücken lassen muss...dann mache ich es so wie du und baue mir ein eigenes Blockly für die Sender. Dann hab ich kein JS übernommen (das ich nicht selbst bearbeiten kann mangels JS-Wissen) sondern ein Blockly, bei dem ich weiß, wie es gehen sollte ^^
                                  Danke für den Screen. Werdemich daran orientieren 👍

                                  dslraserD Offline
                                  dslraserD Offline
                                  dslraser
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #3404

                                  @Kueppert
                                  zu Anfang habe ich das hier benutzt (vielleicht kannst Du das als Vorlage gebrauchen und umarbeiten, dann brauchst nicht alle neu erfinden)

                                  https://forum.iobroker.net/post/502163

                                  1 Antwort Letzte Antwort
                                  1
                                  • K Offline
                                    K Offline
                                    Kueppert
                                    schrieb am zuletzt editiert von
                                    #3405

                                    Und hab noch eine Frage:
                                    wie habt ihr verschiedene Geräte in der einen FB untergebracht? Garnicht sondern eine 2. und 3. FB gebaut? Oder die Knöppe unter "Remote_Additional_Buttons"?

                                    UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                    dslraserD 1 Antwort Letzte Antwort
                                    0
                                    • s.bormannS s.bormann

                                      Willkommen im iQontrol-Entwicklungs-Thread!

                                      iQontrol ist ein Visualisierungs-Adapter.

                                      Number of Installations
                                      Stable version
                                      NPM version
                                      Downloads
                                      Known Vulnerabilities

                                      Dies ist der Entwicklungs-Thread

                                      Hier werden die neuesten Updates veröffentlicht, neue Ideen und Features diskutiert und es finden alpha und beta-Tests statt. Wer also immer auf dem neuesten Stand sein will oder sich aktiv einbringen möchte, ist hier richtig aufgehoben.

                                      Alternativ gibt es noch den iQontrol-Support-Thread. Hier sollen Support-Anfragen gestellt und diskutiert werden:
                                      https://forum.iobroker.net/topic/52077

                                      Wichtige Resourcen

                                      Das Readme auf Github beschreibt die wichtigsten Einstellungen, Troubleshooting etc.:
                                      https://github.com/sbormann/ioBroker.iqontrol

                                      Video-Tutorials:
                                      https://www.youtube.com/playlist?list=PL8epyNz8pGEv6-R8dnfXm-m5aBlZFKOBG

                                      Wiki mit einer Sammlung nützlicher Scripte, Widgets etc.:
                                      https://github.com/sbormann/ioBroker.iqontrol/wiki

                                      Viel Spaß und Erfolg,
                                      Sebastian

                                      M Offline
                                      M Offline
                                      mucki
                                      schrieb am zuletzt editiert von
                                      #3406

                                      Nach über einem Jahr wollte ich mal wieder nachfragen:

                                      Hat hier irgendjemand ein NUKI Schloss in iQontrol eingebunden und kann das Schloss auf- und zuschließen?

                                      Hatte ja mal vor langer Zeit das RAW von dem NUKI Adapter gepostet.
                                      Der Status ist auch kein Problem, nur halt Zu- und Abschließen geht nicht....

                                      K 1 Antwort Letzte Antwort
                                      0
                                      • M mucki

                                        Nach über einem Jahr wollte ich mal wieder nachfragen:

                                        Hat hier irgendjemand ein NUKI Schloss in iQontrol eingebunden und kann das Schloss auf- und zuschließen?

                                        Hatte ja mal vor langer Zeit das RAW von dem NUKI Adapter gepostet.
                                        Der Status ist auch kein Problem, nur halt Zu- und Abschließen geht nicht....

                                        K Offline
                                        K Offline
                                        Kueppert
                                        schrieb am zuletzt editiert von
                                        #3407

                                        @mucki also ich sehe da, egal um welches Gerät es sich handelt, garkein Problem...wenn du den Datenpunkt nicht direkt ansteuern kannst, leg einfach Aliase dafür an.

                                        UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                        M 1 Antwort Letzte Antwort
                                        0
                                        • K Kueppert

                                          @mucki also ich sehe da, egal um welches Gerät es sich handelt, garkein Problem...wenn du den Datenpunkt nicht direkt ansteuern kannst, leg einfach Aliase dafür an.

                                          M Offline
                                          M Offline
                                          mucki
                                          schrieb am zuletzt editiert von mucki
                                          #3408

                                          @Kueppert
                                          Wo soll ich die dann in iQontrol angeben?

                                          Hier mal der Auszug aus der Hilfe für eine Tür mit Schloss von iQontrol:
                                          Door with lock:
                                          STATE: boolean - display if the door is opened or closed (door/window-contact)
                                          LOCK_STATE: boolean - display and control if the door is locked or unlocked (control is disabled, if STATE is true - because you can't lock a door, that is opened)
                                          LOCK_STATE_UNCERTAIN: boolean - if true, the STATE will be displayed in italic-font to represent that the exact position of the lock is unknown
                                          LOCK_OPEN: boolean - if set to true, the door will open completely

                                          Wie soll man bei diesen Datenpunkten folgendes realisieren:

                                          • Lock
                                          • Unlock
                                          • Unlatch
                                          • Lock'n'Go
                                            etc. etc.

                                          Würde mich sehr über einen Screenshot mit einer erfolgreichen Einbindung freuen.

                                          K 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          673

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe