Compare commits

..

1 Commits

Author SHA1 Message Date
neri 5b173917be feat: report last scanned token to home assistant 2024-07-09 19:25:42 +02:00
1 changed files with 11 additions and 6 deletions

View File

@ -37,6 +37,7 @@ api:
key: $api_enckey key: $api_enckey
ota: ota:
- platform: esphome
password: $ota_password password: $ota_password
wifi: wifi:
@ -65,6 +66,7 @@ http_request:
useragent: esphome useragent: esphome
timeout: 2s timeout: 2s
id: http_request_data id: http_request_data
verify_ssl: false
globals: globals:
- id: my_token - id: my_token
@ -92,10 +94,10 @@ rc522_spi:
- text.set: - text.set:
id: ${name_of_board}_letzter_token id: ${name_of_board}_letzter_token
value: !lambda return id(my_tag); value: !lambda return id(my_tag);
- delay: 2s
# login to vault with role_id to fetch short lived token # login to vault with role_id to fetch short lived token
- http_request.post: - http_request.post:
url: https://vault.ctdo.de/v1/auth/approle/login url: https://vault.ctdo.de/v1/auth/approle/login
verify_ssl: false
headers: headers:
Content-Type: application/json Content-Type: application/json
json: json:
@ -105,25 +107,26 @@ rc522_spi:
# fetch token from response, store into my_token # fetch token from response, store into my_token
then: then:
- lambda: |- - lambda: |-
json::parse_json(id(http_request_data).get_string(), [](JsonObject root) { json::parse_json(body, [](JsonObject root) -> bool {
id(my_token) = (const char*) root["auth"]["client_token"]; id(my_token) = (const char*) root["auth"]["client_token"];
return true;
}); });
# use the token to get json of scanned tag from vault # use the token to get json of scanned tag from vault
- http_request.get: - http_request.get:
url: !lambda |- url: !lambda |-
return ((std::string) "https://vault.ctdo.de/v1/maschinenlock/" + id(my_tag)); return ((std::string) "https://vault.ctdo.de/v1/maschinenlock/" + id(my_tag));
verify_ssl: false
headers: headers:
X-Vault-Token: !lambda return id(my_token).c_str(); X-Vault-Token: !lambda return id(my_token).c_str();
on_response: on_response:
then: then:
- if: - if:
condition: condition:
lambda: 'return status_code == 200;' lambda: 'return response->status_code == 200;'
then: # when found, check if machine is allowed, turn on output or blink LED red then: # when found, check if machine is allowed, turn on output or blink LED red
- lambda: |- - lambda: |-
json::parse_json(id(http_request_data).get_string(), [](JsonObject root) { json::parse_json(body, [](JsonObject root) -> bool {
id(may_switch_output) = root["data"]["mlock-$name_of_board"]; id(may_switch_output) = root["data"]["mlock-$name_of_board"];
return true;
}); });
- if: - if:
condition: condition:
@ -226,6 +229,8 @@ text:
id: ${name_of_board}_letzte_entsperrung id: ${name_of_board}_letzte_entsperrung
optimistic: true optimistic: true
mode: text mode: text
text:
- platform: template - platform: template
name: "$name_of_board Zuletzt Gelesener Token" name: "$name_of_board Zuletzt Gelesener Token"
id: ${name_of_board}_letzter_token id: ${name_of_board}_letzter_token