Blueprints erweitern

Hallo,

ich habe eine Frage zu blueprints. Kann man diese erweitern? Versuche gerade einen blueprint zu Rauchmeldern, der sehr gut funktionert, aber nur eine notify.notify Meldung abgibt um eine Meldung zu pushover zu erweitern. Dort erhalte ich aber eine Fehlermeldung:

Message malformed: extra keys not allowed @ data[‘service’]

Dafür musst du die Datei der Blueprint selber bearbeiten: /homeassistant/blueprints/automation/…

Habe ich versucht. Dann läuft die Automation allerdings nicht mehr. So sieht sie aktuell aus:

blueprint:
  name: Alarm Rauchmelder
  description: Wenn einer der Rauchmelder Rauch erkennt, werden Push Nachrichten an
    die mobile Apps verschickt und eine Benachrichtigung erstellt.
  domain: automation
  input:
    sensor:
      name: Rauchmelder
      description: Liste der Rauchmeldersensoren
      selector:
        entity:
          multiple: true
          device_class:
          - smoke
    titel:
      name: Meldungstitel
      description: Titel für die Meldung beispielsweise !! Feueralarm !!
      default: ' !! Feueralarm !!'
      selector:
        text: {}
    text:
      name: Meldungstext
      description: Text (Inhalt) der Meldung. Der eingegebene Text wird an den Namen
        des Sensors, der ausgelöst hat, angehängt. [Name des Sensors]+[Meldungstext]
      default: ' hat Rauch erkannt!'
      selector:
        text: {}
  source_url: https://gist.github.com/user-x-adm/cf8c86cca7376595f47b5e9ff6c6beb9
trigger:
- platform: state
  entity_id: !input sensor
  to: 'on'
condition: []
variables:
  text_var: !input text
action:
- service: notify.notify
  data:
    title: !input titel
    message: '{{trigger.to_state.name}} {{text_var}}'
- service: notify.persistent_notification
  data:
    title: !input titel
    message: '{{trigger.to_state.name}} {{text_var}}'
mode: single
- service: notify.pushover
  data:
    message: >-
      {% for entity in trigger.to_state.attributes.entity_id %} {% if
      states(entity) == 'on' %} {{ state_attr(entity,'friendly_name') }} 
      meldet Rauchalarm!  {% endif %} {% endfor %}
    title: Rauch endeckt!
    data:
      sound: persistent
      priority: 2
      retry: 60
      expire: 3600
mode: single

Das ist z.b. doppelt

Danke. Das war mir eben auch aufgefallen. Läuft aber trotzdem nicht.

@thphilipp

Ok, ich habe den Blueprint ursprünglich geschrieben … :wink:

Du willst statt des notify Dienstes deinen pushover Dienst?
Der Dienst sagt mir nichts - hast du den selbst definiert?

Edit:
Ok - habe es gerade gefunden. Es ist das Codeschnipsel am Ende deiner Änderung?

Grüße aus Hessen

Läuft der Code denn in einer “normalen” Automation?
Läuft die Blueprint denn, wenn du es mit message: "This is the message" testest?

Und mach nach der Änderung mal einen Neustart.

Hallo und vielen Dank für Deine Hilfe. Eine Automation die funktioniert bei Wasseralarm mit pushover sieht so aus:

alias: Alarmmeldung bei Wasser in der Waschküche
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.wassersensor_waschkuche_wasserstand_erkannt
      - binary_sensor.wassersensor_waschkuche_feuchtigkeit_erkannt
    from: null
    to: "on"
condition: []
action:
  - service: notify.pushover
    data:
      message: Wassermelder Waschküche hat ausgelöst.
      title: Wasser auf den Boden!
      data:
        sound: persistent
        priority: 2
        retry: 60
        expire: 3600
mode: single

Jemand der so viel Ahnung hat und blueprints schreibt kennt nicht pushover? Cool. Schau Dir mal den Dienst an, der macht Alarme auf das Handy mit hoher Lautstärke und hoher Priorität. Auch bei Ton aus etc.

@thphilipp

Ich vermute das dein Ziel die Verwendung der Gruppe als Auslöser ist … was etwas unterschiedlich zu meinem Blueprint ist.
In dem Fall würde ich dir empfehlen eine komplette Automation zu erstellen, die funktioniert und dann daraus einen Blueprint zu machen. So gehe ich immer vor, wenn ich einen Blueprint erstelle. Aus anderen Blueprints hole ich mir dann Anregungen für die Erstellung der Eingabe/Auswahlfelder.

Man lernt immer noch etwas hinzu :wink: Bis jetzt habe ich den Dienst noch nicht genutzt. Aber guter Hinweis - schaue ich mir mal an.

:crayon:by HeikoBauer: Zusammenführung Doppelpost.

Also selbst mit einer einfachen Message TEST läuft das nicht.

Wenn du meinen Blueprint verwenden möchtest, musst du nur den Block mit notify - siehe oben durch deinen Block mit folgenden Anpassungen ersetzen.

- service: notify.pushover
  data:
    message: '{{trigger.to_state.name}} {{text_var}}'
    title: !input titel
    data:
      sound: persistent
      priority: 2
      retry: 60
      expire: 3600

Dann werden die definierten Texte aus dem Blueprint verwendet und du müsstest allerdings anstatt der Gruppe die Liste der Rauchmelder anlegen.

Aber wenn ich nun eine komplett neue Automation schreibe, wo alle Feuermelder als Auslöser enthalten sind und über die Action dann der pushover Dienst durchgeführt wird. Wie kann ich dann in der Nachricht den State, bzw. Namen des Feuermelders rausbekommen, der dann in der Nachricht aufgeführt wird? Bin da leider noch recht neu mit den states etc.

Wenn du eine neue Automation mit der Liste der auslösenden Melder (wie in deinem Beispiel mit den Wassermeldern) anlegst, sollte für den Message text mein Beispiel funktionieren {{trigger.to_state.name}}. Sie gibt den Namen des Sensors wieder, der ausgelöst hat. Das müsstest du als Message text verwenden. Leider geht das nicht so easy im visuellen Editor. Ich würde deshalb empfehlen, dass du erst einmal die Automation erstellst, mit ganz normalen Meldetext wie in deinem Beispiel und erst danach den normalen Text durch den Template text ersetzt.

Wenn du genau wissen möchtest wie die Meldung der “state” aussieht, müsstest du unter Entwicklungswerkzeuge “mit lauschen” :wink: Hast du aber wahrscheinlich noch nicht gemacht …?

Ne… leider noch nicht :joy:

Meine Automation mit allen Feuermeldern sieht nun so aus mit der Nachricht “TEST”

alias: Rauch
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.rauchmelder_esszimmer_oben_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_flur_oben_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_flur_keller_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_flur_unten_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_gastezimmer_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_kuche_unten_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_schlafzimmer_unten_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_schlafzimmer_oben_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_wohnzimmer_oben_rauchmelder_alarmstatus
    to: primary_alarm
  - platform: state
    entity_id:
      - sensor.rauchmelder_wohnzimmer_unten_rauchmelder_alarmstatus
    to: primary_alarm
condition: []
action:
  - service: notify.pushover
    data:
      title: Rauchmelder Alarm
      message: "TEST"
      data:
        sound: persistent
        priority: 2
        retry: 60
        expire: 3600
mode: single

Wie bekomme ich jetzt das mit dem state.to hin ??

Idee: Bitte ausprobieren, ob der pushover dienst überhaupt funktioniert. Das bitte unter Entwicklungswerkzeuge den Dienst mit ein paar Standardmeldungen manuell starten …

Der Dienst läuft. Ich habe einen Test mit den Wassermeldern mit normalen Text gemacht. Der geht einwandfrei. Nur eben das Einfügen von state.to oder dem auslösenden Melder klappt nicht.

Habe mal {{ trigger.to_state.attributes.friendly_name }} versucht. Klappt nicht.

die message mus um das template erweitert werden - z.b

message: ‘{{trigger.to_state.name}} hat ausgelöst!’

Die quotes am Anfang und ende nicht vergessen.

blöde Frage. Welcher ist dann der Name des triggers? Der Alias der Automation, hier Rauch?

Das kann nicht klappen da du nur einen Test des Dienstes gemacht hast - oder?
Das Template mit trigger.to kann nur ausgeführt werden, wenn tatsächlich einer deiner Rauchmelder auslöst oder du den Status in den Entwicklerwerkzeugen manuell selbst setzt (wobei ich letzteres auch noch nicht ausprobiert habe)

der Name ist der Name des Sensors, der ausgelöst hat. Das Template in den Klammern wird durch den Namen ersetzt. Die Ausgabe ist dann z.B. Rauchmelder Küche hat ausgelöst. So ist es jedenfalls bei mir.

Ich muss jetzt wirklich blöd fragen, da ich echt neu in dieser Materie bin. Also bleibt das Wort “name” so stehen wie in diesem Text?

        ‘{{trigger.to_state.name}} hat ausgelöst!’