NEWS
ESPHome Syntax: Zwei Zustände vergleichen
-
Ich möchte bei einem binary_sensor eine Aktion ausführen wenn sich der Zustand echt geändert hat unr nicht nur aktualisiert worden ist: Wie lautet die richtige Syntax?
So geht es jedenfalls nicht
globals: - id: WolfgangLast type: boolean initial_value: 'false' binary_sensor: - platform: ble_presence mac_address: 7C:2F:80:C4:5D:DA name: "Wolfgang Person.Wolfgang.Zustand" id: WolfgangNow on_press: then: - if: condition: lambda: return (id(WolfgangLast).state != id(WolfgangNow).state); then: - text_sensor.template.publish: id: WolfgangId state: !lambda return "Wolfgang da " + id(MySntp).now().strftime("%d.%m %H:%M:%S"); - lambda: id(WolfgangLast) = true;
Fehlermeldung:
Compiling .pioenvs/esp32-ble/src/main.cpp.o /opt/iobroker/iobroker-data/esphome.0/esp32-ble.yaml: In lambda function: /opt/iobroker/iobroker-data/esphome.0/esp32-ble.yaml:123:37: error: request for member 'state' in 'WolfgangLast->esphome::globals::GlobalsComponent<bool>::value()', which is of non-class type 'bool' lambda: return (id(WolfgangLast).state != id(WolfgangNow).state); ^~~~~
-
@wolfgangfb sagte in ESPHome Syntax: Zwei Zustände vergleichen:
which is of non-class type 'bool
bin darin alles andere wie profi - aber sieh mal hier: https://community.home-assistant.io/t/esphome-global-as-boolean-in-lambda-not-compiling/182813
der vergleich wird anders geschrieben wie bei dir - stichwort "quotes"
-
Danke, es waren die Anführungszeichen.
Korrekt lautet die Abrage:on_press: then: - if: condition: lambda: "return (id(WolfgangLast) != id(WolfgangNow).state);" then: ...