MUITO OBRIGADO JOÃO!!
Já conclui esta parte, já tenho os dados a cair no HA. Aguardo ansiosamente a Parte 3 para ter acesso aos controles do recuperador.
Boa! Olha que de vez em quando e apensa ao re-iniciar o HA nem sempre a autenticação funciona à primeira , ainda vou fazer uma automação para tratar disso mas por agora tenho um botão no Lovelace que faz o refresh dos tokesn sempre que é necessario. É simples crias um Button Card e codigo a inserir é este:
show_name: true
show_icon: true
type: button
tap_action:
action: call-service
service: multiscrape.trigger_solzaima_ha_integration
service_data: {}
target: {}
icon: mdi:stove
name: Refresh Solzaima Integration
Outra coisa no sensor temperatura selecionada tens 0º… issp não é normal: Vai a “Developer Tools” → States e escolhe o sensor ‘sensor.mycezajson’ que tem o dict de tudo que é recolhido do endpoint json.
A temperatura selecionada é o ambient_temperature e teras que deverias ter algo como isto a menos que o teu modelo não suporte. por outro lado caso tenhas outros sensores podem ser facilmente adicionados tipo por exemplo a temperatura da agua caso o equipamento disponha dessa funcionalidade.
ambient_temperature:
code: E001
value: '23'
label: TEMP
imageRelativePath: images/status/red.png
min: '5'
max: '40'
security: '1000'
Se quiseres partilha tudo o que estás a receber neste sensor (não te esqueças de anonimizar o mac address) que eu posso dar uma olhada para verificar.
Mais uma vez obrigado. Em relação à autenticação, achas que funciona fazer uma automação para executar o serviço passados 30 segundos de reiniciar o HA por exemplo?
Em relação ao que recebo do sensor, é isto:
stoves:
00:80:E1:B8:4C:77:
macaddress: *************
name: ********
lastSelected: true
online: true
localIP: 192.168.1.**
statuses:
status:
code: D009
value: '1'
label: Stove off
imageRelativePath: images/status/red.png
min: ''
max: ''
security: '1000'
model: INS 9
fumes_temperature:
code: D507
value: '18'
label: Fumes Temperature
imageRelativePath: images/status/red.png
min: ''
max: ''
security: '1000'
room_temperature:
code: D508
value: '19.5'
label: Room Temperature
imageRelativePath: images/status/red.png
min: ''
max: ''
security: '1000'
water_temperature: null
power:
code: F000
value: '0'
label: 'ON'
imageRelativePath: images/status/red.png
min: ''
max: ''
security: '1000'
mode:
code: F001
value: '0'
label: MODE
imageRelativePath: images/status/red.png
min: ''
max: ''
security: '1000'
fire_temperature:
code: E600
value: '1'
label: FIRE
imageRelativePath: images/status/red.png
min: '1'
max: '5'
security: '1000'
ambient_temperature: null
fan_one:
code: E601
value: '1'
label: FAN1
imageRelativePath: images/status/red.png
min: '1'
max: '6'
security: '1000'
fan_two: null
heating_temperature: null
builder: a99
users:
- username: ************
isOwner: true
friendly_name: mycezajson
Já agora, tenho 2 erros no meu log, o 1º tem a ver com o scrape, e acontece quando faço o refresh dos token:
This error originated from a custom integration.
Logger: custom_components.multiscrape.scraper
Source: custom_components/multiscrape/scraper.py:174
Integration: Multiscrape scraping component (documentation, issues)
First occurred: 9:52:57 AM (4 occurrences)
Last logged: 10:09:07 AM
solzaima ha integration # Exception in form-submit feature. Will continue trying to scrape target page
E outro erro que tem a ver com o “ambient temperature” que, pelo que percebi, não tenho essa informação pois no output tem ambient_temperature: null
Logger: homeassistant.helpers.template
Source: helpers/template.py:1822
First occurred: 9:46:31 AM (1 occurrences)
Last logged: 9:46:31 AM
Template variable warning: 'None' has no attribute 'value' when rendering '{% if is_state('sensor.mycezajson', 'SolzFM') %} {{ (state_attr('sensor.mycezajson','stoves'))['***************']['statuses']['ambient_temperature'].value }} {% else %} {{'None'}} {% endif %}'
“achas que funciona fazer uma automação para executar o serviço passados 30 segundos de reiniciar o HA por exemplo?”
Sim é uma das alternativas!, a outra é uma automation While Loop mas ainda não olhei para isso pois tambem não reinicio o HA tantas vezes como isso. Mas mais tarde vou provalmente fazer.
Sobre os erros, o 1º é devido à forma como o custom component funciona quando submite o form depois da 1ª vez devido à uma redirecçao na resposta http. Ignora pois apesar de informar essa excepção a resposta é gerada e o token de 12 horas é extraido correctamente. Acho que há issue aberto no Github para corrigir isso mas não nos afecta.
o 2º erro é por não teres o ambient temperature e resultado null porvoca esse erro. Por isso a minha sugestão é que modifiques para um sensor que o teu recuperador tem que é o fire_temperature, basta fazeres o seguinte:
stove_fire_temperature:
unique_id: 'stove_fire_temperature'
icon_template: mdi:fire
friendly_name: "Recuperador Calor Chama"
value_template: >
{% if is_state('sensor.mycezajson', 'Recuperador Sala') %}
{{ (state_attr('sensor.mycezajson','stoves'))['XX:XX:XX:XX:XX:XX']['statuses']['fire_temperature'].value }}
{% else %}
{{'None'}}
{% endif %}
Depois adaptamos para poderes teres o controlo deste sensor no HA.
Finalmente e assim que puderes edita os teus posts pois tens o MAC não anonimizado em alguns sitios.
Parte 3 Controlos do recuperador.
No “configuration.yaml” vamos inserir os comandos rest para poder controlar o receperador da mesma forma que o portal da myceza o faz:
(@Fernmac Atenção que o comando set _temperature não vai funcionar para ti e vamos ter que adaptar para um comando chamado “set_fire” . É necessario criar o payload respectivo que teremos que descobrir qual é)
rest_command:
myceza_stove_set_temperature:
url: https://myceza.it/api/stove/command/en/XX:XX:XX:XX:XX:XX
method: POST
headers:
Host: myceza.it
Connection: keep-alive
X-XSRF-TOKEN: >
{{ states('sensor.mycezaxsrftoken') | replace("%3D","=") }}
Authorization: >
Bearer {{ states('sensor.mycezadatatoken_actual_ks') }}
Content-Type: application/json;charset=UTF-8
Accept: application/json, */*
Origin: https://myceza.it
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://myceza.it/en/stove/XX:XX:XX:XX:XX:XX
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: >
XSRF-TOKEN={{ states('sensor.mycezaxsrftoken')}}; myceza_session={{ states('sensor.mycezasession') }}
payload: >
{"value":"{{states.input_number.stove_temp_sel.state | int}}","code":"E001"}
myceza_stove_set_mode:
url: https://myceza.it/api/stove/command/en/XX:XX:XX:XX:XX:XX
method: POST
headers:
Host: myceza.it
Connection: keep-alive
X-XSRF-TOKEN: >
{{ states('sensor.mycezaxsrftoken') | replace("%3D","=") }}
Authorization: >
Bearer {{ states('sensor.mycezadatatoken_actual_ks') }}
Content-Type: application/json;charset=UTF-8
Accept: application/json, */*
Origin: https://myceza.it
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://myceza.it/en/stove/XX:XX:XX:XX:XX:XX
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: >
XSRF-TOKEN={{ states('sensor.mycezaxsrftoken')}}; myceza_session={{ states('sensor.mycezasession') }}
payload: >
{"value":{{states.input_select.stove_mode_sel.state | replace("Manual",0) | replace ("Auto",1)}},"code":"F001"}
myceza_stove_set_fan_speed:
url: https://myceza.it/api/stove/command/en/XX:XX:XX:XX:XX:XX
method: POST
headers:
Host: myceza.it
Connection: keep-alive
X-XSRF-TOKEN: >
{{ states('sensor.mycezaxsrftoken') | replace("%3D","=") }}
Authorization: >
Bearer {{ states('sensor.mycezadatatoken_actual_ks') }}
Content-Type: application/json;charset=UTF-8
Accept: application/json, */*
Origin: https://myceza.it
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://myceza.it/en/stove/XX:XX:XX:XX:XX:XX
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: >
XSRF-TOKEN={{ states('sensor.mycezaxsrftoken')}}; myceza_session={{ states('sensor.mycezasession') }}
payload: >
{"value":{{states.input_select.stove_fan_speed_sel.state | replace ("Auto",6)}},"code":"E601"}
myceza_stove_power:
url: https://myceza.it/api/stove/command/en/XX:XX:XX:XX:XX:XX
method: POST
headers:
Host: myceza.it
Connection: keep-alive
X-XSRF-TOKEN: >
{{ states('sensor.mycezaxsrftoken') | replace("%3D","=") }}
Authorization: >
Bearer {{ states('sensor.mycezadatatoken_actual_ks') }}
Content-Type: application/json;charset=UTF-8
Accept: application/json, */*
Origin: https://myceza.it
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://myceza.it/en/stove/XX:XX:XX:XX:XX:XX
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: >
XSRF-TOKEN={{ states('sensor.mycezaxsrftoken')}}; myceza_session={{ states('sensor.mycezasession') }}
payload: >
{"value":{{powercommand}},"code":"F000"}
Caso nao tenham isto configuration.yaml é melhor inserir embora possa senão fica tudo mais confuso:
# Input Files
input_number: !include inputnumber.yaml
input_datetime: !include inputdatetime.yaml
input_boolean: !include inputboolean.yaml
input_select: !include inputselect.yaml
No “inputboolean.yaml” inserir para termos os settings carregados no Lovelace card:
# Recuperador Sala
stove_control_settings:
name: Recuperador Calor Definicoes
icon: mdi:stove
No “inputselect.yaml” inserir, aqui estamos a criar os inputs necessarios para os controles:
# Recuperador de calor
stove_mode_sel:
name: Recuperador Modo
options:
- Manual
- Auto
initial: Auto
icon: mdi:autorenew
stove_fan_speed_sel:
name: Recuperador Velocidade Ventoinha
options:
- 1
- 2
- 3
- 4
- 5
- Auto
initial: Auto
icon: mdi:fan-plus
No inputnumber.yaml inserir, caso recuperador suporte defenir a temperatura:
# Stove Temperature Selection
stove_temp_sel:
name: Temperatura Selecionada
icon: mdi:home-thermometer-outline
min: 5
max: 40
step: 1
initial: 22
mode: box
unit_of_measurement: graus
No “scripts.yaml” inserir, necessario para aplicar os inputs selecionados:
myceza_set_stove_definitions:
alias: myceza_set_stove_definitions
sequence:
- service: rest_command.myceza_stove_set_temperature
data: {}
- service: rest_command.myceza_stove_set_mode
data: {}
- service: rest_command.myceza_stove_set_fan_speed
data: {}
- delay:
seconds: 10
- service: homeassistant.update_entity
entity_id: sensor.mycezajson
mode: single
No “switch.yaml” inserir, este é o botão do On-Off ( dependendo do tempo de refrescamento do sensor rest - eu coloque 30 segundos vai haver aqui um delay e o bptão depois de ir a ON volta a Off e passado um pouco atualiza a On. Há um forma de eliminar isto com um sensor binarion pelo meio mas ainda não tive tempo para implementar) :
- platform: template
switches:
# Recuperador Calor Interruptor
stove_power:
friendly_name: "Interruptor Recuperador Calor"
icon_template: mdi:power-settings
value_template: "{{ is_state('sensor.stove_active_all_on_states','1')}}"
turn_on:
- service: rest_command.myceza_stove_power
data: >
{"powercommand": "1"}
- service: homeassistant.update_entity
target:
entity_id: sensor.mycezajson
turn_off:
- service: rest_command.myceza_stove_power
data: >
{"powercommand": "0"}
- service: homeassistant.update_entity
entity_id: sensor.mycezajson
No “automation.yaml” inserir o seguinte que atualizará os todos o sinputs sempre que o botão de Definições for usado Lovelace Card:
# Recuperador stove_mode_sel
- id: stove_load_myceza_settings
alias: stove_load_myceza_settings
trigger:
- entity_id: input_boolean.stove_control_settings
platform: state
condition:
action:
- data_template:
entity_id: input_number.stove_temp_sel
value: '{{ states.sensor.stove_ambient_temperature.state }}'
service: input_number.set_value
- data_template:
entity_id: input_select.stove_mode_sel
option: '{{ states.sensor.stove_mode_desc.state }}'
service: input_select.select_option
- data_template:
entity_id: input_select.stove_fan_speed_sel
option: '{{ states.sensor.stove_fan_one_desc.state }}'
service: input_select.select_option
E finalmente no “sensors.yaml” inserir enste sensor que os vai acumular as horas de funcionamento do recuperador:
- platform: history_stats
name: Recuperador Calor On Time
entity_id: sensor.stove_active_all_on_states
state: '1'
type: time
start: '{{ now().replace(hour=0, minute=0, second=0) }}'
end: '{{ now() }}'
Depois criar um manual card no Lovelace com o seguinte (é preciso antes adicionar o componente “stack-in-card” qu esta como requisito no 1º post):
type: custom:stack-in-card
mode: vertical
cards:
- type: entities
entities:
- entity: switch.stove_power
- entity: sensor.stove_status_desc
secondary_info: last-changed
- entity: sensor.stove_room_temperature
- entity: sensor.stove_fumes_temperature
- entity: sensor.stove_ambient_temperature
- entity: sensor.recuperador_calor_on_time
- entity: sensor.stove_fan_one_desc
- entity: sensor.stove_mode_desc
- type: entities
entities:
- entity: input_boolean.stove_control_settings
- type: conditional
conditions:
- entity: input_boolean.stove_control_settings
state: 'on'
card:
type: vertical-stack
cards:
- type: entities
entities:
- entity: input_number.stove_temp_sel
- entity: input_select.stove_mode_sel
- entity: input_select.stove_fan_speed_sel
- type: custom:button-card
layout: icon_name
name: Programar Recuperador de Calor
show_name: true
icon: mdi:backup-restore
label: Programar Recuperador de Calor
show_label: false
show_state: false
styles:
card:
- border-radius: 10px
- height: 60px
- background-color: '#268bd2'
name:
- color: white
- font-weight: bold
icon:
- color: white
tap_action:
action: call-service
service: script.myceza_set_stove_definitions
service_data: {}
target: {}
E disfrutar!
Tens os input selects em ficheiros separados ou no configuration.yaml?
Se estão em ficheiros separados tens que incluir isto no configuration.yaml, é assim que tenho o meu:
default_config:
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensors.yaml
switch: !include switch.yaml
# Input Files
input_number: !include inputnumber.yaml
input_datetime: !include inputdatetime.yaml
input_boolean: !include inputboolean.yaml
input_select: !include inputselect.yaml
E depois criar cada ficheiro tipo input na pasta /config pois nitidamente as entidades do tipo “input” não estão a ser criadas no HA.
De resto parece bem.
Ok João, apenas me falta esta parte. Não sei bem como fazer isto, se me orientares o caminho, posso investigar.
Muito obrigado.
Boas @Joao_Sousa Joao_Sousa
Desde já os meus parabéns por este Topico, eu tenho uma caldeira da Solzaima à pouco mais de um ano e sempre tive vontade, mas pouco conhecimento, de a colocar no HA. So agora é que vi o teu post e finalmente consegui integrar no HA.
Agora vêm as duvidas.
Mas tenho uma duvida na Parte 3 Controlos do recuperador.
Quando tu dizes para colocar os seguintes Input files existe um que não falas mais, que é o input_datetime.
Eu quando faço a verificação da configuração no HA dá este erro.
Isto porque o ficheiro não existe, basta cria o ficheiro mesmo que esteja vazio?
Quando vou fazer o Card, sigo os passo todos mas o meu card fica assim
O que estou a fazer mal?
Outra Coisa, Quando é que partilhas o lovelace card para o consumo das Pallets, dava mesmo jeito, eu ando a fazer numa folha de Excel o consumo. Eu tenho um deposito de 200kg e assim se tiver a informação toda no HA era 5*
Abraços
Olá Rafael, parece que os dados não estão a chegar, de certeza que não tens nenhum erro na extração dos tokens? Pelo menos os sensores devem dar informação logo à partida, se o scrap for bem feito…
Olá @Fernmac,
Ontem quando cheguei a casa voltei a fazer tudo de novo e já consegui por a funcionar.
A unica coisa que não me dá valor é o Recuperador Calor Ventoinha, mas de resto já está funcionar.
Agora a unica coisa que me aconteceu, foi perder a ligação, mas depois de clicar no botão do refresh ele voltou ao normal.
Não devia fazer automático?
Está aparecer este erro.
Chegaste a criar o sensor stove_fire_temperature?
Mais logo já te coloco as alterações que precisas de fazer.
Sim precisas de criar um ficheiro vazio “ inputdatetime.yaml ”na pasta /config que vai ser usado para o card que gere o consumo de pallets.
Sim faz automático mas por alguma razão não está a encontrar o rest_command myceza_session_logout.
Verifica por favor esta parte:
rest_command:
myceza_session_logout:
url: https://myceza.it/en/logout
method: POST
headers:
Host: myceza.it
Connection: keep-alive
Cache-Control: max-age=0
Content-Length: 47
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Origin: https://myceza.it
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://myceza.it/en/logout
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: >
XSRF-TOKEN={{ states('sensor.mycezaxsrftoken')}}; myceza_session={{ states('sensor.mycezasession') }}
payload: >
_token={{states.sensor.mycezacsrftoken.state}}
O sensor stove_fire_temperature realmente não coloquei, mas de resto pelo que vi assim muito por alto parece estar tudo bem, mas logo quando chegar a casa vou dar uma vista de olhos a sério.
Não te esqueças de mim João.
Tenho usado o interruptor para ligar/desligar, 5 estrelas. Contudo, para controlar a velocidade da ventoinha e o modo do recuperador, não funciona. No entanto se for aos Services e escrever “rest_command.myceza_stove_set_fan_speed” com o valor, funciona de imediato. Consegues me dizer alguma coisa?
Obrigado
Esta pergunta era para o Fernando….
No entanto ainda bem que colocaste. Se puderes partilhar o “sensor.mycezajson” através das developer tools podemos ver quais os sensores que estão disponíveis para o teu tipo de salamandra e adaptar. O meu é um recuperador modelo Wind mas sem dúvida que cada modelo irá ter os seus específicos sensores.
Fernando, a razão por que falha penso que é porque o teu aparelho não tem o “ambient_temperature”!
Basta comentares as seguintes 4 linhas no automations.yaml
# Recuperador stove_mode_sel
- id: stove_load_myceza_settings
alias: stove_load_myceza_settings
trigger:
- entity_id: input_boolean.stove_control_settings
platform: state
condition:
action:
# - data_template:
# entity_id: input_number.stove_temp_sel
# value: '{{ states.sensor.stove_ambient_temperature.state }}'
# service: input_number.set_value
- data_template:
entity_id: input_select.stove_mode_sel
option: '{{ states.sensor.stove_mode_desc.state }}'
service: input_select.select_option
- data_template:
entity_id: input_select.stove_fan_speed_sel
option: '{{ states.sensor.stove_fan_one_desc.state }}'
service: input_select.select_option
E volto a referir que no teu caso é preciso criar o sensor “fire_temperature” que já tinha colocado o código acima!
Depois é preciso criar um comando rest, e também um input number de 1 a 6 (vou tentar fazer isto logo) e modificar a automação que que está neste post para que aplique a “fire temperature”, “stove_mode” and “fan speed”. Achas que se percebe?
Obrigado por me aturar João.
Ok, então eu já tinha tentando acrescentar o “fire temperature” e o que fiz foi o seguinte:
1 – Tinhas (sensors.yaml):
stove_ambient_temperature:
unique_id: 'stove_ambient_temperature'
icon_template: mdi:home-thermometer-outline
friendly_name: "Recuperador Calor Temperatura Selecionada"
unit_of_measurement: "°C"
value_template: >
{% if is_state('sensor.mycezajson', 'Recuperador Sala') %}
{{ (state_attr('sensor.mycezajson','stoves'))['XX:XX:XX:XX:XX:XX']['statuses']['ambient_temperature'].value }}
{% else %}
{{'None'}}
{% endif %}
1 – Substitui por (sensors.yaml):
stove_fire_temperature:
unique_id: 'stove_fire_temperature'
icon_template: mdi:fire
friendly_name: "Recuperador Calor Chama"
value_template: >
{% if is_state('sensor.mycezajson', XXXXX) %}
{{ (state_attr('sensor.mycezajson','stoves'))[XXXXXXXXXXXXXX']['statuses']['fire_temperature'].value }}
{% else %}
{{'None'}}
{% endif %}
2 – Tinhas (configuration.yaml):
myceza_stove_set_temperature:
url: https://myceza.it/api/stove/command/en/XX:XX:XX:XX:XX:XX
method: POST
headers:
Host: myceza.it
Connection: keep-alive
X-XSRF-TOKEN: >
{{ states('sensor.mycezaxsrftoken') | replace("%3D","=") }}
Authorization: >
Bearer {{ states('sensor.mycezadatatoken_actual_ks') }}
Content-Type: application/json;charset=UTF-8
Accept: application/json, */*
Origin: https://myceza.it
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://myceza.it/en/stove/XX:XX:XX:XX:XX:XX
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: >
XSRF-TOKEN={{ states('sensor.mycezaxsrftoken')}}; myceza_session={{ states('sensor.mycezasession') }}
payload: >
{"value":"{{states.input_number.stove_temp_sel.state | int}}","code":"E001"}
2 – Substitui por (configuration.yaml) e aqui inventei porque não sei bem qual é o payload:
myceza_stove_set_fire_temperature:
url: https://myceza.it/api/stove/command/en/xxxxxxxxxxxxxxx
method: POST
headers:
Host: myceza.it
Connection: keep-alive
X-XSRF-TOKEN: >
{{ states('sensor.mycezaxsrftoken') | replace("%3D","=") }}
Authorization: >
Bearer {{ states('sensor.mycezadatatoken_actual_ks') }}
Content-Type: application/json;charset=UTF-8
Accept: application/json, */*
Origin: https://myceza.it
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://myceza.it/en/stove/xxxxxxxxxxxxxxx
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: >
XSRF-TOKEN={{ states('sensor.mycezaxsrftoken')}}; myceza_session={{ states('sensor.mycezasession') }}
payload: >
{"value":"{{states.input_number.stove_fire_temp_sel.state | replace ("Auto",6)}},"code":"E600"}
3 – Tinhas (inputselect.yaml):
# Recuperador de calor
stove_mode_sel:
name: Recuperador Modo
options:
- Manual
- Auto
initial: Auto
icon: mdi:autorenew
stove_fan_speed_sel:
name: Recuperador Velocidade Ventoinha
options:
- 1
- 2
- 3
- 4
- 5
- Auto
initial: Auto
icon: mdi:fan-plus
3 – Substitui por (inputselect.yaml) também inventei:
# Recuperador de calor
stove_mode_sel:
name: Recuperador Modo
options:
- Manual
- Auto
initial: Manual
icon: mdi:autorenew
stove_fan_speed_sel:
name: Recuperador Velocidade Ventoinha
options:
- 1
- 2
- 3
- 4
- 5
- 6
- Auto
initial: 1
icon: mdi:fan-plus
stove_fire_temperature_sel:
name: Recuperador Velocidade Chama
options:
- 1
- 2
- 3
- 4
- 5
- Auto
initial: 1
icon: mdi:fire
4 – Tinhas (inputnumber.yaml):
# Stove Temperature Selection
stove_temp_sel:
name: Temperatura Selecionada
icon: mdi:home-thermometer-outline
min: 5
max: 40
step: 1
initial: 22
mode: box
unit_of_measurement: graus
4 – Substitui por (inputnumber.yaml) também inventei:
# Stove Temperature Selection
stove_temp_sel:
name: Temperatura Selecionada
icon: mdi:home-thermometer-outline
min: 5
max: 40
step: 1
initial: 22
mode: box
unit_of_measurement: graus
5 – Tinhas (scripts.yaml):
myceza_set_stove_definitions:
alias: myceza_set_stove_definitions
sequence:
- service: rest_command.myceza_stove_set_temperature
data: {}
- service: rest_command.myceza_stove_set_mode
data: {}
- service: rest_command.myceza_stove_set_fan_speed
data: {}
- delay:
seconds: 10
- service: homeassistant.update_entity
entity_id: sensor.mycezajson
mode: single
5 – Substitui por (scripts.yaml) também inventei:
#Recuperador Sala
myceza_set_stove_definitions:
alias: myceza_set_stove_definitions
sequence:
- service: rest_command.myceza_stove_set_fire_temp
data: {}
- service: rest_command.myceza_stove_set_mode
data: {}
- service: rest_command.myceza_stove_set_fan_speed
data: {}
- delay:
seconds: 10
- service: homeassistant.update_entity
entity_id: sensor.mycezajson
mode: single
6 – Tinhas (automations.yaml):
- id: stove_load_myceza_settings
alias: stove_load_myceza_settings
trigger:
- entity_id: input_boolean.stove_control_settings
platform: state
condition:
action:
- data_template:
entity_id: input_number.stove_temp_sel
value: '{{ states.sensor.stove_ambient_temperature.state }}'
service: input_number.set_value
- data_template:
entity_id: input_select.stove_mode_sel
option: '{{ states.sensor.stove_mode_desc.state }}'
service: input_select.select_option
- data_template:
entity_id: input_select.stove_fan_speed_sel
option: '{{ states.sensor.stove_fan_one_desc.state }}'
service: input_select.select_option
6 – Substitui por (automations.yaml) também inventei:
# Recuperador stove_mode_sel
- id: stove_load_myceza_settings
alias: stove_load_myceza_settings
trigger:
- entity_id: input_boolean.stove_control_settings
platform: state
condition:
action:
- data_template:
entity_id: input_select.stove_fire_temp_sel
value: '{{ states.sensor.stove_fire_temperature.state }}'
service: input_select.select_option
- data_template:
entity_id: input_select.stove_mode_sel
option: '{{ states.sensor.stove_mode_desc.state }}'
service: input_select.select_option
- data_template:
entity_id: input_select.stove_fan_speed_sel
option: '{{ states.sensor.stove_fan_one_desc.state }}'
service: input_select.select_option