ESPHOME - FLOAT to INT

OP (Firma: Frickelhauptquartier) #7478303

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

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)

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

Thomas G. schrieb:

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

Kannst Dir vermutlich (ungetestet) die globals-Definition sparen und statt dessen direkt ein int anlegen:

1
       int rpm = id(_speed);
2
       ...
3
       it.printf(55,22, id(font1), "%u rpm", rpm);

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.