Ligação Solzaima

image

1 Curtiu

@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

@Joao_Sousa
image

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:

  1. Faz a atualização do multscrape para a ultima versão

  2. 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') }}
  1. Altera tambem isto ( o scan_interval estava 5 e passa a 10)
- platform: template
  scan_interval: 10
  sensors:
  1. 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.
image

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” :sweat_smile:

Podes tentar enviar para mim para ver se consigo responder :thinking:

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!


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade