Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. GetState bei Alias nicht immer korrekt

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    GetState bei Alias nicht immer korrekt

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

      Re: Frage zu Alias
      Hi, hat dazu von Euch jemand eine Idee, ich stehe ein wenig auf dem Schlauch.
      Ich habe 2 DP, einen für Read, einem für write (Tasmota) beide Datatype String

      1. 0_userdata.0.DC4F22803CA2.stat.power1 => MQTTClient ( subscribe stat/DC4F22803CA2/POWER1) changes only, Exactly once
      2. 0_userdata.0.DC4F22803CA2.cmnd.power1=> MQTTClient ( publish cmnd/DC4F22803CA2/POWER1) Exactly once, retained

      Dazu gibt es einen Alias DP. Datatype boolean

      1. Read = link auf 0_userdata.0.DC4F22803CA2.stat.power1 , Read convert function: val=='ON'?true:val=='on'?true:val=='OFF'?false':val=='off'?false:null
      2. Write == link auf 0_userdata.0.DC4F22803CA2.cmnd.power1, Write convert function: val?'ON':'OFF'

      Nun das Problem. Die Adminoberfläche zeigt zu jedem Zeitpunkt für den Alias DP immer den richtigen Status True/False an. Wenn ich den Alias DP in einem Script auslese

      var xxx = getState('aliasDP').val.

      erhalte ich in einigen Fällen kein False zurück sonder auch schonmal "OFF" und nicht das Ergebnis des Convert. Hatt dazu vielleicht jemand eine Idee?

      Vielen Dank
      Helmut

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @hschief last edited by

        @hschief
        Versuche es mal mit dieser Lesekonvertierung:

        val == 'ON' || val == 'on'
        

        Können wirklich unterschiedlich geschriebene Strings vorkommen?

        H 1 Reply Last reply Reply Quote 0
        • H
          hschief @paul53 last edited by

          @paul53 Vielen Dank für die schnelle Antwort, die Prüfung auf "ON" / "on" ist mehr der Sicherheit geschuldet. Ich hatte vorher nur "ON" & "OFF", da war der beschriebe Fehler aber auch da.
          Interessant ist ja eigentlich, dass im IOBroker Admin dies richtig dargestellt wird, nur bei dem getState wohl falsch dargestellt wird
          Dein Vorschlag wäre: val=='ON' || val=='on'?true : val=='OFF' || val =='off'?false : null
          Richtig?

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @hschief last edited by paul53

            @hschief sagte: Dein Vorschlag wäre: val=='ON' || val=='on'?true : val=='OFF' || val =='off'?false : null
            Richtig?

            Nein. So wie gezeigt, ist die Lesekonvertierung komplett. Jeder Vergleich liefert als Ergebnis false oder true. Es sollte so genügen:

            val == 'ON'
            

            null ist übrigens vom Typ "object".

            H 1 Reply Last reply Reply Quote 0
            • H
              hschief @paul53 last edited by

              Hi,
              Ich habe jetzt mal die Idee von Paul getestet und ebenfalls auch mal den Alias DP komplett gelöscht und mit neuem Namen neu angelegt.
              Leider bleibt das merkwürdig Verhalten erhalten.
              Ich hatte gestern wieder den folgenden Output beim lesen.
              2025-08-12 08:02:36.996 - warn: javascript.0 (187304) script.js.Schlafzimmer_Helmut.Taster: Licht =OFF Speaker =start MqttValueTasmota =OFF
              2025-08-12 22:09:15.347 - warn: javascript.0 (187304) script.js.Schlafzimmer_Helmut.Taster: Licht =OFF Speaker =stop MqttValueTasmota =OFF
              2025-08-12 22:17:17.155 - warn: javascript.0 (187304) script.js.Schlafzimmer_Helmut.Taster: Licht =true Speaker =stop MqttValueTasmota =ON
              Zwischen 22:09 und 22:17 habe ich den Alias Datenpunkt über die VIS auf true gesetz -> der write DP sendet dann über MQTT/CMND an Tasmota, Tasmota antwortet über STAT und der Read DP liefert OFF, was dann von dem Alias richtig umgesetzt wird.

              Nach einer unbestimmten Zeit oder nach einem unbestimmten Ereignis liefert der Alias dann allerdings wie in dem Log zu sehen Licht=OFF und nicht mehr false obwohl dies entsprechend der Alias Konvertierung gar nicht passieren darf, denn dort steht: read => val=='ON', somit dürfte in diesem Fall nie ein True erscheinen.

              {
                "common": {
                  "name": "Licht_WC",
                  "desc": "Manually created",
                  "role": "state",
                  "type": "boolean",
                  "read": true,
                  "write": true,
                  "def": false,
                  "alias": {
                    "id": {
                      "read": "0_userdata.0.Schlafzimmer_Helmut.DC4F22803CA2.stat.power1",
                      "write": "0_userdata.0.Schlafzimmer_Helmut.DC4F22803CA2.cmnd.power1"
                    },
                    "read": "val=='ON'",
                    "write": "val ? 'ON':'OFF'"
                  }
                },
                "type": "state",
                "native": {},
                "_id": "alias.0.SchlafzimmerHelmut.Licht_WC",
                "acl": {
                  "object": 1636,
                  "state": 1636,
                  "owner": "system.user.helmut",
                  "ownerGroup": "system.group.administrator"
                },
                "from": "system.adapter.admin.0",
                "user": "system.user.helmut",
                "ts": 1754551409965
              }
              

              Gelesen wird wie folgt:

              var IstStateLicht = getState(ObjIDLicht).val;
                  var IstStateSpeaker = getState(ObjIDSpk).val;
                  var IstMqttObject = getState(ObjIDLicht2).val;
              
                  log('Licht =' +IstStateLicht +' Speaker =' +IstStateSpeaker + ' MqttValueTasmota =' +IstMqttObject,'warn');
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate
              FAQ Cloud / IOT
              HowTo: Node.js-Update
              HowTo: Backup/Restore
              Downloads
              BLOG

              762
              Online

              32.1k
              Users

              80.6k
              Topics

              1.3m
              Posts

              alias convert
              2
              5
              105
              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