Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. meerkat

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    M
    • Profile
    • Following 0
    • Followers 0
    • Topics 6
    • Posts 128
    • Best 18
    • Groups 2

    meerkat

    @meerkat

    Starter

    25
    Reputation
    34
    Profile views
    128
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    meerkat Follow
    Pro Starter

    Best posts made by meerkat

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

      Guten Abend zusammen,
      basierend auf der Idee von @muuulle (Beitrag 7024) habe ich mal ein Script geschrieben. Durch das Script braucht man nur "ein" Wigdet zur Anzeige des Ergebnisses. Ich habe an jedem Knopf in der Eigenschaft Background_URL das eigentliche Widget hinterlegt, bei mir DeviceCounter. Dann habe ich ein Widget, dass die Informationen aus der Background_URL aufnimmt. Bei @muuulle hatte ich pro Knopf ein Widget.
      Drückt man nun auf einen Knopf, wird der Wert in eine Hilfsvariable geschrieben und dann mit dem Script die Background_URL ermittelt und dann das "Ergebnis"-Wigdet aktiviert und die Background_Url in das Widget geschrieben.

      //Steuerung von Widgets mit Knöpfen in iQontrol, basierend auf der Idee von muuulle Beitrag 7024
      
      //Variable fürs zwischenspeichern der Views aus iQontrol 
      //(beim Start von JavasCript einmalig ausführen)
      var DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
      
      //Variable die zur Suche der entsprechenden view in iQontrol dient
      var DpView = '0_userdata.0.iQontrol_Widgets.iQontrolSearchView1';
      
      //Variable, in der der Suchbegriff für das Ergebnis-Widget steht, sollte immer der Name des
      //Buttons sein. Dieser enthält in der Background_URL das Widget.
      //Wenn der Wert in der Variable 0 ist, dann ist das Ergebnis-Widget inaktiv
      var DpButton = '0_userdata.0.iQontrol_Widgets.iQontrolSearchButton1';
      
      //Variable in der das Ergebnis der Background_URL aus dem SearchButton geschrieben wird
      var DpWidget = '0_userdata.0.iQontrol_Widgets.iQontrolResultWidget1';
      
      //Aktualisieren der Variable sys_Adapter_iQon nach jedem speichern und 
      //neustart der iQontrol-Instanz
      on({id:'system.adapter.iqontrol.0.alive', change: "ne"}, async function (obj) {
          if(obj.state.val == true){
              log("Aktualisierung der Variable für die Views");
              DpSysAdapterIqontrolViews = getObject('system.adapter.iqontrol.0').native.views;
          }
      });
      
      //Ermitteln und schreiben der Background_URL für das ErgebnisWidget
      on({id:DpButton, change: "ne"}, async function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          setStateDelayed(obj.id, (obj.state ? obj.state.val : ""), true, parseInt(((0) || "").toString(), 10), false);
          if (value != 0){
              DpSysAdapterIqontrolViews.forEach(function(view) {
                  if (view.commonName == getState(DpView).val){
                      view.devices.forEach(function(device){
                          if (device.commonName == getState(DpButton).val){
                              log(getState(DpButton).val);
                              device.states.forEach(function(devState){
                                  if (devState.state == "BACKGROUND_URL"){
                                      log(devState.value);
                                      setStateDelayed(DpWidget, devState.value, true, parseInt(((0) || "").toString(), 10), false);
                                  }
                              });
                          }
                      });
                  }
              });
          
              //Datenpunkte nach 60 Sekunden resetten
              setStateDelayed(DpWidget, "", true, 60000, false);    
              setStateDelayed(DpButton, "0", true, 60000, true);
          }
      });
      
      

      YouCut_20220317_212646007.mp4
      Screen_Recording_20220317-205559_Chrome.mp4

      posted in Tester
      M
      meerkat
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      @s-bormann
      OK, das mit den Arrays wäre super.
      Falls du doch mal Lust und Zeit hast 😉 einen Gerätetyp Vacuum zu machen, kann ich gerne behilflich sein. Zu mindestens für die Mi, Roborock Modelle.

      posted in Tester
      M
      meerkat
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      @kilasat
      Ich stimme da @da_Woody zu. Entweder in diesem thread oder einen neuen anlegen. Würde mir dann bei ähnlichen Fragen auch helfen und es vereinfachen.

      Gruß

      posted in Tester
      M
      meerkat
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      @dslraser freut mich. Werde in der nächsten Woche noch ein paar Verbesserungen machen und dann auch mal eine detaillierte Anleitung schreiben

      posted in Tester
      M
      meerkat
    • RE: iQontrol Vis Support Thread

      @dslraser perfekt, vielen Dank. Der Zieltyp fehlte mir. Jetzt habe ich keine Abstürze mehr.
      Top

      posted in Visualisierung
      M
      meerkat
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      @s-bormann Perfekt😊 läuft, nachdem ich mir erstmal alles zerschossen hatte. 🤦‍♂️

      posted in Tester
      M
      meerkat
    • RE: iQontrol Vis Support Thread

      Hi @s-bormann, habe die neue Version installiert und läuft.
      Vielen Dank 👍

      posted in Visualisierung
      M
      meerkat
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      Hi @kilasat,
      Ich kann dir gerne einen Export meiner aktuellen Einstellung und die beiden Javascripte geben. Dort kannste dann die einzelnen Räume anklicken und nacheinander abarbeiten lassen. Wenn du das so möchtest. Eine festgelegte Reihenfolge der Räume habe ich noch nicht eingestellt, wäre aber vielleicht noch eine Idee.
      Du müsstest dann halt lediglich die Datenpunkte anpassen.

      posted in Tester
      M
      meerkat
    • RE: iQontrol Vis Support Thread

      @geesthachter Hi. Hast di evtl. Verweise mit Instanz 1?
      Nicht das die Instanz 0 immer auf deine Instanz 1 was sucht.

      posted in Visualisierung
      M
      meerkat
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      Hi @kilasat,

      hier die beiden Javascripte. Als erstes die Datenpunkte hinzufügen und das Script einmal ausführen (1. Script), danach das 2. Script aktivieren und laufen lassen. Achso, natürlich noch die Werte (in beiden Scripts) anpassen, ich habe 2 von den Dingern laufen und da kannste alles für den 2. rausschmeißen.
      In der Json ist meine Sicht mit dem Gerät, die kannste importieren und auch auf deine Datenpunkte anpassen.

      /* Setze neue Datenpunkte für 
      *  - Wartungspunkt setzen pro Vacuum
      *  - Weitere Zonen einrichten, über script, da wenn der Adapter mal nicht mehr funktioniert die Werte nicht erneut ermittelt werden müssen
      *  - Warteschlange erzeugen, Standard reichte mir nicht
      *  - 
      */
      
      //Settings
      //Anzahl der Vacuum
      var countVacuum = ['mihome-vacuum.0', 'mihome-vacuum.1'];
      var channelRooms = '.rooms';
      var servicePoints = ['22250,32300','27950,25450']
      var addRrooms = [
          {
          'room' : ['Zone1','Zone2','Zone3'],
          'datenpunkt' : [[25235,29306,27535,30356],[23502,24895,25102,25995],[27763,30413,29163,33013]]
          }
          ]
      
      //Channel für alle Vacuum unter userdata anlegen
      setObject("0_userdata.0.vacuums", {
          common: {
              name: "Vacuums Zusatzpunkte"
          },
          type: "channel"
      });
      
      //Datenpunkte für ServicePoint und CleaningQueue pro Vacuum anlegen
      for (var v = 0; v < countVacuum.length; v++) {
          
          //Koordinaten des jeweiligen ServicPoints speichern
          if (servicePoints[v] != null){
              createState("0_userdata.0." + countVacuum[v] + ".servicepoint", servicePoints[v], false, {
                  name: "servicepoint",
                  desc: "coordinates of servicepoint",
                  type: "number",
                  role: "value",
                  unit: "",
                  read: false,
                  write: false
              });
          }
          
          //Eine erweiterte CleaningQueue anlegen, in der dann Zone und Segment herausgefiltert wird und nur der Name steht
          createState("0_userdata.0." + countVacuum[v] + ".cleaningQueue", "", false, {
              name: "cleaning queue",
              desc: "cleaning queue",
              type: "object",
              role: "info",
              unit: "",
              read: true,
              write: true
          });
          
          //Für die Ermittlung und anzeige des aktuellen Raumes, der gereinigt wird
          createState("0_userdata.0." + countVacuum[v] + ".currentRoom", "", false, {
              name: "current cleaning",
              desc: "current cleaning room or zone",
              type: "object",
              role: "info",
              unit: "",
              read: true,
              write: true
          });
      
          //Datenpunkt für den Button Servicepoint
          createState("0_userdata.0." + countVacuum[v] + ".goToService", false, false, {
              name: "goToService",
              desc: "going to ServicePointcleaning queue",
              type: "boolean",
              role: "button",
              unit: "",
              read: false,
              write: true
          });
          
          //Weitere Zonen anlegen
          if(addRrooms[v]!=null){
              for (var i = 0; i < addRrooms[v]['room'].length; i++) {
                  
                  setState(countVacuum[v] + channelRooms + ".addRoom", addRrooms[v]['datenpunkt'][i]);
                  var roomchannel = addRrooms[v]['datenpunkt'][i].toString();
                  roomchannel = roomchannel.replace("[", "");
                  roomchannel = roomchannel.replace("]", "");
                  roomchannel = roomchannel.split(",").join("_"); /*replaceAll(",", "_");*/
              
                  setState(countVacuum[v] + channelRooms + "." + roomchannel + ".roomFanPower", 103);
                  setState(countVacuum[v] + channelRooms +  "." + roomchannel + ".roomWaterBoxMode", 202);
              }
          }
      }
      
      
      //////////////////// Vacuum 1 //////////////////////
      //Die beim nach Hause schicken die Queue leeren
      on({id: 'mihome-vacuum.0.control.home', val: true}, function() {
         setState('mihome-vacuum.0.control.clearQueue', true);
      });
      
      //Die Queue der aktuellen Reinigung löschen wenn Vacuum in der Ladestation ist
      on({id: 'mihome-vacuum.0.info.state'/*Vacuum state*/, val: 8}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', '');
      });
      
      //Den aktuell zu reinigenden Raum ermitteln
      on({id: 'mihome-vacuum.0.rooms.106001012191.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012191').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012206.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012206').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012207.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012207').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012208.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012208').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012209.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012209').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012210.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012210').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.manual_23502_24895_25102_25995.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_23502_24895_25102_25995').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.manual_25235_29306_27535_30356.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_25235_29306_27535_30356').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.manual_27763_30413_29163_33013.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_27763_30413_29163_33013').common.name);
      });
      
      
      //Die Standard CleaningQueue anpassen
      on({id: 'mihome-vacuum.0.info.queue', change: 'any'}, function (obj) {
          var queue = obj.state.val
          var tmpCleaningQueue = "Next: ";
      
          if (queue.length != 0) {
              log(queue.length);
              queue.reverse();
              for (var i = 0; i < queue.length; i++){
                  tmpCleaningQueue += queue[i].replace("segment", "").replace("zone", "");
                  if(i+1<queue.length){
                      tmpCleaningQueue+= ",";
                  }
              }
          }
          else {
              tmpCleaningQueue = "";
          }
      
          setState('0_userdata.0.mihome-vacuum.0.cleaningQueue'/*cleaning queue*/, tmpCleaningQueue)
        
      });
      
      //Auf den Button goToServicepoint reagieren
      on({id: '0_userdata.0.mihome-vacuum.0.goToService'/*goToService*/, val: true}, function (obj) {
          var servicepoint = getState('0_userdata.0.mihome-vacuum.0.servicepoint'/*map index*/).val;
          setState('mihome-vacuum.0.control.goTo'/*Go to point*/,servicepoint);
      });
      
      
      //////////////////// Vacuum 2 //////////////////////
      //Die beim nach Hause schicken die Queue leeren
      on({id: 'mihome-vacuum.1.control.home', val: true}, function() {
         setState('mihome-vacuum.1.control.clearQueue', true);
      });
      
      //Die Queue der aktuellen Reinigung löschen wenn Vacuum in der Ladestation ist
      on({id: 'mihome-vacuum.1.info.state'/*Vacuum state*/, val: 8}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', '');
      });
      
      //Den aktuell zu reinigenden Raum ermitteln
      on({id: 'mihome-vacuum.1.rooms.106001012200.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012200').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012201.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012201').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012202.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012202').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012203.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012203').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012205.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012205').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012607.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012607').common.name);
      });
      
      //Die Standard CleaningQueue anpassen
      on({id: 'mihome-vacuum.1.info.queue', change: 'any'}, function (obj) {
          var queue = obj.state.val
          var tmpCleaningQueue = "Next ";
      
          if (queue.length != 0) {
              for (var i = 0; i < queue.length; i++){
                  tmpCleaningQueue += queue[i].replace("segment", "").replace("zone", "");
                  if(i+1<queue.length){
                      tmpCleaningQueue+= ",";
                  }
              }
          }
          else {
              tmpCleaningQueue = "";
          }
      
          setState('0_userdata.0.mihome-vacuum.1.cleaningQueue'/*cleaning queue*/, tmpCleaningQueue)
        
      });
      
      //Auf den Button goToServicepoint reagieren
      on({id: '0_userdata.0.mihome-vacuum.1.goToService'/*goToService*/, val: true}, function (obj) {
          var servicepoint = getState('0_userdata.0.mihome-vacuum.1.servicepoint'/*map index*/).val;
          setState('mihome-vacuum.1.control.goTo'/*Go to point*/,servicepoint);
      });
      

      2021-08-20_iqontrol_0_selected_views.json

      posted in Tester
      M
      meerkat

    Latest posts made by meerkat

    • RE: ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker

      @bahnuhr
      In deinem Screenshot der excel
      IMG_5169.jpeg

      posted in Hardware
      M
      meerkat
    • RE: ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker

      hallo @bahnuhr,
      Darf ich mal fragen, wie du auf den Wert 54,35% gekommen bist?

      Gruß

      posted in Hardware
      M
      meerkat
    • RE: iQontrol Vis Support Thread

      Moin zusammen, hat von euch schon einer einen Datepicker wie den hier
      f4c7650d-7bc1-49e0-8207-361ec4c67e06-image.png
      in iQontrol eingebaut?
      Oder wäre es möglich diesen hinzu zufügen?
      Gezeigte Beispiel basiert auf jQuery

      Gruß

      posted in Visualisierung
      M
      meerkat
    • RE: Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

      Moin zusammen,

      ich habe ein Problem mit den zuklappbaren Sektionen in den Ansichten.
      Wenn ich eine Gruppe mit der Einstellung COC oder CO anlege, dann wird der Marquee und Wert von Info A/B angezeigt. Siehe Video
      COCbzwCO.mp4
      Wenn ich CCC und CC einstelle, dann wird der Marquee nicht gestartet und es wedren mir auch keine Werte angezeigt. Siehe 2. Video
      CCCbzwCC.mp4
      und diese Einstellung meine ich
      Screenshot 2023-10-13 194210.png

      Screenshot 2023-10-13 194323.png

      Gruß

      posted in Tester
      M
      meerkat
    • RE: Zigbee2mqtt zigstar gw

      @mike-hellracer ich habe mir eine linux Maschine aufgesetzt und dort zigbee2mqtt installiert. Dort per IP den zigstar angebunden und dann den Adapter im io installiert. Mehr habe ich tatsächlich nicht gemacht

      posted in ioBroker Allgemein
      M
      meerkat
    • RE: iQontrol Vis Support Thread

      @geesthachter sagte in iQontrol Vis Support Thread:

      @meerkat
      Ich denke auch das ich sie nicht benötige, ich lasse sie jetzt erst einmal deaktiviert und wenn ich dann in der nächsten Zeit merke das alles läuft dann werde ich sie löschen.

      Vielen Dank für deine Hilfe

      Kein Problem, war ehrlich gesagt ja auch nur eine Vermutung

      posted in Visualisierung
      M
      meerkat
    • RE: iQontrol Vis Support Thread

      @geesthachter Hi. Wenn du die nicht benötigst dann einfach löschen. Wenn ich es richtig sehe ist es ja nur eine Auflistung der Adapter.

      posted in Visualisierung
      M
      meerkat
    • RE: iQontrol Vis Support Thread

      @geesthachter hast du Listen und Zähler verwendet? Bei function.keys würde ich dort suchen. Die werden glaube ich nicht automatisch angepasst, wenn du eine neue Instanz machst und diese Zähler dann irgendwo verwendest.

      Vielleicht kann @s-bormann da auch genaueres sagen.

      posted in Visualisierung
      M
      meerkat
    • RE: iQontrol Vis Support Thread

      @geesthachter Hi. Hast di evtl. Verweise mit Instanz 1?
      Nicht das die Instanz 0 immer auf deine Instanz 1 was sucht.

      posted in Visualisierung
      M
      meerkat
    • RE: ioBroker App 2023 [Android & iOS] - jetzt erhältlich

      @foxriver76 sagte in ioBroker App 2023 [Android & iOS] - jetzt erhältlich:

      Es gibt eine neue Alpha Version aktuell zum Testen

      Für iOS Tester: https://testflight.apple.com/join/UWrb8L7e
      Für Android Tester: https://easyupload.io/ghduin

      Neue Funktion - Push Notifications:
      Ein mal die Möglichkeit sich selbst diese zu senden via latest IoT Adapter:
      https://github.com/ioBroker/ioBroker.iot#send-messages-to-app

      Und potentiell die Möglichkeit offizielle Push Notifications vom ioBroker Team zu erhalten. Wobei hier bislang nichts konkretes geplant ist - also keine Sorge, wir spammen euch nicht zu und falls es doch mal zu diesem Kommunikationskanal kommen soltle wird man ihn abschalten können. 😉

      Es können aktuell nur Nachrichten Empfangen werden wenn der IoT Adapter den gleichen Account nutzt wie der Pro Login des Default Projektes.

      Sonst habe ich die Probleme gefixt die aufgetreten sind, wenn man sowohl "Zurück zur Startseite nach Sekunden" als auch "Dimmen nach Sekunden" parallel aktiviert hatte.

      Und es sind nun insgesamt 3 Projekte in der App möglich!

      Viel Spaß und Happy Testing.

      @foxriver76 welche Pro braucht man mindestens?? Mit Fernzugriff, Link oder nur Smart?
      Also für das senden der Push Nachrichten

      posted in Tester
      M
      meerkat
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo