feat: update ota config to new format

This commit is contained in:
neri 2024-06-29 00:38:18 +02:00
parent 2eff076d5b
commit 582d9c4714
1 changed files with 21 additions and 23 deletions

View File

@ -18,16 +18,16 @@ esphome:
on_boot:
- priority: 600
then:
- light.addressable_set: { id: status_led, red: 0%, green: 0%, blue: 100% }
- light.turn_on: { id: status_led, red: 0%, green: 0%, blue: 100% }
- priority: -100
then:
- if:
condition:
switch.is_on: mlock_${name_of_board}_switch
then:
- light.addressable_set: { id: status_led, red: 0%, green: 100%, blue: 0% }
- light.turn_on: { id: status_led, red: 0%, green: 100%, blue: 0% }
else:
- light.addressable_set: { id: status_led, red: 100%, green: 0%, blue: 0% }
- light.turn_on: { id: status_led, red: 100%, green: 0%, blue: 0% }
# Enable logging
logger:
@ -37,6 +37,7 @@ api:
key: $api_enckey
ota:
- platform: esphome
password: $ota_password
wifi:
@ -65,6 +66,7 @@ http_request:
useragent: esphome
timeout: 2s
id: http_request_data
verify_ssl: false
globals:
- id: my_token
@ -81,7 +83,7 @@ rc522_spi:
cs_pin: GPIO15
on_tag:
then:
- light.addressable_set:
- light.turn_on:
id: status_led
red: 100%
green: 100%
@ -97,13 +99,13 @@ rc522_spi:
json:
role_id: $vault_role_id
secret_id: $vault_secret_id
verify_ssl: false
on_response:
# fetch token from response, store into my_token
then:
- 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"];
return true;
});
# use the token to get json of scanned tag from vault
- http_request.get:
@ -111,16 +113,16 @@ rc522_spi:
return ((std::string) "https://vault.ctdo.de/v1/maschinenlock/" + id(my_tag));
headers:
X-Vault-Token: !lambda return id(my_token).c_str();
verify_ssl: false
on_response:
then:
- if:
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
- 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"];
return true;
});
- if:
condition:
@ -150,25 +152,21 @@ rc522_spi:
- repeat:
count: 3
then:
- light.addressable_set: { id: status_led, red: 100%, green: 0%, blue: 0% }
- delay: 0.1s
- light.addressable_set: { id: status_led, red: 0%, green: 0%, blue: 0% }
- delay: 0.1s
- light.turn_on: { id: status_led, red: 100%, green: 0%, blue: 0% }
- light.turn_on: { id: status_led, red: 0%, green: 0%, blue: 0% }
else: # vault returns 404 on missing/unknown Tag so blink LED
- repeat:
count: 3
then:
- light.addressable_set: { id: status_led, red: 100%, green: 0%, blue: 0% }
- delay: 0.5s
- light.addressable_set: { id: status_led, red: 0%, green: 0%, blue: 0% }
- delay: 0.5s
- light.turn_on: { id: status_led, red: 100%, green: 0%, blue: 0% }
- light.turn_on: { id: status_led, red: 0%, green: 0%, blue: 0% }
- if: # return LED to switch state before
condition:
switch.is_on: mlock_${name_of_board}_switch
then:
- light.addressable_set: { id: status_led, red: 0%, green: 100%, blue: 0% }
- light.turn_on: { id: status_led, red: 0%, green: 100%, blue: 0% }
else:
- light.addressable_set: { id: status_led, red: 100%, green: 0%, blue: 0% }
- light.turn_on: { id: status_led, red: 100%, green: 0%, blue: 0% }
# switch component for the output state
switch:
@ -188,7 +186,7 @@ binary_sensor:
id: ${name_of_board}gpio_input_ausschalter
on_press:
- switch.turn_off: mlock_${name_of_board}_switch
- light.addressable_set: { id: status_led, red: 100%, green: 0%, blue: 0% }
- light.turn_on: { id: status_led, red: 100%, green: 0%, blue: 0% }
# a template sensor for showing the current switch state (read only)
- platform: template
@ -205,7 +203,7 @@ button:
id: ${name_of_board}_btn_ausschalter
on_press:
- switch.turn_off: mlock_${name_of_board}_switch
- light.addressable_set: { id: status_led, red: 100%, green: 0%, blue: 0% }
- light.turn_on: { id: status_led, red: 100%, green: 0%, blue: 0% }
light:
- platform: neopixelbus