ESPHOME - FLOAT to INT

OP (Firma: Frickelhauptquartier) #7478303
Lesenswert?

Moin Leute, wie kann ich anstellen, das ich das Ergebnis von "sensor:

  • platform: pulse_counter" das als Ergebnis einen Wertebereich von 0 - 6000 hat (als FLOAT) in einen Wertebereich von 0 - 100 (als INT) bekomme? Plattform ist wie geschrieben ESPHOME
#7478624
Lesenswert?

Christian M. schrieb:

Rainer W. schrieb:

Wieso soll das float sein?

Weil die Variable so deklariert wurde vielleicht!

Dann kann man das auch bei den Konstanten deulich hinschreiben. Das hat etwas mit Stil zu tun.

Rainer W. schrieb:

Dann müsste es 0.0 - 6000.0 heißen.

Nein!

lambda¶ ... filters:

  • lambda: return x * (9.0/5.0) + 32.0; Make sure to add .0 to all values in the lambda, otherwise divisions of integers will result in integers (not floating point values).
OP (Firma: Frickelhauptquartier) #7479067
Lesenswert?

Das brachte dann die Lösung: globals:

  • id: rpm type: int restore_value: no initial_value: '1'

sensor:

  • platform: pulse_counter pin: number: D8 unit_of_measurement: 'RPM' accuracy_decimals: 0 id: _speed name: FanSpeed update_interval: 1s filters:
    • lambda: return (x / 2);

fan:

  • platform: speed id: fanid # .state .speed name: fan output: fan_speed

lambda: |- id(rpm) = id(_speed).state; ... it.printf(55,22, id(font1), "%u rpm", id(rpm)); // rpm

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren