MQTT HomeAssistant Werte auslesen ohne Einheiten

Hallo , ich bekomme per MQTT Gateway Werte mit Einheiten und würde gene unter yaml den MQTT Wert ohne Einheit in Home Assistant weitergeben. Leider kann ich es im Modbus Gateway nicht anders einrichten, sind immer die Einheiten direkt dahinter.
Ein Beispiel 500W soll nur 500 als Entität übernommen werden.

Wenn ich device_class: oder unit_of_measurement: eintrage wird nur Status unknown angezeit, weil Wert und Einheit gesendet wird.

Kann man die Einheit löschen direkt beim auslesen mit ein value_template ?
Jeder Wert wird wird in ein extra Tropic ausgegeben. tele/Zaehler1
Für Eure Hilfe bin ich recht herzlich dankbar.

Hi, wahrscheinlich kommt dein Wert als String rein, deshalb stellen sich die device_class dann quer

Probier mal mit replace aus, sollte dann um die jeweilige Einheit gekürzt werden und float damit es mit den device_class geht


value_template: {{ states.sensor.XYZ|replace('W','')|float }}

Hallo , Danke erst mal .
Hatte auch die Idee mit replace, habe aber ein Fehler beim überprüfen und neu starten

Error loading /config/configuration.yaml: while parsing a flow mapping

 in "/config/mqtt.yaml", line 67, column 22
expected ',' or '}', but got '<scalar>'
  in "/config/mqtt.yaml", line 67, column 68

so ist es in der yaml mqtt eingetragen .

  - name: obergeschoss powergesamt
    unique_id: "obergeschoss powergesamt"
    state_topic: "tele/Zaehler1/Gesamt_Leistung"
    json_attributes_topic: "tele/Zaehler1/Gesamt_Leistung"
    value_template: {{ states.sensor.Gesamt_Leistung|replace('W','')|float }}

Da war ich mit den Klammern etwas geizig :innocent:

Probier das mal


value_template: {{ states('sensor.Gesamt_Leistung') | replace('W','') | float }}

Leider Immer noch Fehler, habe es noch in " gesetzt

Konfiguration fehlerhaft!
 Invalid config for [mqtt]: invalid template (TemplateSyntaxError: unexpected char '‘' at 10) for dictionary value @ data['mqtt']['sensor'][5]['value_template']. Got "{{ states(‘sensor.Gesamt_Leistung‘) | replace('W','') | float }}". (See /config/configuration.yaml, line 39).  
  - name: obergeschoss powergesamt
    unique_id: "obergeschoss powergesamt"
    state_topic: "tele/Zaehler1/Gesamt_Leistung"
    json_attributes_topic: "tele/Zaehler1/Gesamt_Leistung"
    value_template: "{{ states(‘sensor.Gesamt_Leistung‘) | replace('W','') | float }}"

Die hochgestellten Zeichen bei den Klammern werden bemängelt. Ich habe es in dem vorherigen Post bereits korrigiert :see_no_evil:

Wenn Ich die Klammern weg mache kommt auch ein Fehler

Konfiguration fehlerhaft!
 Error loading /config/configuration.yaml: while parsing a flow mapping
  in "/config/mqtt.yaml", line 67, column 22
expected ',' or '}', but got '<scalar>'
  in "/config/mqtt.yaml", line 67, column 73 

Ich vermute es liegt am

states('sensor.Gesamt_Leistung'

weil im Topic nur ein Wert mit Einheit ausgegeben wird ohne Definition.

Versuche das mal:

value_template: "{{ (states(‘sensor.Gesamt_Leistung‘) | replace('W','')) | float(0) }}"

Hatte ich schon probiert mit (0)
kein Erfolg …
muss doch möglich sein die Einheit raus zu nehmen. (W)
schwierige Geburt
:rofl: :crazy_face:

Konfiguration fehlerhaft!
 Invalid config for [mqtt]: invalid template (TemplateSyntaxError: unexpected char '‘' at 11) for dictionary value @ data['mqtt']['sensor'][5]['value_template']. Got "{{ (states(‘sensor.Gesamt_Leistung‘) | replace('W','')) | float(0) }}". (See /config/configuration.yaml, line 39).  

Wo steht das denn genau drin? Das darf kein mqtt Sensor sein, darum wird gemeckert.

es wird ja per MQTT ausgelesen .
normaler weise in der configuration.yaml habe es aber ausgelagert in mqtt.yaml

Du willst ihn aber verändern und das wird so nicht funktionieren. Das muss in einem template sensor gemacht werden.

template:
  - sensor:
      - name: obergeschoss powergesamt
        unique_id: "obergeschoss powergesamt"
        state: "{{ (states(‘sensor.Gesamt_Leistung‘) | replace('W','')) | float(0) }}"
1 „Gefällt mir“

ok , lese es erst in MQTT aus Wert z.b 600.00W (sensor.obergeschoss_gesamt_leistung) und dann habe ich das template in der configuration.yaml hinterlegt .

mqtt:
   sensor:
      - name: obergeschoss gesamt_leistung
        unique_id: "obergeschoss gesamt_leistung"
        state_topic: "tele/Zaehler1/Gesamt_Leistung"
template:
  - sensor:
      - name: obergeschoss powergesamt
        unique_id: "obergeschoss powergesamt"
        state: "{{ (states(‘sensor.obergeschoss_gesamt_leistung‘) | replace('00.W')) | float(0) }}"

leider keine Werte über den Template sensor. (unavailable)


value_template: "{{ (states('sensor.Gesamt_Leistung') | replace('.','')) | float(0) }}"

Warum schreibst Du denn in replace 00.W rein? Und durch was soll das dann ersetzt werden?

Die Nachkommastellen kannst Du über die GUI nachher einstellen.

@Linos
Habe ich geändert , aber keine Werte.

@frittes
Das war nur ein Test, steht nur W drin

:crayon:by HarryP: Zusammenführung Doppelpost.

So?

state: "{{ (states(‘sensor.Gesamt_Leistung‘) | replace('W','')) | float(0) }}"

Wert kommt unter MQTT an 600.00W (beispiel)

in der configuration.yaml template so eingetragen

template:
  - sensor:
    - name: obergeschoss_powergesamt
      unique_id: obergeschoss_powergesamt
      state: "{{ (states(‘sensor.obergeschoss_gesamt_leistung‘) | replace('W','')) | float(0) }}"

Immer noch nur unavailable.

Such mal nach sensor.template_