Skip to content
  • Home
  • 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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. GetState bei Alias nicht immer korrekt

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

GetState bei Alias nicht immer korrekt

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
alias convert
5 Beiträge 2 Kommentatoren 223 Aufrufe 1 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.
  • H Offline
    H Offline
    hschief
    schrieb am zuletzt editiert von
    #1

    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

    paul53P 1 Antwort Letzte Antwort
    0
    • H hschief

      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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @hschief
      Versuche es mal mit dieser Lesekonvertierung:

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

      Können wirklich unterschiedlich geschriebene Strings vorkommen?

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      H 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @hschief
        Versuche es mal mit dieser Lesekonvertierung:

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

        Können wirklich unterschiedlich geschriebene Strings vorkommen?

        H Offline
        H Offline
        hschief
        schrieb am zuletzt editiert von
        #3

        @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?

        paul53P 1 Antwort Letzte Antwort
        0
        • H hschief

          @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?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @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".

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          H 1 Antwort Letzte Antwort
          0
          • paul53P 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 Offline
            H Offline
            hschief
            schrieb am zuletzt editiert von
            #5

            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 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
            FAQ Cloud / IOT
            HowTo: Node.js-Update
            HowTo: Backup/Restore
            Downloads
            BLOG

            639

            Online

            32.7k

            Benutzer

            82.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
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe