
NL Alert / Crisis.nl Home Assistant Intergratie
Hij werkt op basis van de multiscrape intergratie./f/image/GhxMDmPAyrgG0zfXADhqD4ky.png?f=fotoalbum_large)

Er zit nog één probleem in: Je moet handmatig kaart ophalen.
Code voor de multiscrape sensor
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| multiscrape: - name: HA scraper resource: https://crisis.nl/nl-alert/nl-alerts/ scan_interval: 60 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: Systeem test select: "#content > div:nth-child(4) > a > p" value_template: > '{{ "True" if "TESTBERICHT" in value else "False" }}' - 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 |
Simpele automatisering waarmee de kaart wordt opgehaald als er een nieuwe NL-Alert is
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| alias: Kaart ophalen bij NL Alert description: "" trigger: - platform: state entity_id: - sensor.nl_alert_state - platform: homeassistant event: start condition: [] action: - service: button.press data: {} target: entity_id: button.refresh_map mode: single |
Voor het ophalen van de status:
Daarna kan je gewoon een automatisering maken op basis van de status:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| description: "" trigger: - platform: state entity_id: - binary_sensor.nl_alert_in_de_regio to: "on" condition: [] action: - service: switch.turn_off data: {} target: entity_id: switch.athom_smart_plug_v2 mode: single |
Simpele melding + kaart:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| 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') }}) |
Sensor die aan/uit gaat afhankelijk of er een NL Alert in jou regio is:
YAML:
1
2
3
4
5
6
7
8
9
10
| - binary_sensor: - name: "NL-Alert in de regio" state: >- {% set woonplaats = 'Amsterdam' %} {% 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') }} |
Knoppen onder de melding om zelf een automatisering aan te zetten:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| type: conditional conditions: - entity: sensor.nl_alert_state state: Actief card: type: vertical-stack cards: - 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') }}) - type: horizontal-stack cards: - show_name: false show_icon: true type: button tap_action: action: toggle entity: automation.automation_42 icon: mdi:air-purifier icon_height: 25px - show_name: false show_icon: true type: button tap_action: action: toggle entity: automation.automation_42 icon: mdi:air-purifier-off icon_height: 25px |
Als je wil weten of het een 'echte' melding is dan kan je onderstaande als conditie toevoegen:
code:
1
| {{ state_attr('sensor.nl_alert_state', 'systeem_test') }} |
To-Do:
In de afbeelding URL wordt een string mee gegeven, via onderstaande uitleg van @CodeCaster (dank!) kan je de GPS coordinaten binnen halen, zou tof zijn als hier mensen zijn met kennis van Python een mooie tool kunnen maken om de GPS locaties hier uit te trekken en deze naar Home Assistant te pushen.Ook is het daarna nog zoeken of, en hoe, we die op een kaart kunnen krijgen om te kijken of je ingestelde locatie daarin valt.
De "enc"-parameter is in het encoded polyline-algoritme. Dus:
- Pak de enc-parameter van de querystring
- UrlDecode deze
- Decodeer de Polyline
/f/image/KOACqs7AKJWqQtUKsHPtJLsl.png?f=fotoalbum_large)
De URL die je toont, heeft de volgende structuur:
code:
1
| https://maps.googleapis.com/maps/api/staticmap?language=X&size=Y&scale=Z&path=PATH&key=K&signature=S |
Dus dan pak je uit die querystring de path-parameter, en daarin staat (UrlEncoded):
code:
1
| fillcolor:0xFF000033%7Ccolor:0xFFFFFF00%7Cenc:sbn%7DHg%7BnZjMnAjMrDbLrIzJjMrIzOvGjRrDnUjCbVf@jWg@~WkCnUsDnUwGjRsInP%7BJvLcLrIkMfEkMz@_N%7B@wLgEwLsI%7BJwL_IoPwGkRgEoUwBoUg@_Xf@kWvBcVfEoUvGkR~H%7BOzJkMvLsIvLsD~MoA |
Dat is een omschrijving van wat er op de kaart moet worden getekend (het "path"). Deze decodeer je (UrlDecode), en daarna splitsen op "|" (was %7C encoded):
code:
1
2
3
| fillcolor:0xFF000033 color:0xFFFFFF00 enc:sbn}Hg{nZjMnAjMrDbLrIzJjMrIzOvGjRrDnUjCbVf@jWg@~WkCnUsDnUwGjRsInP{JvLcLrIkMfEkMz@_N{@wLgEwLsI{JwL_IoPwGkRgEoUwBoUg@_Xf@kWvBcVfEoUvGkR~H{OzJkMvLsIvLsD~MoA |
En wat volgt na "enc:" voer je aan een Polyline-decoder. Hoe je dat laatste in Python doet, weet ik niet, maar daar bestaan vast libraries voor!
Edit: https://pypi.org/project/polyline/
NL-Alert, NLalert, NL, Alert, crisis, crisis.nl
[ Voor 122% gewijzigd door Toppe op 05-12-2022 13:45 ]
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!