diff --git a/firmware/vanalign/esp32_ble.yaml b/firmware/vanalign/esp32_ble.yaml index 8c1f2e7..2f43a2f 100644 --- a/firmware/vanalign/esp32_ble.yaml +++ b/firmware/vanalign/esp32_ble.yaml @@ -75,6 +75,15 @@ sensor: send_every: 1 - exponential_moving_average: alpha: 0.2 + on_value: + then: + - ble_server.characteristic.set_value: + id: pitch_ble + value: !lambda |- + std::vector v(sizeof(float)); + float val = x; + memcpy(v.data(), &val, sizeof(float)); + return v; - platform: template name: "Neigung Roll" @@ -95,6 +104,15 @@ sensor: send_every: 1 - exponential_moving_average: alpha: 0.2 + on_value: + then: + - ble_server.characteristic.set_value: + id: roll_ble + value: !lambda |- + std::vector v(sizeof(float)); + float val = x; + memcpy(v.data(), &val, sizeof(float)); + return v; globals: - id: pitch_offset @@ -115,24 +133,18 @@ esp32_ble_server: - uuid: 2a24b789-7aab-4535-af3e-ee76a35cc42d advertise: true characteristics: + # Ohne "value:" – der Wert wird bei jeder Messung gesetzt, siehe + # on_value beim Sensor. Ein getemplatetes "value:" führt ESPHome nur + # einmal aus, in setup(); die Charakteristik behielte dann für immer + # den Wert vom Start, und jede Abfrage lieferte dieselbe Zahl. - id: pitch_ble uuid: cad48e28-7fbe-41cf-bae9-d77a6c233424 description: "Pitch" read: true - value: !lambda |- - std::vector v(sizeof(float)); - float val = id(pitch).state; - memcpy(v.data(), &val, sizeof(float)); - return v; - id: roll_ble uuid: cad48e28-7fbe-41cf-bae9-d77a6c233425 description: "Roll" read: true - value: !lambda |- - std::vector v(sizeof(float)); - float val = id(roll).state; - memcpy(v.data(), &val, sizeof(float)); - return v; - id: calib_ble uuid: cad48e28-7fbe-41cf-bae9-d77a6c233427 description: "Kalibriere Neigung"