NL-alert voor Home Assistant
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.

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

Ook kun je natuurlijk de sensors in een lijstje zetten.
HACS

Wanneer je HACS hebt geïnstalleerd kun je Multiscrape installeren.
Na installeren herstarten, daarna kun je het volgende in
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
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>
 }})
[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

Nice 😉