ESP8266 Temp Wert wird nicht angezeigt

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

ESP8266 Temp Wert wird nicht angezeigt

Beitrag von Maverick-811 »

Hallo zusammen.
Ich versuche gerade ein Thing mit einem ESP8266 Temperatur Wert zu erzeugen.
Die Bridge mit MQTT ist als Thing eingebunden und funktioniert.
Der ESP8266 gibt den Wert zum MQTT Broker weiter. Kann ich über MQTT Explorer sehen.
Wenn ich nun ein Thing erstelle (siehe unten) an ist alles Online, aber als Wert wird NULL angezeigt.
So erstelle ich das Thing:
Unter Einstellungen „THINGS“ auswählen
+ (rechts unten) drücken
MQTT Binding auswählen
Generic MQTT Thing auswählen
Label ändern z.B. ESP8266-102 (eindeutiges Label)
Bridge auswählen „MQTT Broker“ (wird links unten angezeigt)
Create Thing drücken

Things Auswahl, dort sollte jetzt „ESP8266-102“ angezeigt werden
„ESP8266-102“ auswählen
Channels (oben Mitte) drücken
ADD Channel auswählen
Channel Identifer eintragen z.B. „ESP826102Temp“
Label eintragen z.B. „ESP8266-102 Temp“
Channel type auswählen “ Number Value“

In „MQTT State Topic“ wird „esp8266-102/temp“ eingetragen
(wie mit Arduino unter „client.publish“ steht!!!
„Create“ und „Save (Ctrl-S)“ drücken

Channel auswählen
„Add Link to Item“
„Create a new Item“ auswählen
„Link“ Button drücken
Save (Ctrl-S)

„Model“ auswählen
„Add Location“ zB. Unter Musikzimmer ESP8266-102
„Create Points from Thing“ dann Musikzimmer auswählen
Select All
Add Points to Model
Select All

Was habe ich übersehen oder falsch gemacht.
Es funktioniert mit zwei unterschiedlichen ESP8266 nicht.

Ich hoffe, ihr könnt mir helfen.
Gruß
Horst
von udo1toni » 19. Mär 2023 22:25
Prima!.

Ich nehme mal an, dasss die Damen nach oben eigentlich ein Daumen nach oben sein sollen :lol:
Du kannst gewöhnlich eine Antwort als "beste" Antwort markieren (das wäre der Haken).
Gehe zur vollständigen Antwort

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von Maverick-811 »

Ich habe gerade noch einen Versuch gemacht und habe unter Add Link nicht Number sondern String ausgewählt und da wird der Wert angezeigt.

Jetzt meine Frage: Warum funktioniert Number nicht?

Gruß
Horst

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von udo1toni »

Zunächst einmal hast Du übersehen, dass es viel sinnvoller gewesen wäre, das Thing in Form von Code zu präsentieren.
Der zweite Punkt: ESP8266 ist erst mal nur ein Microcontroller. Welche Firmware nutzt Du?
Kannst Du mal eine konkrete Payload des Topics esp8266-102/temp zeigen?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von Maverick-811 »

Hallo,

auf dem ESP8266-01 (um genau zu sein) läuft ein selbst geschriebenes (natürlich auch abgeschrieben) Programm welches alle 30 Sek. den Wert abfragt und veröffentlicht.

Hier die wichtigen Zeilen aus dem Programm:

Code: Alles auswählen

if (client.connect("esp8266-102", user, passwd)) {
Serial.println("connected");
client.subscribe("esp8266-102/temp");

dtostrf(temperatur, 6, 2, temperatur_str);
client.publish("esp8266-102/temp", temperatur_str);    
Das Daten am MQTT Broker ankommen, sehe ich mit dem „MQTT Explorer“ und mit „MQTT.fx“.

Subscibe: esp8266-102/temp

esp8266-102
temp = 20.63

Das ist der Code vom Thing (ich hoffe, dass ich es richtig verstanden habe)

Code: Alles auswählen

UID: mqtt:topic:a02032baab:00d6728db9
label: ESP8266-102
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:a02032baab
channels:
  - id: ESP8266102Temp
    channelTypeUID: mqtt:number
    label: ESP8266-102 Temp
    description: ""
    configuration:
      stateTopic: esp8266-102/temp
  - id: Text
    channelTypeUID: mqtt:string
    label: Text
    description: ""
    configuration:
      stateTopic: esp8266-102/temp
Was verstehst Du unter kontreter Payload bzw. wo finde ich das?

Gruß
Horst

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von udo1toni »

Die Payload ist der Inhalt der Message. Die Frage ist, ob die Payload tatsächlich ausschließlich arabische Ziffern und einen einzelnen Punkt enthält.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von Maverick-811 »

Hallo,
hier ist ein Bild (Dateianhang) vom MQTTfx und da werden 2 Ziffern vor dem Punkt und 2 Ziffern danach angezeigt.

Was mir noch aufgefallen ist:
Ich habe ja noch mehr von diesen ESP8266 z.B. mit Temp und Humi und die funktionieren.

Hier der Code

Code: Alles auswählen

UID: mqtt:topic:a02032baab:15008bfb64
label: Musikzimmer
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:a02032baab
channels:
  - id: MusikzimmerHumi
    channelTypeUID: mqtt:number
    label: Musikzimmer Humi
    description: ""
    configuration:
      stateTopic: esp8266-158/humi
  - id: MusikzimmerTemp
    channelTypeUID: mqtt:number
    label: Musikzimmer Temp
    description: ""
    configuration:
      stateTopic: esp8266-158/temp
und ein Bild vom MQTT Explorer (siehe Dateianhang.

Ich hoffe, Du kannst mir weiterhelfen

Gruß
Horst
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von udo1toni »

Kann es sein, dass Du den selben Channel zweimal abfragst, also einmal als String und zusätzlich noch als Number? Das ist vermutlich nicht gut (auch wenn es eigentlich mit mqtt funktionieren sollte, aber nur zur Sicherheit...)

Eventuell gibt es auch ein Problem bei der Datenübernahme in die Items, da käme es auf den exakten Itemtyp an.
Es handelt sich bei den Messwerten ja zum einen um eine Temperatur und zum anderen um die Luftfeuchte.
openHAB hat UoM integriert (Units of Measurement), das bedeutet, man bekommt in einem Item Status eventuell nicht nur den Wert angezeigt, sondern zusätzlich auch die Einheit (bitte nicht verwechseln mit der Einheit, die man per Formatierung mit ausgeben lässt).
Das mqtt Binding unterstützt für number Channel auch UoM, dazu muss man unter den Advanced Options im betreffenden Channel die Einheit im Klartext angeben, also in diesem Fall °C bzw. % (ohne sonstige Erweiterungen, z.B. keine Anführungszeichen).
Wenn Du die Einheit so angibst, kannst Du den Channel mit einem Item vom Typ Number:Temperature bzw. Number:Dimensionless verlinken und hast automatisch die Einheit mit dabei stehen. Wenn du allerdings versuchst, einen UoM channel mit einem Nicht-UoM Item zu verlinken (oder auch umgekehrt), dann kann das zu Problemen führen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von Maverick-811 »

Guten Morgen,
Kann es sein, dass Du den selben Channel zweimal abfragst, also einmal als String und zusätzlich noch als Number? Das ist vermutlich nicht gut (auch wenn es eigentlich mit mqtt funktionieren sollte, aber nur zur Sicherheit...)
dass habe ich nur gemacht, um zu zeigen, dass es mit String geht und mit Number nicht. Natürlich möchte ich nur Number verwenden!

Ich habe einen Test mit UoM gemacht, als im Fele ein "C" eingetragen, aber leider ohne Erfolg.

Code: Alles auswählen

UID: mqtt:topic:a02032baab:e2d87fd8c2
label: Test
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:a02032baab
channels:
  - id: Test1
    channelTypeUID: mqtt:number
    label: Test1
    description: ""
    configuration:
      stateTopic: esp8266-102/temp
      unit: C
Da ich mit einigen ESP8266 mit BME280 die Temperatur und Humidity abfrage und dies funktioniert und mit den ESP8266 mit DS18B20 nur die Temperatur abfrage und diese nicht funktionieren, werde ich mal im Arduino Forum die Frage nach Unterschieden stellen.

Melde mich wieder.
Gruß
Horst

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von udo1toni »

Nein, C ist Coulomb, Du möchtest °C :)

Wenn es hartnäckig nicht funktionieren sollte, lösche das Thing und lege es neu an (unbedingt mit einer anderen UID!), vermutlich ist dann beim ersten Anlegen etwas schief gegangen...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Maverick-811
Beiträge: 64
Registriert: 1. Feb 2023 19:50
Answers: 0

Re: ESP8266 Temp Wert wird nicht angezeigt

Beitrag von Maverick-811 »

So, mit Erfolgsmeldung zurück.

Der Fehler lag daran, dass das ESP8266 einen Wert mit einer Leerstelle am Anfang sendet.

So " 12.50" (ohne die Anführungsstriche)

Ich habe den Befehl
dtostrf(temperatur, 6, 2, temperatur_str);
durch
dtostrf(temperatur, 1, 2, temperatur_str);
ersetzt.

Dabei weiß ich nicht, was die "1" bedeutet. In der Beschreibung soll die Ziffer die Länge des String festlegen. Aber warum dann "1"?
Keine Ahnung, ist mir auch gerade egal.

Falls jemand genaueres wissen möchte, der kann im Arduino Forum nachschauen.

Gruß und Danke (an Alle)
Horst

Antworten