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. Skripten / Logik
  4. Blockly
  5. MQTT Zahl in Variable ESP8266

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

MQTT Zahl in Variable ESP8266

Geplant Angeheftet Gesperrt Verschoben Blockly
26 Beiträge 5 Kommentatoren 2.1k Aufrufe 2 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.
  • S Offline
    S Offline
    Smallfeuer
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    vielleicht könnt Ihr mir helfen. Ich habe ein ESP8266 wemos mini der via MQTT verbunden ist und je nach variable eine LED leuchten lässt (Thermometer - Min, Max Temp und aktuelle Temp).
    Ich setze im IOBROKER jetzt unter der Rubrik die Datenpunkte für Tmin, Tmax usw.
    Das Problem ist, das ich aus meinen Zahlen -20 bis 39 ( entspricht dann den LEDS 0-59 am Thermometer) nicht immer das richtige Ergebnis erhalte.

    Wie versendet IOBROKER hier die Werte? Wie muss ich den Payload verändern?

    Danke schon mal für Hinweise.

    Auf dem Arduino versuche ich jetzt die Payloads so umzuwandeln, aber das klappt nur bedingt. Habt Ihr eine bessere Lösung für mich?

    void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
      Serial.println("Publish received.");
      Serial.print("  topic: ");
      Serial.println(topic);
    
      if (strcmp(topic,"Thermometer/Aussentemperatur")==0){
              if (atoi((char*)payload) > -20 and atoi((char*)payload) < 40){
              T = atoi((char*)payload);
              } 
          T = atoi((char*)payload);
          Serial.print("Variabel-T ");
          Serial.println(T);
         }
    
    HomoranH WalW 2 Antworten Letzte Antwort
    0
    • S Smallfeuer

      Hallo zusammen,

      vielleicht könnt Ihr mir helfen. Ich habe ein ESP8266 wemos mini der via MQTT verbunden ist und je nach variable eine LED leuchten lässt (Thermometer - Min, Max Temp und aktuelle Temp).
      Ich setze im IOBROKER jetzt unter der Rubrik die Datenpunkte für Tmin, Tmax usw.
      Das Problem ist, das ich aus meinen Zahlen -20 bis 39 ( entspricht dann den LEDS 0-59 am Thermometer) nicht immer das richtige Ergebnis erhalte.

      Wie versendet IOBROKER hier die Werte? Wie muss ich den Payload verändern?

      Danke schon mal für Hinweise.

      Auf dem Arduino versuche ich jetzt die Payloads so umzuwandeln, aber das klappt nur bedingt. Habt Ihr eine bessere Lösung für mich?

      void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
        Serial.println("Publish received.");
        Serial.print("  topic: ");
        Serial.println(topic);
      
        if (strcmp(topic,"Thermometer/Aussentemperatur")==0){
                if (atoi((char*)payload) > -20 and atoi((char*)payload) < 40){
                T = atoi((char*)payload);
                } 
            T = atoi((char*)payload);
            Serial.print("Variabel-T ");
            Serial.println(T);
           }
      
      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von Homoran
      #2

      @smallfeuer
      organisatorische Frage:
      Worum geht es hier

      • Fragen zur Forensoftware sicherlich nicht.
      • Fragen zu Arduino Programmierung?
      • Fragen zu ioBroker Javascript
      • anderer Logikmaschine?
      • MQTT Adapter?

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      S 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @smallfeuer
        organisatorische Frage:
        Worum geht es hier

        • Fragen zur Forensoftware sicherlich nicht.
        • Fragen zu Arduino Programmierung?
        • Fragen zu ioBroker Javascript
        • anderer Logikmaschine?
        • MQTT Adapter?
        S Offline
        S Offline
        Smallfeuer
        schrieb am zuletzt editiert von
        #3

        @homoran Hallo homoran, MQTT Adapter trifft es wohl. Hatte schon fast überlegt damit ins Arduino Forum zu gehen, wollte aber erstmal in Erfahrung bringen was der MQTT Adapter Iobroker seitig genau an Daten ansendet im Payload und wovon das abhängt. Vielleicht muss ich nur im Blockly die Variable anders konvertieren und dann stimmt der Payload auf der Empfangsseite. Hier wird es sicher jemanden geben der ähnliches bereits umgesetzt hat. :) Hoffe ich.
        PS: Ich bin bestimmt in der falschen Rubrik. Sorry.

        HomoranH 1 Antwort Letzte Antwort
        0
        • S Smallfeuer

          @homoran Hallo homoran, MQTT Adapter trifft es wohl. Hatte schon fast überlegt damit ins Arduino Forum zu gehen, wollte aber erstmal in Erfahrung bringen was der MQTT Adapter Iobroker seitig genau an Daten ansendet im Payload und wovon das abhängt. Vielleicht muss ich nur im Blockly die Variable anders konvertieren und dann stimmt der Payload auf der Empfangsseite. Hier wird es sicher jemanden geben der ähnliches bereits umgesetzt hat. :) Hoffe ich.
          PS: Ich bin bestimmt in der falschen Rubrik. Sorry.

          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #4

          @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

          Ich bin bestimmt in der falschen Rubrik

          sonst würde ich nicht fragen

          @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

          Hatte schon fast überlegt damit ins Arduino Forum zu gehen

          wäre für die Arduino Seite sinnvoll, aber da bekommst du auch hier Hilfe.

          @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

          Vielleicht muss ich nur im Blockly die Variable anders konvertieren

          dann schieb ich das mal dahin, bitte Blockly zeigen!

          @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

          was der MQTT Adapter Iobroker seitig genau an Daten ansendet im Payload und wovon das abhängt

          das was du im client definierst.

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          S 1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

            @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

            Ich bin bestimmt in der falschen Rubrik

            sonst würde ich nicht fragen

            @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

            Hatte schon fast überlegt damit ins Arduino Forum zu gehen

            wäre für die Arduino Seite sinnvoll, aber da bekommst du auch hier Hilfe.

            @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

            Vielleicht muss ich nur im Blockly die Variable anders konvertieren

            dann schieb ich das mal dahin, bitte Blockly zeigen!

            @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

            was der MQTT Adapter Iobroker seitig genau an Daten ansendet im Payload und wovon das abhängt

            das was du im client definierst.

            S Offline
            S Offline
            Smallfeuer
            schrieb am zuletzt editiert von Smallfeuer
            #5

            @homoran Danke dir.

            So sieht der Datenpunkt aus:

            {
              "common": {
                "name": "Aussentemperatur",
                "desc": "Manuell erzeugt",
                "role": "state",
                "type": "number",
                "read": true,
                "write": true,
                "def": 0,
                "min": -20,
                "max": 39
              },
              "type": "state",
              "_id": "mqtt.0.Thermometer.Aussentemperatur",
              "acl": {
                "object": 1636,
                "state": 1636,
                "file": 1632,
                "owner": "system.user.admin",
                "ownerGroup": "system.group.administrator"
              },
              "from": "system.adapter.admin.0",
              "user": "system.user.admin",
              "ts": 1678306757957
            }
            

            so schreibe ich Ihn:
            f3c99e14-a82e-49c7-9856-0459a27d0226-grafik.png

            Im Debugmodus wird hier der Sub und die 6 korrekt gesendet:

            2024-01-22 10:03:06.407 - debug: mqtt.0 (14618) Client [esp8266-9c8f93] send to this client "Thermometer/Aussentemperatur": 6
            

            Aber ab und zu - insbesondere jetzt wo auch mal -1,0,1 gesendet wird - erhalte ich dann 10 Grad statt 1 Grad.

            HomoranH 2 Antworten Letzte Antwort
            0
            • S Smallfeuer

              @homoran Danke dir.

              So sieht der Datenpunkt aus:

              {
                "common": {
                  "name": "Aussentemperatur",
                  "desc": "Manuell erzeugt",
                  "role": "state",
                  "type": "number",
                  "read": true,
                  "write": true,
                  "def": 0,
                  "min": -20,
                  "max": 39
                },
                "type": "state",
                "_id": "mqtt.0.Thermometer.Aussentemperatur",
                "acl": {
                  "object": 1636,
                  "state": 1636,
                  "file": 1632,
                  "owner": "system.user.admin",
                  "ownerGroup": "system.group.administrator"
                },
                "from": "system.adapter.admin.0",
                "user": "system.user.admin",
                "ts": 1678306757957
              }
              

              so schreibe ich Ihn:
              f3c99e14-a82e-49c7-9856-0459a27d0226-grafik.png

              Im Debugmodus wird hier der Sub und die 6 korrekt gesendet:

              2024-01-22 10:03:06.407 - debug: mqtt.0 (14618) Client [esp8266-9c8f93] send to this client "Thermometer/Aussentemperatur": 6
              

              Aber ab und zu - insbesondere jetzt wo auch mal -1,0,1 gesendet wird - erhalte ich dann 10 Grad statt 1 Grad.

              HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #6

              @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

              So sieht der Datenpunkt aus:

              bitte als Text in code-tags posten.
              https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Antwort Letzte Antwort
              1
              • S Smallfeuer

                @homoran Danke dir.

                So sieht der Datenpunkt aus:

                {
                  "common": {
                    "name": "Aussentemperatur",
                    "desc": "Manuell erzeugt",
                    "role": "state",
                    "type": "number",
                    "read": true,
                    "write": true,
                    "def": 0,
                    "min": -20,
                    "max": 39
                  },
                  "type": "state",
                  "_id": "mqtt.0.Thermometer.Aussentemperatur",
                  "acl": {
                    "object": 1636,
                    "state": 1636,
                    "file": 1632,
                    "owner": "system.user.admin",
                    "ownerGroup": "system.group.administrator"
                  },
                  "from": "system.adapter.admin.0",
                  "user": "system.user.admin",
                  "ts": 1678306757957
                }
                

                so schreibe ich Ihn:
                f3c99e14-a82e-49c7-9856-0459a27d0226-grafik.png

                Im Debugmodus wird hier der Sub und die 6 korrekt gesendet:

                2024-01-22 10:03:06.407 - debug: mqtt.0 (14618) Client [esp8266-9c8f93] send to this client "Thermometer/Aussentemperatur": 6
                

                Aber ab und zu - insbesondere jetzt wo auch mal -1,0,1 gesendet wird - erhalte ich dann 10 Grad statt 1 Grad.

                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #7

                @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                wo auch mal -1,0,1 gesendet wird

                was 7st das für ein Wert?

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                S 1 Antwort Letzte Antwort
                0
                • HomoranH Homoran

                  @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                  wo auch mal -1,0,1 gesendet wird

                  was 7st das für ein Wert?

                  S Offline
                  S Offline
                  Smallfeuer
                  schrieb am zuletzt editiert von
                  #8

                  @homoran Die aktuelle gerundete Aussentemperatur :)

                  HomoranH S 2 Antworten Letzte Antwort
                  0
                  • S Smallfeuer

                    @homoran Die aktuelle gerundete Aussentemperatur :)

                    HomoranH Nicht stören
                    HomoranH Nicht stören
                    Homoran
                    Global Moderator Administrators
                    schrieb am zuletzt editiert von Homoran
                    #9

                    @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                    @homoran Die aktuelle gerundete Aussentemperatur :)

                    mit 2 Kommata?

                    btw: benötigt dein esp per mqtt number oder Text?
                    komma oder Dezimalpunkt?

                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    S 1 Antwort Letzte Antwort
                    0
                    • S Smallfeuer

                      @homoran Die aktuelle gerundete Aussentemperatur :)

                      S Offline
                      S Offline
                      Smallfeuer
                      schrieb am zuletzt editiert von Smallfeuer
                      #10

                      Die Frage ist also, müsste hier die Funktion:

                      T = atoi((char*)payload); 
                      

                      die Daten korrekt verarbeiten, oder muss man hier die länge des Payload manuell zerlegen?

                      Die Varible T ist im Programm als int definiert. Sollte somit den Zahlenumfang und das (-)minus Zeichen abbilden können.

                      S 1 Antwort Letzte Antwort
                      0
                      • HomoranH Homoran

                        @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                        @homoran Die aktuelle gerundete Aussentemperatur :)

                        mit 2 Kommata?

                        btw: benötigt dein esp per mqtt number oder Text?
                        komma oder Dezimalpunkt?

                        S Offline
                        S Offline
                        Smallfeuer
                        schrieb am zuletzt editiert von Smallfeuer
                        #11

                        @homoran

                        Nein, ich meinte die aktuellen Aussentemperaturen.
                        Es wird immer nur eine - auf ein Ganzes - gerundete Zahl über mittelt.
                        also
                        -1
                        0
                        1
                        dementsprechend rechnet jetzt der ESP +20 und es gehen bei 0 -> 20 LED's an -> was dann 0 Grad sind. bei -1 sollten es 19 sein, sind es aber leider nicht immer.

                        HomoranH Dr. BakteriusD 2 Antworten Letzte Antwort
                        0
                        • S Smallfeuer

                          @homoran

                          Nein, ich meinte die aktuellen Aussentemperaturen.
                          Es wird immer nur eine - auf ein Ganzes - gerundete Zahl über mittelt.
                          also
                          -1
                          0
                          1
                          dementsprechend rechnet jetzt der ESP +20 und es gehen bei 0 -> 20 LED's an -> was dann 0 Grad sind. bei -1 sollten es 19 sein, sind es aber leider nicht immer.

                          HomoranH Nicht stören
                          HomoranH Nicht stören
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von Homoran
                          #12

                          @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                          dementsprechend rechnet jetzt der ESP +20 und es gehen bei 0 -> 20 LED's an -> was dann 0 Grad sind. bei -1 sollten es 19 sein, sind es aber leider nicht immer.

                          ich vermute mal, dass du nicht weisst, ob der Wert nicht, oder falsch, v8n iobroker übermittelt wird, ob das WLAN in dem Moment spinnt, oder ob dein ESP daraus Mist baut.

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          S 1 Antwort Letzte Antwort
                          0
                          • HomoranH Homoran

                            @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                            dementsprechend rechnet jetzt der ESP +20 und es gehen bei 0 -> 20 LED's an -> was dann 0 Grad sind. bei -1 sollten es 19 sein, sind es aber leider nicht immer.

                            ich vermute mal, dass du nicht weisst, ob der Wert nicht, oder falsch, v8n iobroker übermittelt wird, ob das WLAN in dem Moment spinnt, oder ob dein ESP daraus Mist baut.

                            S Offline
                            S Offline
                            Smallfeuer
                            schrieb am zuletzt editiert von
                            #13

                            @homoran
                            Im seriellen Monitor vom ESP sehe ich in dem Moment dann auch falsche Werte. Ob diese jetzt falsch konvertiert werden kann ich nicht sagen. Dazu müsste ich mir wahrscheinlich den unveränderten PAYLOAD anzeigen lassen?
                            Ich würde jetzt mal probieren den ESP auszuschließen, wenn du sagt das es von der Programmierung her passt. Das WLAN ist stabil, meine Daten die ich von den anderen Sensoren (Garage) zum Iobroker sende kommen immer fehlerfrei an.
                            Desweiteren habe ich QoS auf 2 gesetzt, somit sollte ein Datenverlust im WLAN eigentlich ausgeschlossen sein.

                            WalW 1 Antwort Letzte Antwort
                            0
                            • S Smallfeuer

                              Hallo zusammen,

                              vielleicht könnt Ihr mir helfen. Ich habe ein ESP8266 wemos mini der via MQTT verbunden ist und je nach variable eine LED leuchten lässt (Thermometer - Min, Max Temp und aktuelle Temp).
                              Ich setze im IOBROKER jetzt unter der Rubrik die Datenpunkte für Tmin, Tmax usw.
                              Das Problem ist, das ich aus meinen Zahlen -20 bis 39 ( entspricht dann den LEDS 0-59 am Thermometer) nicht immer das richtige Ergebnis erhalte.

                              Wie versendet IOBROKER hier die Werte? Wie muss ich den Payload verändern?

                              Danke schon mal für Hinweise.

                              Auf dem Arduino versuche ich jetzt die Payloads so umzuwandeln, aber das klappt nur bedingt. Habt Ihr eine bessere Lösung für mich?

                              void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
                                Serial.println("Publish received.");
                                Serial.print("  topic: ");
                                Serial.println(topic);
                              
                                if (strcmp(topic,"Thermometer/Aussentemperatur")==0){
                                        if (atoi((char*)payload) > -20 and atoi((char*)payload) < 40){
                                        T = atoi((char*)payload);
                                        } 
                                    T = atoi((char*)payload);
                                    Serial.print("Variabel-T ");
                                    Serial.println(T);
                                   }
                              
                              WalW Online
                              WalW Online
                              Wal
                              Developer
                              schrieb am zuletzt editiert von Wal
                              #14

                              @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                              Serial.println(T);

                              Den Arduino mal mit dem PC verbinden und mit einem Terminal schauen was überhaupt übertragen wird.

                              edit: Ok, du warst schneller

                              Gruß
                              Walter

                              DoorIO-Adapter
                              wioBrowser-Adapter und wioBrowser

                              1 Antwort Letzte Antwort
                              0
                              • S Smallfeuer

                                @homoran
                                Im seriellen Monitor vom ESP sehe ich in dem Moment dann auch falsche Werte. Ob diese jetzt falsch konvertiert werden kann ich nicht sagen. Dazu müsste ich mir wahrscheinlich den unveränderten PAYLOAD anzeigen lassen?
                                Ich würde jetzt mal probieren den ESP auszuschließen, wenn du sagt das es von der Programmierung her passt. Das WLAN ist stabil, meine Daten die ich von den anderen Sensoren (Garage) zum Iobroker sende kommen immer fehlerfrei an.
                                Desweiteren habe ich QoS auf 2 gesetzt, somit sollte ein Datenverlust im WLAN eigentlich ausgeschlossen sein.

                                WalW Online
                                WalW Online
                                Wal
                                Developer
                                schrieb am zuletzt editiert von
                                #15

                                @smallfeuer ,
                                evtl. erst in String umwandeln ?

                                   payload[length] = '\0'; 
                                   int T = atoi((char *)payload);
                                

                                Gruß
                                Walter

                                DoorIO-Adapter
                                wioBrowser-Adapter und wioBrowser

                                HomoranH S 2 Antworten Letzte Antwort
                                0
                                • WalW Wal

                                  @smallfeuer ,
                                  evtl. erst in String umwandeln ?

                                     payload[length] = '\0'; 
                                     int T = atoi((char *)payload);
                                  
                                  HomoranH Nicht stören
                                  HomoranH Nicht stören
                                  Homoran
                                  Global Moderator Administrators
                                  schrieb am zuletzt editiert von
                                  #16

                                  @wal sagte in MQTT Zahl in Variable ESP8266:

                                  evtl. erst in String umwandeln ?

                                  da warte ich noch auf fie Antwort

                                  @homoran sagte in MQTT Zahl in Variable ESP8266:

                                  benötigt dein esp per mqtt number oder Text?

                                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                  1 Antwort Letzte Antwort
                                  1
                                  • S Smallfeuer

                                    Die Frage ist also, müsste hier die Funktion:

                                    T = atoi((char*)payload); 
                                    

                                    die Daten korrekt verarbeiten, oder muss man hier die länge des Payload manuell zerlegen?

                                    Die Varible T ist im Programm als int definiert. Sollte somit den Zahlenumfang und das (-)minus Zeichen abbilden können.

                                    S Offline
                                    S Offline
                                    Smallfeuer
                                    schrieb am zuletzt editiert von Smallfeuer
                                    #17

                                    @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                                    Die Varible T ist im Programm als int definiert

                                    Dementsprechend eine Zahl.
                                    Ich habe jetzt das Thermometer am MAC hängen und wie es dann so ist werden alle Werte auf dem seriellen Monitor korrekt ausgegeben und auch angezeigt. Ich muss also jetzt warten bis der Fehler auch mal auftritt.

                                    1 Antwort Letzte Antwort
                                    0
                                    • WalW Wal

                                      @smallfeuer ,
                                      evtl. erst in String umwandeln ?

                                         payload[length] = '\0'; 
                                         int T = atoi((char *)payload);
                                      
                                      S Offline
                                      S Offline
                                      Smallfeuer
                                      schrieb am zuletzt editiert von
                                      #18

                                      @wal sagte in MQTT Zahl in Variable ESP8266:

                                      wandeln

                                      Für mich hier die Frage was erwartet die Funktion zu bekommen?

                                      void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total)
                                      

                                      Also ich sende ja eine Zahl vom Iobroker, aber geht "char* payload" auch richtig damit um?

                                      1 Antwort Letzte Antwort
                                      0
                                      • Marc BergM Offline
                                        Marc BergM Offline
                                        Marc Berg
                                        Most Active
                                        schrieb am zuletzt editiert von Marc Berg
                                        #19

                                        @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                                        payload

                                        In payload steht nicht zwingend das, was du erwartest, da es nur ein Pointer auf eine Zeichenkette ist und nicht "Null terminiert".

                                        Versuch mal:

                                        char payload2[len+1];
                                        payload2[len] = '\0';
                                        strncpy(payload2, payload, len); 
                                        

                                        und arbeite dann mit "payload2" weiter.

                                        EDIT: das ist eine ähnliche Lösung wie die von @Wal, nur dass eine neue Variable angelegt wird. Entscheidend ist das "\0" zum sauberen Terminieren der Zeichenkette.

                                        NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+RabbitMQ+Grafana

                                        Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

                                        Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

                                        WalW 1 Antwort Letzte Antwort
                                        0
                                        • Marc BergM Marc Berg

                                          @smallfeuer sagte in MQTT Zahl in Variable ESP8266:

                                          payload

                                          In payload steht nicht zwingend das, was du erwartest, da es nur ein Pointer auf eine Zeichenkette ist und nicht "Null terminiert".

                                          Versuch mal:

                                          char payload2[len+1];
                                          payload2[len] = '\0';
                                          strncpy(payload2, payload, len); 
                                          

                                          und arbeite dann mit "payload2" weiter.

                                          EDIT: das ist eine ähnliche Lösung wie die von @Wal, nur dass eine neue Variable angelegt wird. Entscheidend ist das "\0" zum sauberen Terminieren der Zeichenkette.

                                          WalW Online
                                          WalW Online
                                          Wal
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #20

                                          @marc-berg ,
                                          das das Gleiche habe ich oben schon gepostet, schau es dir nochmal an.

                                          Gruß
                                          Walter

                                          DoorIO-Adapter
                                          wioBrowser-Adapter und wioBrowser

                                          Marc BergM 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

                                          702

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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