Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • s.bormann
      s.bormann Most Active @da_Woody last edited by

      @da_woody sagte in Test Adapter iQontrol 1.6.x Vis:

      @s-bormann sorry, aber egal wie ich "katze", ich komm nicht auf 1.7.0. nur 1.6.6.

      Hi,
      Das ist leider bei den Github-Versionen so, dass sich die Versionsnummer nicht ändert. Man muss einfach drauf vertrauen, dass die neueste Version installiert wird.
      VG

      1 Reply Last reply Reply Quote 0
      • s.bormann
        s.bormann Most Active @da_Woody last edited by

        @da_woody sagte in Test Adapter iQontrol 1.6.x Vis:

        @dslraser jup, da is es, aber mir ist nicht wirklich klar was da eingetragen werden muss...
        mal wieder zu kalt im hirn. 😄 hat heut nur 2° und sturm...
        4367d310-8782-4c0b-a0b8-cf0f61728e6c-grafik.png

        Ja, das kann ich verstehen. Das ganze ist wirklich ziemlich kompliziert. Ich musste mich jetzt mehrere Tage in das Thema einarbeiten und habe viele Stunden mit Gehirnverdrehungen gekämpft, bis ich einigermaßen kapiert hatte, was man alles braucht und wie das geht.

        Aber wenn man es einmal verstanden hat, ist es gar nicht mehr so kompliziert:

        Du brauchst einen Datenpunkt, in dem die Zeit gespeichert wird. Das kann ich vielen verschiedenen Formaten passieren, z.B. 06.04.2021, 18:21 oder 2021-04-06T06:21p oder wie auch immer. Sehr häufig wird in der Informatik eine sogenannte Unix Timestamp verwendet. Das ist einfach eine große Zahl, die die vergangenen Sekunden (oder Millisekunden) seit dem 1.1.1970 angibt.

        Jetzt muss man iQontrol mitteilen, wie die Zeit kodiert wird, damit es die Zeit auch "lesen" kann. Das geht hier:
        0aa56299-354f-4a30-9a03-efafb2be9ccc-image.png

        Dabei steht x für eine Unix-Timestamp. Hier könnte man aber jedes beliebige Zeitformat angeben, z.B. auch MM.DD.YYYY, HH:mm. Welche Kürzel erlaubt sind, steht hier (im aufklappbaren Teil): https://github.com/sbormann/ioBroker.iqontrol#-date-and-time

        Allerdings möchte man als Nutzer, das ganze ja nicht als Unix-Timestamp, sondern als vom Menschen lesbares Format angezeigt bekommen. Und wie es angezeigt wird, kann man dann hier einstellen:
        82387bcc-b444-49bf-8087-098a349855c8-image.png

        In diesem Beispiel wird also im ioBroker eine Unix-Timestamp (x) gespeichert (z.B. 1617726604871), für den Nutzer zeigt es iQontrol jedoch in der Form dddd, DD.MM.YYYY, HH:mm:ss, also z.B. Dienstag, 06.04.2021, 18:21:15 an.

        Ist es so verständlicher?

        VG

        da_Woody 1 Reply Last reply Reply Quote 0
        • da_Woody
          da_Woody @s.bormann last edited by

          @s-bormann oookay, das hab ich mal verstanden. hatte die readme schon min 3x offen, jedes mal überlesen. 🙄
          die frage halt, wie komm ich zu dem DP. theoretisch muss das ja im clockwidget, und der flipclock widget drinnen sein...
          96833023-c7e2-43fc-a771-b1491f542bc6-grafik.png
          06e1fb64-344c-4e75-8f50-ffc6920211c5-grafik.png
          nur wie komm ich da zu einem DP?

          s.bormann 1 Reply Last reply Reply Quote 0
          • H
            Hc-Yami last edited by Hc-Yami

            Hallo zusammen,
            ich würde gerne meine Shelly Geräte auf MQTT umstellen um. Leider gibt es dort das Problem, dass ich nur noch einen Datenpunkt für die Steuerung der Rolladen habe:

            a472c4e1-8848-4585-b09e-96e78328dcb2-grafik.png

            Mir fehlt in iQontrol also die Möglichkeit "STOP_SET_VALUE" zu setzen:

            c5d33825-1f0d-47a1-8bf4-7d0634d6ae5b-grafik.png

            Ich behelfe mich jetzt mit einem user-Datenpunkt. Gibt es denn eine iQontrol-Möglichkeit?

            Grüße 🙂

            Weiterhin erwarten einfache Schalter (Shelly1 etc.) im MQTT Modus ein on oder off. iQontrol verschickt hier ein true oder false. Kann man das irgendwie ändern? 😕

            Grüße

            mickym dslraser 2 Replies Last reply Reply Quote 0
            • dslraser
              dslraser Forum Testing Most Active @s.bormann last edited by

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

              @dslraser sagte in Test Adapter iQontrol 1.6.x Vis:

              @s-bormann

              Ich habe mal eine Frage zum Thema Rollo/Jalousie

              Bildschirmfoto 2021-03-31 um 18.02.25.png

              Es gibt ja in der Konfiguration Icon für den Status beim rauf und runter fahren

              Bildschirmfoto 2021-03-31 um 18.00.08.png

              Es geht speziell um HMIP-Broll über den RPC Adapter. Dort ist der Kanal zum steuern Kanal 4

              Bildschirmfoto 2021-03-31 um 18.01.26.png

              gesteuert wird über level

              Bildschirmfoto 2021-03-31 um 18.05.36.png

              Das funktioniert auch alles.
              Nur ich hätte auch gern das richtige Icon beim rauf und runter fahren. Der aktuelle Zustand dieser Aktion ist aber nicht in level, sondern in ACTIVITY_STATE zu sehen. Wie kann ich das mit den passenden Icon verknüpfen ?

              {
                "type": "state",
                "common": {
                  "name": "Rollo Wohnzimmer Panoramafenster:4.ACTIVITY_STATE",
                  "def": 0,
                  "type": "number",
                  "read": true,
                  "write": false,
                  "min": 0,
                  "max": 3,
                  "states": {
                    "0": "UNKNOWN",
                    "1": "UP",
                    "2": "DOWN",
                    "3": "STABLE"
                  }
                },
                "native": {
                  "MIN": "UNKNOWN",
                  "OPERATIONS": 5,
                  "MAX": "STABLE",
                  "FLAGS": 1,
                  "ID": "ACTIVITY_STATE",
                  "TYPE": "ENUM",
                  "DEFAULT": "UNKNOWN",
                  "VALUE_LIST": [
                    "UNKNOWN",
                    "UP",
                    "DOWN",
                    "STABLE"
                  ],
                  "CONTROL": "SHUTTER_VIRTUAL_RECEIVER.ACTIVITY_STATE"
                },
                "from": "system.adapter.hm-rega.0",
                "user": "system.user.admin",
                "ts": 1617010242748,
                "_id": "hm-rpc.0.00111BE99FD0D1.4.ACTIVITY_STATE",
                "acl": {
                  "object": 1636,
                  "state": 1636,
                  "owner": "system.user.admin",
                  "ownerGroup": "system.group.administrator"
                }
              }
              

              EDIT: damit tut sich nichts an den Icon (zeigt auf ACTIVITY_STATE)

              Bildschirmfoto 2021-03-31 um 18.25.41.png

              Bildschirmfoto 2021-03-31 um 18.39.21.png

              Muss ich schauen, Du hast es richtig konfiguriert. Mangels elektrischer Rolläden (ja, ich kurbele noch von Hand 🙂 ) muss ich mir erst einen "Test-Rollo" bauen, damit ich es testen kann.

              EDIT: Habe es gerade mal nachgebaut. Bei mir scheint es zu funktionieren:
              2c31ec5b-c7fe-4842-bd30-88e171da06c3-image.png

              Mit einem Alias funktioniert alles wie gewünscht ! (read/write getrennt)

              Beispiel bei mir mit einem HMIP-Broll

              // Original-Datenpunkt
              const idOrigin = 'hm-rpc.0.00111BE992A033.4.LEVEL'/*Rollo Küche links:4 LEVEL*/; 
              // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
              // Bei Nicht-Verwendung Leerstring '' zuweisen
              const idRead = 'hm-rpc.0.00111BE992A033.3.LEVEL'/*Rollo Küche links:4 LEVEL*/;
               
              // Alias-Datenpunkt
              const idAlias = 'Rollos.Rollo_Kueche_links';
               
              var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
               
              // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
              nameAlias = 'Rollo Küche links';
              desc = 'per Script erstellt';
              // typeAlias = 'boolean'; // oder 'number'
              // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
              // write = "val ? String(1) : String(0)";
              // role = 'value';
              // min = 0; // nur Zahlen
              // max = 100; // nur Zahlen
              // unit = '%'; // nur für Zahlen
              // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
              custom = {}; // verhindert doppelte Ausführung von history, ...
              // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
              // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten !
               
              // Ab hier nichts ändern !!
              function createAlias(idDst, idSrc, idRd) {
                 if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                 else {
                    var obj = {};
                    obj.type = 'state';
                    obj.common = getObject(idSrc).common;
                    obj.common.alias = {};
                    if(idRd) {
                        obj.common.alias.id = {};
                        obj.common.alias.id.read = idRd;
                        obj.common.alias.id.write = idSrc;
                        obj.common.read = true;
                    } else obj.common.alias.id = idSrc;
                    if(typeAlias) obj.common.type = typeAlias;
                    if(obj.common.read !== false && read) obj.common.alias.read = read;
                    if(obj.common.write !== false && write) obj.common.alias.write = write;
                    if(nameAlias) obj.common.name = nameAlias;
                    if(role) obj.common.role = role;
                    if(desc) obj.common.desc = desc;
                    if(obj.common.type == 'number') {
                       if(min !== undefined) obj.common.min = min;
                       if(max !== undefined) obj.common.max = max;
                       if(unit) obj.common.unit = unit;
                    } else {
                       if(obj.common.min !== undefined) delete obj.common.min;
                       if(obj.common.max !== undefined) delete obj.common.max;
                       if(obj.common.unit) delete obj.common.unit;
                    }
                    if(states) obj.common.states = states;
                    if(custom && obj.common.custom) obj.common.custom = custom;
                    obj.native = {};
                    setObject(idDst, obj, function() {
                       if(idRd) setState(idRd, getState(idRd).val, true);
                       else setState(idSrc, getState(idSrc).val, true); 
                    });
                    if(raum && existsObject('enum.rooms.' + raum)) {
                       let obj = getObject('enum.rooms.' + raum)
                       obj.common.members.push(idDst);
                       setObject('enum.rooms.' + raum, obj);
                    }
                    if(gewerk && existsObject('enum.functions.' + gewerk)) {
                       let obj = getObject('enum.functions.' + gewerk)
                       obj.common.members.push(idDst);
                       setObject('enum.functions.' + gewerk, obj);
                    }
                 } 
              }
               
              createAlias('alias.0.' + idAlias, idOrigin, idRead);
              
              

              Der fertige alias Datenpunkt

              {
                "type": "state",
                "common": {
                  "name": "Rollo Küche links",
                  "def": 0,
                  "type": "number",
                  "read": true,
                  "write": true,
                  "min": 0,
                  "max": 100,
                  "unit": "%",
                  "role": "level",
                  "smartName": {
                    "de": "Rollo Küche links"
                  },
                  "alias": {
                    "id": {
                      "read": "hm-rpc.0.00111BE992A033.3.LEVEL",
                      "write": "hm-rpc.0.00111BE992A033.4.LEVEL"
                    }
                  },
                  "desc": "per Script erstellt"
                },
                "native": {},
                "from": "system.adapter.javascript.0",
                "user": "system.user.admin",
                "ts": 1617806058979,
                "_id": "alias.0.Rollos.Rollo_Kueche_links",
                "acl": {
                  "object": 1636,
                  "state": 1636,
                  "owner": "system.user.admin",
                  "ownerGroup": "system.group.administrator"
                }
              }
              
              1 Reply Last reply Reply Quote 0
              • s.bormann
                s.bormann Most Active @da_Woody last edited by

                @da_woody sagte in Test Adapter iQontrol 1.6.x Vis:

                @s-bormann oookay, das hab ich mal verstanden. hatte die readme schon min 3x offen, jedes mal überlesen. 🙄
                die frage halt, wie komm ich zu dem DP. theoretisch muss das ja im clockwidget, und der flipclock widget drinnen sein...
                96833023-c7e2-43fc-a771-b1491f542bc6-grafik.png
                06e1fb64-344c-4e75-8f50-ffc6920211c5-grafik.png
                nur wie komm ich da zu einem DP?

                Hi,
                das ist glaube ich ein Missverständnis, die Uhren nehmen die Uhrzeit ohne Datenpunkt direkt vom Browser.
                Das Date & Time-Gerät ist gedacht für z.B. Timer oder Wecker, wie sie von manchen Adaptern als Datenpunkt zur Verfügung gestellt werden (z.B. Alexa).
                LG

                da_Woody 1 Reply Last reply Reply Quote 0
                • da_Woody
                  da_Woody @s.bormann last edited by

                  @s-bormann ok... 👍

                  1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @Hc-Yami last edited by

                    @hc-yami Meines Erachtens stimmt das nicht, wenn ich die Doku anschaue:

                    https://shelly-api-docs.shelly.cloud/#shelly2-5-roller-index

                    Über go und roller_pos kannst Du doch auch bestimmte Positionen anfahren.

                    H 1 Reply Last reply Reply Quote 0
                    • H
                      Hc-Yami @mickym last edited by

                      @mickym die werden über MQTT leider nicht angeboten:

                      38e7b135-8cb6-4433-8f6e-e8d37b8985d7-grafik.png

                      Über command.pos kann ich zwar zwischen 0 und 100 die Positionen setzen, aber stoppen kann ich dann nicht. 😕

                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @Hc-Yami last edited by mickym

                        @hc-yami Das ist kein Problem - im MQTT kannst Du die Datenpunkte selbst anlegen und darüber steuern. Das ist der Vorteil gegenüber dem Adapter. 😉

                        Aber ich sehe es ist jeder Punkt da:

                        shellies/shellyswitch25-<deviceid>/roller/0/command/pos
                        

                        accepts a number between 0 and 100, which is the target position in percent

                        Das hei?t, Du könntest unter pos auch einfach einen Zahlenwert eingeben.

                        und mit dem oben drüber kannst stoppen:

                        shellies/shellyswitch25-<deviceid>/roller/0/command
                        

                        accepts rc (performs roller calibration), open, close and stop

                        Im Übrigen kannst Du alle über mqtt fehlenden Befehle über HTTP absetzen - so mache ich auch Firmware Updates etc.

                        1 Reply Last reply Reply Quote 0
                        • H
                          Hc-Yami last edited by

                          @mickym hey ja, das ist ja nicht mein Problem.
                          Die Werte werden ja übernommen. Nur leider sendet iQontrol nicht die richtigen Werte. Hier wird bspw. bei einer normalen Glühbirne true/false gesetzt, MQTT erwartet aber leider ein on/off. 😕

                          Grüße

                          mickym 1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @Hc-Yami last edited by

                            @hc-yami Dann mach einfach ein Alias dazwischen oder lass Deine Logikmaschine übersetzen. So mach ich das.

                            H 1 Reply Last reply Reply Quote 0
                            • H
                              Hc-Yami @mickym last edited by

                              @mickym welcher Alias Adapter wäre das? Leider gibt es dort mehrere. 😕

                              da_Woody mickym 2 Replies Last reply Reply Quote 0
                              • da_Woody
                                da_Woody @Hc-Yami last edited by

                                @hc-yami Alias Manager vom @s-bormann

                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @Hc-Yami last edited by mickym

                                  @hc-yami Ich hab zwar jetzt einen neuen installiert - aber hat noch einen Bug.

                                  Aber lege einfach manuell einen Datenpunkt unter alias.0

                                  dann definierst Du in dem Punkt den Alias:

                                  {
                                    "_id": "alias.0.schalter.ku_deckenlicht.on",
                                    "type": "state",
                                    "from": "system.adapter.admin.0",
                                    "user": "system.user.admin",
                                    "ts": 1597524550270,
                                    "common": {
                                      "name": "on",
                                      "role": "",
                                      "type": "boolean",
                                      "desc": "Manuell erzeugt",
                                      "read": true,
                                      "write": true,
                                      "def": false,
                                      "alias": {
                                        "id": "mqtt.1.shellies.shellyswitch25-xxxxxx.relay.0",
                                        "read": "val === 'on' ? true : false"
                                      }
                                    },
                                    "native": {},
                                    "acl": {
                                      "object": 1636,
                                      "owner": "system.user.admin",
                                      "ownerGroup": "system.group.administrator",
                                      "state": 1636
                                    }
                                  }
                                  

                                  Ich kann mit diesen Einstellungen den Shelly schalten:

                                  568f8cc0-32d6-43f5-bb7b-0242ff9f9c94-image.png

                                  da_Woody 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @da_Woody last edited by

                                    @da_woody Wenn der Bugfix drin ist. 😉

                                    https://forum.iobroker.net/topic/41924/alias-manager-adapter/2?_=1617824596970

                                    1 Reply Last reply Reply Quote 0
                                    • da_Woody
                                      da_Woody @mickym last edited by

                                      @mickym bugfix wird gerade geschoben! https://forum.iobroker.net/topic/41924/alias-manager-adapter/68?_=1617736638086

                                      1 Reply Last reply Reply Quote 0
                                      • H
                                        Hc-Yami last edited by Hc-Yami

                                        @mickym said in Test Adapter iQontrol 1.6.x Vis:

                                        "read": "val === 'on' ? true : false"

                                        {
                                          "type": "state",
                                          "common": {
                                            "name": "shellies/Shelly-Arbeitszimmer-Rollo/command",
                                            "role": "variable",
                                            "type": "string",
                                            "read": true,
                                            "write": true,
                                            "alias": {
                                              "id": "mqtt.0.shellies.Shelly-Arbeitszimmer-Rollo.command",
                                              "read": "val === 'on' ? true : false"
                                            }
                                          },
                                          "_id": "alias.0.Shelly-Arbeitszimmer-Rollo.command",
                                          "from": "system.adapter.admin.0",
                                          "user": "system.user.admin",
                                          "ts": 1617825809575,
                                          "acl": {
                                            "object": 1636,
                                            "state": 1636,
                                            "owner": "system.user.admin",
                                            "ownerGroup": "system.group.administrator"
                                          },
                                          "native": {}
                                        }
                                        
                                        ![0_1617825852572_bc4b8eb3-f723-4949-a81a-eeb3b0cb6a21-grafik.png](Uploading 100%) 
                                        

                                        9c556842-687e-418d-8a4f-01b008695a77-grafik.png

                                        So verstehe ich das richtig?

                                        Das wäre ja echt mega. Könnt ihr mir noch den Befehl erläutern?`Hätte dann noch viele andere Datenpunkte die ich mit dem Alias Adapter bearbeiten könnte. Zur Zeit mache ich das mit node.red. Also bspw. "clean" zu "säubern" zu ändern da ich es eher mag, dass der Text auf deutsch in iQontrol steht.

                                        1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active last edited by mickym

                                          @hc-yami Nun bei komplexeren Übersetzungen mache ich auch alles mit NodeRed. 😉

                                          Für die Aliase bietet es sich an - es gibt einen read und write Eintrag, wobei es anscheinend auch bei nur read zumindest bei den shellies in beide Richtungen funktioniert.

                                          Diese val zuweisung sind halt kleine ZUweisungen mit einzeiligen Javascript anweisungen.
                                          Die Dokumentation zur Alias Funktion hast Du hier:

                                          https://www.iobroker.net/#en/documentation/dev/aliases.md

                                          Die Alias Funktion bietet sich halt auch an, dass man soweit unterstützt die Steuerungsmöglichkeiten der Geräte anzupassen:

                                          b699dd49-e5d9-4c9e-b96f-6c86e1a9c38b-image.png

                                          Deswegen gibts auch diesen Geräteadapter - aber das ist mir zu unflexibel aber dieser von @s-bormann Alias Adapter ist gut - da er Dir alle Freiheiten lässt die gewünschten Datenpunkte anzulegen.

                                          H 1 Reply Last reply Reply Quote 1
                                          • H
                                            Hc-Yami @mickym last edited by

                                            @mickym noch habe ich das nicht so ganz verstanden.
                                            Habe jetzt v.1.0.1 über Github installiert. @s-bormann hat wohl gestern Abend diesen Fehler behoben.

                                            Folgende Konstellation zur Zeit:

                                            807e6df0-b891-491e-8168-9c0a5d517def-grafik.png

                                            2c4d8c15-9adc-45ab-b5e3-2e77ee0a9798-grafik.png

                                            Ich war nun der Annahme, dass wenn ich bei dem Objekt alias.0.Shelly-Wohnzimmer-Wandlampe.Wandlampe den Wert auf true setze, in dem original MQTT Objekt bei command ein "on" gesetzt wird. Habe ich das falsch verstanden? 😕

                                            {
                                              "type": "state",
                                              "common": {
                                                "name": "shellies/Shelly-Wohnzimmer-Wandstrahler/relay/0/command",
                                                "role": "state",
                                                "type": "boolean",
                                                "read": true,
                                                "write": true,
                                                "alias": {
                                                  "id": "mqtt.0.shellies.Shelly-Wohnzimmer-Wandstrahler.relay.0.command",
                                                  "read": "val === 'ON' ? true : false"
                                                }
                                              },
                                              "_id": "alias.0.Shelly-Wohnzimmer-Wandlampe.Wandlampe",
                                              "from": "system.adapter.admin.0",
                                              "user": "system.user.admin",
                                              "ts": 1617797497600,
                                              "acl": {
                                                "object": 1636,
                                                "state": 1636,
                                                "owner": "system.user.admin",
                                                "ownerGroup": "system.group.administrator"
                                              },
                                              "native": {}
                                            }
                                            
                                            mickym 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            871
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            app dark-mode iqontrol responsive vis visualisierung visualization widget
                                            295
                                            7633
                                            5421667
                                            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