Tag: Pushover

Een Fool‑Proof Pushover Meldingssysteem in Home Assistant

Een Fool‑Proof Pushover Meldingssysteem in Home Assistant

Stap‑voor‑stap handleiding + volledig script

In een slim huis draait alles om betrouwbaarheid. Een melding die te laat komt, of helemaal niet, kan het verschil maken tussen op tijd reageren of iets belangrijks missen. Daarom wilde ik mijn meldingssysteem in Home Assistant naar een hoger niveau tillen. Niet alleen een simpel berichtje, maar een volledig geautomatiseerde, foutloze Pushover‑melding — mét prioriteiten, camerabeelden, geluiden en een automatische titel.

Tijdens het bouwen ontdekte ik dat veel standaardoplossingen nét niet doen wat je wilt. File‑selectors werken niet altijd, prioriteit 2 vereist extra parameters, en bijlagen moeten aan strikte voorwaarden voldoen. Daarom besloot ik een eigen script te maken dat:

  • altijd werkt
  • geen fouten toestaat
  • automatisch slimme keuzes maakt
  • en flexibel genoeg is voor elke situatie

In deze handleiding laat ik stap voor stap zien hoe je dit script zelf kunt toevoegen aan Home Assistant. Aan het einde vind je het volledige script dat je direct kunt gebruiken. Hiermee heb je een professioneel, fool‑proof meldingssysteem dat je smart home een stuk slimmer maakt.


Waarom een eigen Pushover‑script?

De standaard Pushover‑integratie is prima, maar beperkt. Ik wilde:

  • een melding sturen met geluid naar keuze
  • prioriteit 2 gebruiken voor urgente meldingen
  • een afbeelding meesturen uit mijn cameramappen
  • een automatische titel wanneer ik er zelf geen invul
  • een systeem dat nooit faalt, ook niet als ik een veld vergeet

Stap 1 — Voorbereiding

1.1 Zorg dat Pushover werkt in Home Assistant

Je moet al een notify‑service hebben, zoals:

notify.entity_id

Zie Pushover - Home Assistant

Pas dit in het script aan als jouw service anders heet.

1.2 Maak een map voor je camerabeelden

Gebruik de map:

/media/cam_captures/

Plaats daar je afbeeldingen, bijvoorbeeld:

  • 1_tuin.jpg
  • 1_voordeur.jpg
  • 2_tuin.jpg
  • 2_voordeur.jpg
  • 3_tuin.jpg
  • 3_voordeur.jpg
  • 4_tuin.jpg
  • 4_voordeur.jpg
  • poort.jpg
  • tuin.jpg
  • voordeur.jpg

Stap 2 — Script toevoegen in Home Assistant

  1. Ga naar Instellingen → Automatiseringen & Scènes → Scripts
  2. Klik op “+ Script toevoegen”
  3. Kies “Script bewerken in YAML”
  4. Verwijder alles wat er staat
  5. Plak het volledige script hieronder
  6. Sla het script op

Stap 3 — Het volledige Pushover‑script

Dit script is fool‑proof:

  • Bericht mag niet leeg zijn
  • Prioriteit heeft standaard waarde 0
  • Titel wordt automatisch gegenereerd (dagnaam + datum + tijd)
  • Bijlagen komen uit een dropdown
  • Priority 2 werkt correct met retry/expire
pushover_melding:
  alias: "Pushover melding"
  fields:
    message:
      name: Bericht
      selector:
        text:
      default: ""
    title:
      name: Titel
      selector:
        text:
      default: ""
    sound:
      name: Geluid
      selector:
        select:
          options:
            - pushover
            - bike
            - bugle
            - cashregister
            - classical
            - cosmic
            - falling
            - gamelan
            - incoming
            - intermission
            - magic
            - mechanical
            - pianobar
            - siren
            - spacealarm
            - tugboat
            - alien
            - climb
            - persistent
            - echo
            - updown
            - vibrate
            - none
    priority:
      name: Prioriteit
      selector:
        select:
          options:
            - "-2"
            - "-1"
            - "0"
            - "1"
            - "2"
      default: "0"
    url:
      name: URL
      selector:
        text:
    url_title:
      name: URL titel
      selector:
        text:
    attachment_file:
      name: Bijlage kiezen (uit /media/cam_captures/)
      selector:
        select:
          options:
            - 1_tuin.jpg
            - 1_voordeur.jpg
            - 2_tuin.jpg
            - 2_voordeur.jpg
            - 3_tuin.jpg
            - 3_voordeur.jpg
            - 4_tuin.jpg
            - 4_voordeur.jpg
            - poort.jpg
            - tuin.jpg
            - voordeur.jpg

  sequence:
    - condition: template
      value_template: "{{ message is string and message | trim != '' }}"

    - choose:
        - conditions: >
            {{ priority | int == 2 and attachment_file is string and attachment_file != '' }}
          sequence:
            - service: notify.entity_id
              data:
                message: "{{ message }}"
                title: "{{ title | default(
                  (now().strftime('%A')
                    | replace('Monday','maandag')
                    | replace('Tuesday','dinsdag')
                    | replace('Wednesday','woensdag')
                    | replace('Thursday','donderdag')
                    | replace('Friday','vrijdag')
                    | replace('Saturday','zaterdag')
                    | replace('Sunday','zondag')
                  ) ~ ' ' ~ now().strftime('%d-%m-%Y %H:%M')
                ) }}"
                data:
                  sound: "{{ sound }}"
                  priority: 2
                  retry: 30
                  expire: 300
                  url: "{{ url }}"
                  url_title: "{{ url_title }}"
                  attachment: "/media/cam_captures/{{ attachment_file }}"

        - conditions: "{{ priority | int == 2 }}"
          sequence:
            - service: notify.home_assistant_peter
              data:
                message: "{{ message }}"
                title: "{{ title | default(
                  (now().strftime('%A')
                    | replace('Monday','maandag')
                    | replace('Tuesday','dinsdag')
                    | replace('Wednesday','woensdag')
                    | replace('Thursday','donderdag')
                    | replace('Friday','vrijdag')
                    | replace('Saturday','zaterdag')
                    | replace('Sunday','zondag')
                  ) ~ ' ' ~ now().strftime('%d-%m-%Y %H:%M')
                ) }}"
                data:
                  sound: "{{ sound }}"
                  priority: 2
                  retry: 30
                  expire: 300
                  url: "{{ url }}"
                  url_title: "{{ url_title }}"

        - conditions: >
            {{ priority | int != 2 and attachment_file is string and attachment_file != '' }}
          sequence:
            - service: notify.home_assistant_peter
              data:
                message: "{{ message }}"
                title: "{{ title | default(
                  (now().strftime('%A')
                    | replace('Monday','maandag')
                    | replace('Tuesday','dinsdag')
                    | replace('Wednesday','woensdag')
                    | replace('Thursday','donderdag')
                    | replace('Friday','vrijdag')
                    | replace('Saturday','zaterdag')
                    | replace('Sunday','zondag')
                  ) ~ ' ' ~ now().strftime('%d-%m-%Y %H:%M')
                ) }}"
                data:
                  sound: "{{ sound }}"
                  priority: "{{ priority | int }}"
                  url: "{{ url }}"
                  url_title: "{{ url_title }}"
                  attachment: "/media/cam_captures/{{ attachment_file }}"

      default:
        - service: notify.home_assistant_peter
          data:
            message: "{{ message }}"
            title: "{{ title | default(
              (now().strftime('%A')
                | replace('Monday','maandag')
                | replace('Tuesday','dinsdag')
                | replace('Wednesday','woensdag')
                | replace('Thursday','donderdag')
                | replace('Friday','vrijdag')
                | replace('Saturday','zaterdag')
                | replace('Sunday','zondag')
              ) ~ ' ' ~ now().strftime('%d-%m-%Y %H:%M')
            ) }}"
            data:
              sound: "{{ sound }}"
              priority: "{{ priority | int }}"
              url: "{{ url }}"
              url_title: "{{ url_title }}"

Stap 4 — Script testen

  1. Open het script in Home Assistant
  2. Vul een bericht in (verplicht)
  3. Laat de titel leeg om de automatische titel te testen, dus vinkje weg halen
  4. Kies een geluid
  5. Kies een prioriteit
  6. Selecteer eventueel een bijlage
  7. Klik op Uitvoeren

Je ontvangt nu een nette Pushover‑melding met:

  • jouw bericht
  • automatische titel (dagnaam + datum + tijd)
  • gekozen geluid
  • juiste prioriteit
  • optioneel een camerabeeld

Conclusie

Met dit script heb je een professioneel, foutloos en flexibel meldingssysteem dat perfect integreert met Home Assistant. Het is ontworpen om altijd te werken, ongeacht welke velden je wel of niet invult. Ideaal voor alarmmeldingen, camerabeelden, deurbelnotificaties en alle andere situaties waarin je snel en betrouwbaar geïnformeerd wilt worden.

In een automation kun je nu bij Add action, script.pushover_melding kiezen en invullen.

Loading