MQTT Werte True /False in InfluxDB

Hallo zusammen
bin mir nicht sicher ob das jetzt mehr ein MQTT oder InfluxDB Thema ist
Denke es geht mehr in Richtung MQTT
Ich bekomme über MQTT von einem Sensor (Taster) den Wert True und False.
Der Status wird im Dashbord auch als True / False angezeigt.

Jedoch gibt es in der InfluxDB keine Werte.
Nach längerem Suchen und Testen bin ich zur Kentniss gelangt das es hier einen Wert von 1 und 0 benötigt.
Habe bis jetzt nur mir MariaDB gearbeitet und dort wurde es korrekt in die DB geschrieben.

Nun mein Frage.
Müsste es nicht möglich sein direkt unter dem Sensor ein if then einzubauen.
If True dann „1“ elseif False dann „0“ else „No Data“

:sensor:
  - name: "ESP8266-05 - Get Sensor 2"
    unique_id: "ESP8266-05-mqtt.Get_Sensor_2"
    state_topic: IoT/ESP8266-05/get_sensor_2

Habe da schon einiges Versucht aber nichts hat Funktioniert.
Oder geht das so nicht und ich muss es anders lösen.
An die Config des Senors komme ich nicht ran. Das wäre ja das einfachste gewesen.

Gruss
Roland

Hi, du könntest dir einen Sensor anlegen der eine Unterteilung je nach Zustand vornimmt und somit 1 oder 0 setzt. Das sollte so funktionieren, die Entität musst du noch entsprechend austauschen.

template:
  - sensor:
      - name: "ESP8266-05 - Get Sensor 2"
        unique_id: "ESP8266-05-mqtt.Get_Sensor_2"
        state: >
          {% if states('sensor.esp8266_05_get_sensor_2') == 'True' %}
            1
          {% elif states('sensor.esp8266_05_get_sensor_2') == 'False' %}
            0
          {% else %}
            None
          {% endif %}

@jayjojayson Das wäre mit einem immediate if (IIF) deutlich kürzer:

Ja stimmt, wie immer viele Wege führen zum Ziel. :slight_smile: Ich finde die andere Schreibweise für mich aber irgendwie noch übersichtlicher. Kürzer ist es so auf jeden Fall.

template:
  - sensor:
      - name: "ESP8266-05 - Get Sensor 2"
        unique_id: "ESP8266-05-mqtt.Get_Sensor_2"
        state: "{{ 1 if is_state('sensor.esp8266_05_get_sensor_2', 'True') else 0 if is_state('sensor.esp8266_05_get_sensor_2', 'False') else None }}"

Ok. Denn Code habe ich auch gefunden.
Jedoch versucht direkt in MQTT einzubinden.
Ich habe die Einträge nun entsprechend in der Template-Datei eingetragen.
Zwei weitere Sensoren sind auch im Template und wurde auch erstellt und funktionieren.

#-----------------------------------------------------------
# Template - Sensor, eingetragen in Template File
#-----------------------------------------------------------
- sensor:
  - name: "ESP8266-05 - Get Sensor 2"
    unique_id: "ESP8266-05-mqtt.Get_Sensor_2"
    state: >
      {% if states('sensor.esp8266_05_get_sensor_2') == 'True' %}
        1
      {% elif states('sensor.esp8266_05_get_sensor_2') == 'False' %}
        0
      {% else %}
        None
      {% endif %}

Der Wert bleibt aber auf unbekannt.

Mir fehlt da irgendwie noch der Teil für MQTT.
Das Template weiss ja nicht von wo die Daten kommen,
Den Teil in MQTT kann ich ja so auch nicht belassen.
Dann habe ich zwei Entitäten.
Irgendwo müsste ich noch was Eintragen. Nur wo und was

Das hat (glaube) nix mit MQTT zu tun, Binär-Sensoren haben auch diesen Status. InfluxDB habe ich auch, aber dann zu Grafana

Jetzt mal direkt in InfluxDB

Alles klar. Ich habe da etwas falsch gedacht.
Einerseits wir über den MQTT Sensor eine Entitäten erstellt.
So wie es bis jetzt wahr.
Nun wir über das Template ein zusätzlicher Sensor mit einer neuen Entitäten erstellt.
MQTT liefert True und False
Template liefert 1 und 0

Dachte es würde da mir einem gehen.
Aber so Funktioniert es und 1 uns 0 wird in die InfluxDB geschrieben.
Danke für die Hilfe

Na super, wenn es jetzt klappt. Bitte auch die Lösung für andere Suchende markieren. Danke schön.

Wenn du dein Sensor direkt aus MQTT bekommst, müsste der mqtt-Sensor direkt mit einem value_template angelegt werden können, statt ihn erst als normalen Sensor zu erfassen und dann über ein Template zu wandeln. Dann hättest du auch nur eine Entität am Ende.

mqtt:
  sensor:
    - name: "ESP8266-05 - Get Sensor 2"
      unique_id: "ESP8266-05-mqtt.Get_Sensor_2"
      state_topic: "dein-MQTT-Topic"
      value_template: "{{ 1 if value == 'True' else 0 if value == 'False' else None }}"

Zwar noch nicht getestet, aber müsste eigentlich so funktionieren können.

Super das Funktioniert. Und ohne eine zusätzliche Entität zu erstellen.

1 „Gefällt mir“

Einmal selber zitiert

in diesem Beitrag sieht man ein Screenshot aus der Abfrage in der InfluxDB
hier sieht man das dort „0“ oder „1“ ausgegeben wird

In HA ist das ein Binärsensor mit den Zuständen „on“ und „off“

also muss hier doch nichts umgewandelt werden?