Custom sensor in HomeAssistant
Het is gelukt een custom sensor met meerdere API aanroepen. Maar er is wel een rare hoepel waar doorheen gesprongen moet worden. Namelijk de homeassistant.Update_entity
aanroepen voor de verschillende sensoren die als tweede api call gebruikt worden.
Allereerst de sensor aangepast via de configurations.yaml gemakkelijk te bewerken via de VSCode Server integration
- platform: rest
name: Laadpalen Barendrecht external Reference
resource: "https://www.oplaadpalen.nl/wms?REQUEST=GetFeatureInfo&SERVICE=WMS&SRS=EPSG%3A4326&VERSION=1.1.1&INFO_FORMAT=application%2Fjson&BBOX=4.506036043167115%2C51.849193702528545%2C4.512140750885011%2C51.85193080189687&HEIGHT=826&WIDTH=1138&LAYERS=eco%3Arta_and_clusters&QUERY_LAYERS=eco%3Arta_and_clusters&X=569&Y=393"
method: GET
value_template: "{{ value_json.features[0].properties.external_reference }}"
scan_interval: 3600
- platform: rest
name: Laadpalen Barendrecht
resource_template: "https://oplaadpalen.nl/api/map/location/{{ states('sensor.laadpalen_barendrecht_external_reference') }}"
value_template: >
{% set statuses = value_json.data.evses | groupby('status') %}
{%- for status, items in statuses -%}
{{ status }}: {{ items | map(attribute='connectors') | map('length') | sum }}
{%- if not loop.last %}, {% endif %}
{%- endfor -%}
scan_interval: 360
maar om de tweede sensor te laten werken moeten we een homeassistant update entity laten uitvoeren. Daarom in de automations het volgende toegevoegd
- id: '???'
alias: Update Laadpalen
description: ''
triggers:
- trigger: homeassistant
event: start
conditions: []
actions:
- action: homeassistant.update_entity
metadata: {}
data:
entity_id:
- sensor.laadpalen_barendrecht
mode: single
X-CSRF-Token
Het X-CSRF-Token voor (SAP) API's is een vervelend ding. Indien een POST of PATCH gebruikt wordt, moet eerst met een GET het token opgehaald worden. Maar niet alleen het token maar ook de cookies die ontvangen worden na een GET moeten meegestuurd worden.
Bij het uitvoeren van de GET methode moet er een header toegevoegd worden die luidt: x-csrf-token en een waarde fetch
curl -X GET "https://api.sap.com/Contract" -H "x-csrf-token: fetch"
Een voorbeeld van de headers uit deze response zou kunnen zijn
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-csrf-token: abc12345xyz
Set-Cookie: SAP_SESSIONID=SessionIDValue; Path=/; Secure; HttpOnly, SAP_COOKIE=CookieValue; Path=/; Secure; HttpOnly
Voor de volgende POST moet nu het x-csrf-token in de header doorgegeven worden en de cookies. Belangrijk bij de cookies is om het path, secure en httponly weg te halen dus alleen de naam en de waarde. Deze gaan dan in de header COOKIE
en niet in SET-COOKIE
curl -X POST "https://api.sap.com/Contract" \
-H "Content-Type: application/json" \
-H "X-csrf-token: abc12345xyz" \
-H "Cookie: SAP_SESSIONID=SessionIDValue; SAP_COOKIE=CookieValue" \
-d '{
"key": "value",
"exampleField": "exampleValue"
}'
Postman
Postman doet al deze zaken rondom cookies helemaal automatisch. Tenzij je bij het GET request de Cookie Jar (geen grap) uit zet. Dan zal het ontvangen cookie niet gebruikt worden bij nieuwe aanroepen.
Nieuw bureau en monitor
Deze maand een flexispot zit sta bureau en een oled monitor toegevoegd aan de werk/game kamer. Het beeld is schitterend en het bureau stil en stabiel. Later volgt waarschijnlijk nog een uitgebreide review. Gamen met meer dan 120hz en dan die schitterende kleuren en zwart tinten van Oled is wel een hele vooruitgang.
Alleen de USB-C Power delivery wordt geadverteerd met 140W, maar dat heb ik voor mijn Dell Laptop nog niet voor elkaar gekregen. Dus dat is nog even op zoek naar de juiste instelling.
Red 5
Ik ben fan van [Red 5](Red 5 - Wikipedia..... Niet van alle variaties die genoemd zijn, maar wel van 2. De Star Wars en de F1 variant. Die laatste ben ik nu van Lego aan het maken. Ik kan het nog goed van vroeger herinneren, de blauw gele Williams F1 wagen met die rode 5 op de neus die wereldkampioen werd.
Nieuwe dingen leren
Komende tijd wil ik een hoop nieuwe dingen gaan leren. - WPF is niet nieuw, maar ik heb er nog niet veel mee gedaan en ik heb het nodig voor mijn werk. - Storage binnen proxmox/docker/containers. Met name ook hoe ga ik het synchroniseren met mijn PC voor bijvoorbeeld de foto's richting Immich of ga ik ook Obsidian hosten/gebruiken in een container. - .Net Aspire is ook een mooie nieuwe ontwikkeling, daar is mijn collega Maarten Kok over aan het bloggen dus dat ga ik ook volgen.