Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. js mqtt String Objekt setState 'true' oder true

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    js mqtt String Objekt setState 'true' oder true

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

      JS Vers. 3.1.3

      Wenn ich das mqtt Objekt:
      mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser ("type": "string")

      mit

      setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",true)
      

      setze, dann erhalte ich diesen Fehler:
      You are assigning a boolean to the state "mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser" which expects a string.
      Das Objekt wird aber auf true gesetzt.
      mit

      setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
      

      bleibt ohne Fehler, das Objekt bleibt aber unverändert.
      Ich habe das Objekt schon mehrmals gelöscht und neu angelegt.

      Wieso gibt das einen Fehler, wenn es aber dann doch funktioniert???????

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

        @hanss sagte:

        Wieso gibt das einen Fehler, wenn es aber dann doch funktioniert???????

        Es ist eine Warnung, kein Fehler. Ist common.type = 'string' richtig ? Falls nicht, ändere es.

        1 Reply Last reply Reply Quote 0
        • hanss
          hanss last edited by

          Das mqtt Objekt ist vom Typ String.
          Das muss so sein, weil ich sonst mit dem PubSubClient in den ESP8266 Clients Probleme
          habe, wenn die Objekte nicht vom Typ String sind.
          Aber warum gibt es eine Warnung, wenn es nur mit true funktioniert aber
          nicht mit 'true'?

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

            @hanss sagte:

            wenn es nur mit true funktioniert aber nicht mit 'true'?

            Wird geschaltet mit

            setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
            

            oder mit ?

            setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",true)
            
            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @paul53 last edited by paul53

              Wenn mit true und false geschaltet wird, ändere common.type in 'boolean'. Andernfalls ändere den Vergleich im Script.

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

                @paul53
                common.type = 'string'. Muss string sein.

                mit true erhalte ich die Warnung, aber es funktioniert.
                mit 'true' erhalte ich keine Warnung, aber es funktioniert NICHT.

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

                  @hanss sagte:

                  common.type = 'string'. Muss string sein.

                  Weshalb ? Von common.type = 'boolean' bekommt MQTT nichts mit, sondern nur ioBroker.

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

                    @paul53
                    Meine ESP8266 mit dem mqtt PubSubClient erzeugen die topics im ioBroker.
                    Da ist alles mit typ string.
                    Ich weiss nicht, wie man bei dem PubSubClient ein topic anlegt, damit beim
                    ioBroker ein Objekt mit Typ bool erzeugt wird.

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

                      @hanss sagte:

                      Ich weiss nicht, wie man bei dem PubSubClient ein topic anlegt, damit beim ioBroker ein Objekt mit Typ bool erzeugt wird.

                      Ich auch nicht.
                      Was hindert Dich daran, den Typ im Objekt manuell zu ändern ?

                      1 Reply Last reply Reply Quote 0
                      • hanss
                        hanss last edited by

                        Das wäre ein enormer Aufwand.
                        Ich möchte deshalb bei den Clients bei type string bleiben, das ist alles
                        getestet und funktioniert ohne Probleme.
                        Es gibt da nur den typ string, keine floats, nur ganze Zahlen, bool als "true" und "false" und Strings.

                        Eigentlich ist ja das Problem nicht bei den Clients, sondern js im ioBroker funktioniert da
                        offensichtlich nicht richtig.
                        Ich habe bisher immer vermieden, einen Fehler zu umgehen. Das rächt sich immer irgendwann.
                        Leider kann ich den js im ioBroker nicht selber ändern.

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

                          @hanss sagte:

                          Eigentlich ist ja das Problem nicht bei den Clients,

                          Doch, wenn man mit true und false ein- und ausschalten kann, nicht aber mit 'true' und 'false', liegt es nicht an ioBroker.

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

                            @paul53
                            Jetzt mal ohne Clients.
                            Es gibt ein Objekt vom Typ String.

                            Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
                            ausführe, bleibt das Objekt unverändert.

                            Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",true)
                            ausführe, steht im Objekt auch true, ich erhalte aber die Warnung.

                            Deshalb meine ich, da stimmt etwas nicht mit js im ioBroker.

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

                              @hanss sagte:

                              Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
                              ausführe, bleibt das Objekt unverändert.

                              Wird denn mit

                              setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
                              

                              eingeschaltet und mit

                              setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'false')
                              

                              ausgeschaltet ?

                              1 Reply Last reply Reply Quote 0
                              • hanss
                                hanss last edited by

                                Im ioBroker gar nichts.
                                Die Info 'true' oder 'false' wird nur per mqtt an die Clients übertragen.
                                Die Clients schalten dann entsprechend.

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

                                  @hanss sagte:

                                  Die Info 'true' oder 'false' wird nur per mqtt an die Clients übertragen. Die Clients schalten dann entsprechend.

                                  Dann ändere den Vergleich im Script.

                                  // Schaltet Gartenwasser Timer ein wenn GW aus war, schaltet Gartenwasser aus wenn GW ein war
                                  // GW TIMER
                                  var update;
                                  on({id: "mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser", change: "ne"}, function (obj) {
                                          if ( obj.state.val == 'true') {
                                                  update = setTimeout(function () {            // Ausschalt Timer
                                                      setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser", 'false');     // Gartenwasser ausschalten
                                                  },30 * 60 * 1000);                           // Ausschaltzeit in ms 30 * 60 * 1000
                                          }
                                  });
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • hanss
                                    hanss last edited by

                                    Das Problem ist nicht obj.state.val == 'true',
                                    sondern
                                    Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
                                    ausführe, bleibt das Objekt unverändert.

                                    Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",true)
                                    ausführe, steht im Objekt auch true, ich erhalte aber die Warnung.

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

                                      @hanss sagte:

                                      bleibt das Objekt unverändert.

                                      Was bedeutet Objekt unverändert ?

                                      1 Reply Last reply Reply Quote 0
                                      • hanss
                                        hanss last edited by

                                        Wenn das Objekt vorher 'false' war, dann ist es auch nach
                                        setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
                                        immer noch 'false'

                                        Könntest Du das einmal nachbilden, sind ja nur ein paar Zeilen.
                                        Würde mich interessieren, ob das auch bei Dir sich so verhält.

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

                                          @hanss sagte:

                                          Könntest Du das einmal nachbilden, sind ja nur ein paar Zeilen.

                                          Nein, ich habe kein MQTT. Wenn ich einen Datenpunkt mit setState() auf 'true' setze, dann wird auch true (rot) angezeigt. Bleibt es bei Dir false (schwarz) ? Dann macht das der Adapter.

                                          1 Reply Last reply Reply Quote 0
                                          • hanss
                                            hanss last edited by

                                            Die Farbe beim Objekt ändert sich nicht, weil es ein string ist und kein bool.

                                            paul53 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            870
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            2
                                            22
                                            1085
                                            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