NL-alert voor Home Assistant

NL-alert voor Home Assistant

25 oktober 2022 1 Door Ivo

Na de P2000 in Home Assistant wil ik ook het NL-Alert in HA krijgen.

Helaas is crisis.nl gewijzigd en werkt het niet meer.


Bij een ramp in je omgeving ontvang je een NL Alert op je mobiel.

Ook is NL-Alert te zien op steeds meer digitale reclameborden en reisinformatieschermen in het openbaar vervoer.

Maar we willen de NL-Alerts ook zichtbaar hebben in Home Assistant!

Daarvoor zet je onderstaande in je configuration.yaml, pas de binary sensor aan voor jouw woonplaats.

sensor:
  - platform: scrape
    name: "NL-Alert Datum & Tijd"
    resource: https://crisis.nl/nl-alert/nl-alerts/
    select: "#content > div:nth-child(4) > a > h3"
  - platform: scrape
    name: "NL-Alert tekst"
    resource: https://crisis.nl/nl-alert/nl-alerts/
    select: "#content > div:nth-child(4)"
  - platform: scrape
    name: "NL-Alert"
    resource: https://crisis.nl/nl-alert/nl-alerts/
    select: "#content > div:nth-child(4) > a > p"
    value_template: '{{ "veilig" if "Situatie is weer veilig." in value else "niet veilig" }}'
  - platform: scrape
    name: "NL-Alert ingetrokken"
    resource: https://crisis.nl/nl-alert/nl-alerts/
    select: "#content > div:nth-child(4) > a > p"
    value_template: '{{ "ingetrokken" if "ingetrokken" in value else "Niet ingetrokken" }}'
    scan_interval: 600
template:
  - binary_sensor:
      - name: "NL-Alert in de regio"
        state: >-
          {% set woonplaats = 'Maastricht' %}
          {% set checklist = [ woonplaats | lower, 'testbericht' ] | join('|') %}
          {% set message = state_attr('sensor.nl_alert_state', 'melding') | lower %}
          {{
            message is search(checklist)
            and not message is search('ingetrokken|afgemeld|einde berichtgeving')
          }}
  • omdat NL alert niet altijd aangeeft dat de situatie veilig is maar bijvoorbeeld aangeeft “NL-Alert voor brand in Den Helder is ingetrokken.” Heb ik de 4de sensor gemaakt om te kijken of de melding is ingetrokken

Nu de Lovelace, maak een nieuwe kaart.

NL alert

type: conditional
conditions:
  - entity: sensor.nl_alert
    state_not: Veilig
card:
  type: markdown
  content: >-
    <ha-alert alert-type="error"><b>Afgegeven op: {{
    states('sensor.nl_alert_datum_tijd') }} </ha-alert></b><br>

       {{ states('sensor.nl_alert_tekst') }} 
  title: NL Alert

NL-alert lovelace

Ook kun je natuurlijk de sensors in een lijstje zetten.

 

HACS

NL-alert kaart

Wanneer je HACS hebt geïnstalleerd kun je Multiscrape installeren.
Na installeren herstarten, daarna kun je het volgende in

configuration.yaml

zetten:

multiscrape:
  - name: HA scraper
    resource: https://crisis.nl/nl-alert/nl-alerts/
    scan_interval: 3600
    sensor:
      - unique_id: nl_alert_state
        name: NL-Alert
        select: "#content > div:nth-child(4) > a > h3"
        value_template: '{{ "Actief" if  "ACTIEF" in value else "Geen actieve NL Alerts" }}'
        attributes:
          - name: Melding
            select: "#content > div:nth-child(4) > a > p"
          - name: Datum & Tijd
            select: "#content > div:nth-child(4) > a > h3"
            value_template: >
              {{ value.split('ACTIEF')[-1].strip() if 'ACTIEF' in value else value.strip() }}
          - name: Meer informatie
            select: "#content > div:nth-child(4) > a"
            attribute: href

  - name: NL
    button:
      unique_id: refresh_map
      name: Kaart laden
    resource_template: http://www.crisis.nl{{ state_attr('sensor.nl_alert_state', 'meer_informatie') }}
    scan_interval: 3600
    sensor:
      - unique_id: nl_alert_kaart
        name: Kaart
        value_template: "Kaart"
        attributes:
          - name: URL
            select: "#main > div.wrapper > div.googlemaps > img"
            attribute: src

De kaart update niet automatisch, daarvoor moet je een automation maken, onderstaande code daarvoor.

alias: Kaart ophalen bij NL Alert
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.nl_alert_state
condition: []
action:
  - service: button.press
    data: {}
    target:
      entity_id: button.refresh_map
mode: single
De code voor bovenstaande melding+kaart:

type: conditional
conditions:
  - entity: sensor.nl_alert_state
    state: Actief
card:
  type: markdown
  content: >-
    <ha-alert alert-type="error"><b>{{ state_attr('sensor.nl_alert_state',
    'datum_tijd') }}</b>

    {{ state_attr('sensor.nl_alert_state', 'melding') }}

    </ha-alert>

    ![]({{ state_attr('sensor.nl_alert_kaart', 'url') }})
    [Meer Informatie](https://www.crisis.nl{{ state_attr('sensor.nl_alert_state', 'meer_informatie') }})

 

WhatsApp melding

Heb je de nieuwe Whatsapp add-on?

De automation voor een NL-alert melding via WhatsApp. Pas de plaatsnamen aan voor jouw regio! En natuurlijk het nummer.

alias: "NL-Alert: bericht"
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.nl_alert_state
    to: "on"
condition:
  - condition: template
    value_template: >-
      {{ states('sensor.nl_alert_melding') is
      search('maastricht|meerssen|beek|umond|born|geleen|stein|sittard|amstenrade|schinnen|beekdalen|mijnstreek|testbericht|test|',ignorecase=True)  }}
action:
  - service: whatsapp.send_message
    data:
      clientId: default
      to: 31687654321@s.whatsapp.net #jouw nummer
      body:
        text: >-
          Er is een NL-Alert afgegeven in de regio, {{
          state_attr('sensor.nl_alert_state', 'melding') }}
mode: single
Inspiratie voor dit artikel vond ik deels op Tweakers.net, de eer gaat naar de gebruiker Toppe

NL-Alert