@Pedro_Pereira2 temos aqui bastantes coisas a fazer. Entretanto e enquanto o portal https://myceza.it/en/login continua instavel estou já fazer bastantes alterações na integração de forma a conseguir lidar com este comportamento.
No history seleciona os seguintes sensores, e nas ultimas horas verifica o estado dos todos os seguintes sensores. O objectivo é perceber se tebns tokens no estao unknown ou unavailabe.
Como podes ver tambem tenho desconexões mas passado un par de minutos volta a ligar
A seguir substitui estas três automações por este código ( ja coloquei o nome do teu equipamento que penso ser casa).
- id: myceza_session_reconnect
alias: myceza_session_reconnect
description: 'Restablece Ligacao a MyCeza'
trigger:
- platform: state
entity_id: sensor.mycezajson
from: 'Recuperador Sala Wind'
to:
- 'unknown'
- 'unavailable'
- platform: state
entity_id: sensor.mycezasession
to:
- 'unknown'
- 'unavailable'
action:
- delay:
seconds: 25
- if:
- "{{ states('sensor.mycezaxsrftoken') != 'unknown' and states('sensor.mycezaxsrftoken') != 'unavailable' and states('sensor.mycezasession') != 'unknown' and states('sensor.sensor.mycezasession') != 'unavailable' and states('sensor.mycezaxsrftoken') != 'unavailable' and states('sensor.mycezacsrftoken') != 'unknown' and states('sensor.sensor.mycezacsrftoken') != 'unavailable' }}"
then:
- service: rest_command.myceza_session_logout
data: {}
- delay:
seconds: 5
- repeat:
while:
- condition: template
value_template: >
{{ states('sensor.mycezajson') != 'Casa' }}
sequence:
- service: multiscrape.trigger_solzaima_ha_integration
data: {}
- delay:
seconds: 30
mode: single
- id: myceza_session_refresh
alias: myceza_session_refresh
description: 'Renova Token MyCeza'
trigger:
- platform: time_pattern
# You can also match on interval. This will match every 11 hours
hours: '/11'
minutes: 0
seconds: 0
action:
- if:
- "{{ states('sensor.mycezaxsrftoken') != 'unknown' and states('sensor.mycezaxsrftoken') != 'unavailable' and states('sensor.mycezasession') != 'unknown' and states('sensor.sensor.mycezasession') != 'unavailable' and states('sensor.mycezaxsrftoken') != 'unavailable' and states('sensor.mycezacsrftoken') != 'unknown' and states('sensor.sensor.mycezacsrftoken') != 'unavailable' }}"
then:
- service: rest_command.myceza_session_logout
data: {}
- delay:
seconds: 5
- repeat:
while:
- condition: template
value_template: >
{{ states('sensor.mycezajson') != 'Casa' }}
sequence:
- service: multiscrape.trigger_solzaima_ha_integration
data: {}
- delay:
seconds: 30
mode: single
- id: myceza_session_ha_restart_delay
alias: myceza_session_ha_restart_delay
description: 'Estabelece Ligacao a MyCeza depois de Iniciar HA'
initial_state: true
trigger:
- platform: homeassistant
event: start
action:
- delay:
seconds: 55
- if:
- "{{ states('sensor.mycezaxsrftoken') != 'unknown' and states('sensor.mycezaxsrftoken') != 'unavailable' and states('sensor.mycezasession') != 'unknown' and states('sensor.sensor.mycezasession') != 'unavailable' and states('sensor.mycezaxsrftoken') != 'unavailable' and states('sensor.mycezacsrftoken') != 'unknown' and states('sensor.sensor.mycezacsrftoken') != 'unavailable' }}"
then:
- service: rest_command.myceza_session_logout
data: {}
- delay:
seconds: 5
- repeat:
while:
- condition: template
value_template: >
{{ states('sensor.mycezajson') != 'Casa' }}
sequence:
- service: multiscrape.trigger_solzaima_ha_integration
data: {}
- delay:
seconds: 30
mode: single
Os erros que referes deverão desaparecer com estas modificações pois a integração já não tenta fazer logout se não tiver todos os tokens disponiveis. É boa pratica fazr o logout para não deixar sessões abertas mas tambem não faz mal se ficarem porque acabam por fechar quando os tokens expiram.
Assim que puderes envia feedback.
Posso tambem partilhar que estou a testar um novo sensor que retem os tokens anteriores, caso a conexão caia sem necessitar fazer nova autenticação. Assim que estiver a funcionar como pretendo partilho.
@Joao_Sousa este é o antes…vou aguardar para partilhar o depois.
Entretanto substitui as 3 automações.
entity_id: sensor.mycezajson
from: 'Recuperador Sala Wind'
Penso que este from tambem deve ser “Casa”, certo?
Certo! Esse passou-me
com a alteração das automações o problema do logout penso estar resolvido. desde ontem de manha que não houve erro. Obrigado!
Penso que o que sobra possa ser então o problema do site pois os 10min de dados, 5 min unknow/unavailable mantem-se.
Ok, uma parte já esta.
Agora vamos para o proximos:
-
Faz a atualização do multscrape para a ultima versão
-
Modifica os seguinte sensor (estamos a aumentar o polling para 1 minuto e alterar o timeout para 30 segundos:
- platform: rest
name: mycezajson
unique_id: mycezajson
resource_template: >
https://myceza.it/api/user/en
json_attributes:
- stoves
value_template: '{{ value_json.stoves["00:80:E1:BE:59:38"].name}}'
scan_interval: 60
timeout: 30
headers:
Host: myceza.it
Connection: keep-alive
Authorization: >
Bearer {{ states('sensor.mycezadatatoken_actual_ks') }}
Accept: application/json, */*
X-XSRF-TOKEN: >
{{ states('sensor.mycezaxsrftoken') | replace("%3D","=") }}
Referer: https://myceza.it/en
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: >
XSRF-TOKEN={{ states('sensor.mycezaxsrftoken')}}; myceza_session={{ states('sensor.mycezasession') }}
- Altera tambem isto ( o scan_interval estava 5 e passa a 10)
- platform: template
scan_interval: 10
sensors:
- E altera esta automação:
- id: myceza_session_reconnect
alias: myceza_session_reconnect
description: 'Restablece Ligacao a MyCeza'
trigger:
- platform: state
entity_id: sensor.mycezajson
from: 'Casa'
to:
- 'unknown'
- 'unavailable'
for:
minutes: 10
- platform: state
entity_id: sensor.mycezasession
to:
- 'unknown'
- 'unavailable'
action:
- if:
- "{{ states('sensor.mycezaxsrftoken') != 'unknown' and states('sensor.mycezaxsrftoken') != 'unavailable' and states('sensor.mycezasession') != 'unknown' and states('sensor.sensor.mycezasession') != 'unavailable' and states('sensor.mycezaxsrftoken') != 'unavailable' and states('sensor.mycezacsrftoken') != 'unknown' and states('sensor.sensor.mycezacsrftoken') != 'unavailable' }}"
then:
- service: rest_command.myceza_session_logout
data: {}
- delay:
seconds: 5
- repeat:
while:
- condition: template
value_template: >
{{ states('sensor.mycezajson') != 'Casa' }}
sequence:
- service: multiscrape.trigger_solzaima_ha_integration
data: {}
- delay:
seconds: 30
mode: single
Há mais coisas para alterarmos mas vamos por fases.
@Joao_Sousa alterações realizadas.
durante 2h trabalhou (ainda que com a mesma rotina 10/5) mas depois passou a Unknown.
Estranho não teres um valor no mycezaxsfrtoken…. Podes ver se tem um estado defenido?
Isso do 10 / 5 é algo do teu lado pois não há nada na configuração que faça isso. Manda por msg (não aqui) toda a tua configuração pois há algo aqui que só acontece contigo pois é um padrão demasiado regular.
Entretanto reiniciei o HA e voltou a ter dados.
Entretanto não estou a conseguir enviar por msg “cannot send to this user”
Podes tentar enviar para mim para ver se consigo responder
Olá, sou francês e meu português não é muito bom, uso o Google Trad!
Fiz o passo 1-Instalação do Multiscrape na versão 7.0.0
Inserção do código em configuration.yaml.
Tenho os arquivos em /multiscrape/solzaima_ha_integration.
Agora clique no arquivo sensor.yaml
Mas é impossível encontrar as entradas do sensor, porém recupero mycezaxsrftoken e mycezasession
Pode me ajudar? Obrigado e boas festas!