Sleep as android alarm_alert_start

ich habe ein für mich unlösbares Problem mit der sleep as android app und finde den Fehler nicht.
Für Automatisierungen die ich bereits erstellt habe nutze ich webhook.
Wird z.B. sleep_tracking_started empfangen, geht das Licht aus und die Heizung wird auf einen Wert gesetzt.

Nun möchte ich, wenn alarm_alert_start, also wenn der Wecker klingelt, das Licht anmachen und die Heizung anpassen.
Genau dieser alert wird nicht erkannt…

Im Gegensatz dazu, wenn ich den Wecker ausmache, wird sleep_tracking_stopped empfangen. Dafür muss man aber erst mal aktiv werden.

Ich verstehe es nicht, warum alarm_alert_start nicht empfangen wird.
Habe es mit einem kleinem Webserver und einem Python script getestet.
Webhook-Daten erhalten:
{‘value1’: ‘1702798020000’, ‘event’: ‘alarm_alert_start’}
192.168.178.77 - - [17/Dec/2023 08:27:01] “POST /webhook HTTP/1.1” 200 -

Auch ein

curl -X POST -H “Content-Type: application/json” -d ‘{“event”: “alarm_alert_start”}’ http://192.168.178.22:8123/api/webhook/-TWVaoUXXXXXXXRYs14Ua

löst die Automation aus.

Keine Ahnung wo das Problem ist, vielleicht kann wer helfen?

Gruß und danke :slight_smile:

Scheint ein Bug in der App zu sein, ich hab SleepAsAndroid über mqtt und die hacs integration eingebunden. alarm_alert_start hat bei mir aber auch nicht funktioniert.

Als Alternative kannst du aber den Handy sensor “next alarm” in der companion app benutzen.
So mach ich es nun zumindest.

Danke für die Bestätigung, ich habe auch die app in Verdacht.
Dann gucke ich mir next alarm an, wenn es das Problem löst, reicht mir das.

sind noch weitere Konfigurationsschritte nötig?
sensor.pixel_7_next_alarm kommt an, aber die Automation wird nicht ausgelöst.

alias: Alarm basierend auf Pixel 7 Sensor
trigger:
  - platform: time
    at: sensor.pixel_7_next_alarm
condition:
  - condition: state
    entity_id: sensor.pixel_7_next_alarm
    state: 'on'
action:
  - service: scene.turn_on
    target:
      entity_id: scene.wohnzimmer_naturliches_licht
  - service: climate.set_temperature
    data:
      entity_id: climate.wohnzimmer
      temperature: "{{ states('input_number.wohlfuehltemperatur') }}"
mode: single

Las die Bedingung/condition weg, der Sensor wird nie den zustand on haben.

LG

1 „Gefällt mir“

Ich habe die condition raus genommen, leider tut sich immer noch nichts in der Automatisierung.
Mir ist die Funktionsweise auch nicht klar, ist für mich nur noch try and error und komme nicht weiter.
Habe vorhin einen Alarm auf 18:00 Uhr gesetzt, das sieht dann so aus bei mir. Für die Demo auf 19:00 Uhr gesetzt.

Jetzt sollte zur eingestellten Zeit die Aktion aus der Automation greifen.

Ich lasse es jetzt auf 19:00 Uhr stehen, ist ja gleich soweit.
image

Pixel 7 Next alarm wechselte zu 17. Dezember 2023 um 19:00

Ergebnis:
Wecker klingelt. Licht bleibt aus und die Heizung bleibt kalt
image

Schau mal in die Automation unter Abläufe ob überhaupt getriggert wurde. Wenn ja, was steht bei Trace timeline?

nein, wurde nichts getriggert.

edit:
sorry, hatte noch einen alten mißlungen Versuch in der config.
Geändert und jetzt mal schauen

noch ein edit:
es triggert nichts, habe den code von oben genommen, ohne die condition.

Versuch es mal mit Template als Trigger

platform: template
value_template: >-
  {{ as_timestamp(states(''sensor.pixel_7_next_alarm'')) - 30 <
  as_timestamp(now()) }}


Damit sollte 30 Sekunden vor dem Klingeln ausgelöst werden.

damit bekomme ich den Fehler:
Message malformed: invalid template (TemplateSyntaxError: expected token ‘,’, got ‘sensor’) for dictionary value @ data[‘value_template’]

Irgendwie will es nicht so wie ich es gerne hätte, erst der Bug in der app und stundenlanges testen ohne Erfolg. :frowning:

code sieht nun so aus (mit Fehler)

alias: Wecker basierend auf Pixel 7 Sensor
trigger:
  - platform: template
    value_template: >-
      {{ as_timestamp(states(''sensor.pixel_7_next_alarm'')) - 30 <
      as_timestamp(now()) }}
action:
  - service: scene.turn_on
    target:
      entity_id: scene.wohnzimmer_naturliches_licht
    data: {}
  - service: climate.set_temperature
    data:
      entity_id: climate.wohnzimmer
      temperature: "{{ states('input_number.wohlfuehltemperatur') | float }}"
mode: single

So wäre es richtig

alias: Wecker basierend auf Pixel 7 Sensor
trigger:
  - platform: template
    value_template: >-
      {{ as_timestamp(states('sensor.pixel_7_next_alarm')) - 30 <
      as_timestamp(now()) }}
action:
  - service: scene.turn_on
    target:
      entity_id: scene.wohnzimmer_naturliches_licht
    data: {}
  - service: climate.set_temperature
    data:
      entity_id: climate.wohnzimmer
      temperature: "{{ states('input_number.wohlfuehltemperatur') | float }}"
mode: single

Danke, habe es so eingefügt, getestet und leider triggert nichts.
Im Alarm ist wohl der Wurm drin.
Ändere jetzt auf sleep_tracking_stopped, also wenn ich den Wecker ausmache, das funktioniert jedenfalls.

reicht mir für heute…

edit:
neuer code, neuer Versuch, scheint bisher zu funktionieren.

alias: Wecker Test
description: ""
trigger:
  - platform: state
    entity_id: sensor.pixel_7_next_alarm
    to: unavailable
condition: []
action:
  - service: notify.mobile_app_pixel_7
    data:
      message: Wecker, Wecker, Wecker!
mode: single

Funktioniert aber nur Solang kein “nächster” Wecker gestellt ist.

Meine sieht so aus und funktioniert seit Monaten :person_shrugging:t2:

alias: Kaffee Wecker
description: ""
trigger:
  - platform: time
    at: sensor.oppo_next_alarm
condition:
  - condition: zone
    entity_id: person.michael
    zone: zone.home
  - condition: time
    before: "11:00:00"
    after: "05:00:00"
  - condition: state
    entity_id: select.713010388868021433_bsh_common_setting_powerstate
    state: BSH.Common.EnumType.PowerState.Standby
action:
  - delay:
      hours: 0
      minutes: 0
      seconds: 45
      milliseconds: 0
  - device_id: e00d3e41d789f67a62464c8fc6792556
    domain: select
    entity_id: 5f4eb6158bc15f8596270b5e5bbb8b88
    type: select_option
    option: BSH.Common.EnumType.PowerState.On
mode: single

Die für die Heizung funktioniert so.

alias: "Heizung an Comfort (Wecker) "
description: ""
trigger:
  - platform: template
    value_template: >-
      {{ as_timestamp(states('sensor.oppo_next_alarm')) - 3000 <
      as_timestamp(now()) }}
condition:
  - condition: or
    conditions:
      - condition: zone
        entity_id: person.michael
        zone: zone.home
action:
  - service: climate.set_temperature
    data:
      temperature: 22
    target:
      device_id:
        - 1d319684df9dd85ec928523f6d713e3e
        - 2658c03dfdd09b2c32bcf8fefb5105de
mode: single
1 „Gefällt mir“

Danke für das teilen deines codes, noch nicht ausprobiert, werde ich aber noch, sieht gut aus :slight_smile:

edit:
Ich markiere das mal als gelöst, aber nur halbherzig.
Es ist immer noch nicht klar, warum es alarm_alert_start nicht tut.
Wie eingangs gezeigt, sendet die app im webhook

{‘value1’: ‘1702798020000’, ‘event’: ‘alarm_alert_start’}
192.168.178.77 - - [17/Dec/2023 08:27:01] “POST /webhook HTTP/1.1” 200 -

Frage ist, warum kommt es in homeassistant nicht an. Auch wenn es jetzt eine funktionierende Lösung gibt, fertig bin ich damit noch nicht :wink:

Danke für eure Hilfe!

Obwohl es eigentlich schon peinlich ist, poste ich Neuigkeiten.
Der webhook funktioniert mit alarm_alert_start.
Eine Kleinigkeit hatte ich übersehen.
In der app muss man einstellen was für Ereignisse aktiviert werden sollen. alarm_alert_start war halt nicht aktiv.
Verwirrend war, das mein Testserver den event auch ohne die Aktivierung des Ereignisses empfangen hat. Sind wohl verschiedene Hüte.

1 „Gefällt mir“