Custom Component para integrar o Xiaomi Smart Space Heater(zhimi.heater.mc2 & zhimi.heater.zb1)

Boas malta,

Fiz umas alterações ao repositório para ser compatível com o HACS.
Espero que facilite a instalação :slight_smile:

2 Curtiram

Tas lhe a dar bem :wink: Parabéns

1 Curtiu

@Sergio_Sa, é possível adicionar controlos como o brilho do ecrã, ou o controlo dos BIPs?
A minha solução foi usar o custom component miio_raw e depois criar template switches que passem os siid: piid: value: mas não é muito elegante.

Se ajudar, os valores para o za2 são:

heater = {
            'power'          : [2, 2], // bool                        
            'humidity'       : [5, 7], // Relative Humidity: 0-100(Percentage)
            'temp'           : [5, 8], // Temperature: -40-125 0.1
            'target_temp'    : [2, 6], // Temperature: 16-28 celsius  
            'child_lock'     : [7, 1], // Physical Control Locked : bool
            'led_brightness' : [6, 1], // 0 (bright), 1 (dim), 2 (off)            
            'buzzer'         : [3, 1], // bool             
        }

Boas,

So não adicionei tudo porque não sabia bem fazer os controlos dos mesmos a partir do home assistant, as consultas seria fácil mas também faz com que demore mais tempo a actualizar os valores.
Queres experimentar contribuir para o meu repositório?

Senao posso fazer essas experiências durante o confinamento do próximo fim‑de‑semana :stuck_out_tongue:

Eu gostava de ajudar mas também não sei como fazer.
EDIT: aquecedor zhimi.za2
O que acabei por fazer do meu lado foi adicionar ao switches.yaml:

- platform: template
  switches:
    heater_buzzer:
      unique_id: heater_buzzer
      turn_on:
        service: xiaomi_miio_raw.sensor_raw_command
        data:
          entity_id: sensor.heater_raw
          method: set_properties
          params:
            - did: SwitchStatus
              siid: 3
              piid: 1
              value: true
      turn_off:
        service: xiaomi_miio_raw.sensor_raw_command
        data:
          entity_id: sensor.heater_raw
          method: set_properties
          params:
            - did: SwitchStatus
              siid: 3
              piid: 1
              value: false
    ############################################# 
    # led_brightness: [6, 1] value: 0 (bright), 1 (dim), 2 (off) 
    #############################################              
    heater_display:
      unique_id: heater_display
      turn_on:
        service: xiaomi_miio_raw.sensor_raw_command
        data:
          entity_id: sensor.heater_raw
          method: set_properties
          params:
            - did: SwitchStatus
              siid: 6
              piid: 1
              value: 1
      turn_off:
        service: xiaomi_miio_raw.sensor_raw_command
        data:
          entity_id: sensor.heater_raw
          method: set_properties
          params:
            - did: SwitchStatus
              siid: 6
              piid: 1
              value: 2

e ao sensors.yaml

- platform: xiaomi_miio_raw
  name: Heater_RAW
  host: !secret heater_host
  token: !secret heater_token
  default_properties: [] 
  default_properties_getter: get_properties   

No caso da intensidade do display, acho que podia usar um input_number pois o aquecedor admite 3 valores mas para o meu uso um simples on/off é suficiente.

Ficou por implementar o bloqueio para crianças que, no meu caso, também não incomoda.

1 Curtiu

Vou ver isso no fim de semana :slight_smile:
Sempre é mais um bom desafio.

Podes só editar o teu post acima indicando qual é a tua versão?
Tenho de ter cuidado, porque a minha não tem as features todas, já a humidade foi a “olhómetro” :smiley:

EDIT
Do que já estive a ver, não consigo integrar isso na climate entity. As unicas operações que o Home Assistant suporta são as abaixo, e queria evitar demasiada customização.

Vou ver se é possivel na mesma criar serviços à parte, mas implicaria criar entidades :frowning:

Pois, foi o que pensei, que pela climate não devia dar, a menos que se adaptasse o fan mode para controlar a brightness mas nem isso sei se dá.
Sendo assim acho que a solução martelada que uso, explicada acima, é para manter.

Olá Todos.
Obrigado pelo addon @Sergio_Sa.
Estou a tentar configura-lo mas sem sucesso. Mais alguém com o memso problema?

Um dos erros que recebo ->

Fail to setup Xiaomi heater
Traceback (most recent call last):
File “/usr/local/lib/python3.8/site-packages/miio/miioprotocol.py”, line 192, in send
data, addr = s.recvfrom(1024)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/local/lib/python3.8/site-packages/miio/miioprotocol.py”, line 192, in send
data, addr = s.recvfrom(1024)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/local/lib/python3.8/site-packages/miio/miioprotocol.py”, line 192, in send
data, addr = s.recvfrom(1024)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/local/lib/python3.8/site-packages/miio/miioprotocol.py”, line 192, in send
data, addr = s.recvfrom(1024)
socket.timeout: timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “/config/custom_components/miheater/climate.py”, line 68, in setup_platform
device_info = device.info()
File “/usr/local/lib/python3.8/site-packages/miio/device.py”, line 182, in info
return DeviceInfo(self.send(“miIO.info”))
File “/usr/local/lib/python3.8/site-packages/miio/device.py”, line 146, in send
return self._protocol.send(
File “/usr/local/lib/python3.8/site-packages/miio/miioprotocol.py”, line 232, in send
return self.send(
File “/usr/local/lib/python3.8/site-packages/miio/miioprotocol.py”, line 232, in send
return self.send(
File “/usr/local/lib/python3.8/site-packages/miio/miioprotocol.py”, line 232, in send
return self.send(
File “/usr/local/lib/python3.8/site-packages/miio/miioprotocol.py”, line 240, in send
raise DeviceException(“No response from the device”) from ex
miio.exceptions.DeviceException: No response from the device

-\---\-----

Obrigado

Olá Rui,

Podes-me dizer qual é o modelo do aquecedor que tens?

Olá Sérgio.
É o zhimi.heater.mc2.
Acredito que isto tenha a ver com o TOKEN pois depois de o gerar, configuro o aquecedor no MiHome e talvez nessa configuração é gerado um novo TOKEN. Achas que pode ser isso?.

Obr

Olá Rui,

Isso é certamente. Cada vez que configuras o aquecedor a um wifi novo, ele gera novo token.
Aconselho-te a usar o método abaixo para obter o token depois de teres o aquecedor ligado ao teu wifi:

Obrigado Sérgio,
Este método de obter o token funcionou perfeitamente e problema resolvido. Obrigado.

1 Curtiu

Boas, sou novo por aqui e a tentar concretizar um desejo antigo de ter uma casa inteligente. Comprei este aquecedor e em boa hora o fiz, já que foi o trigger para descobrir o Home Assistant. Porém não consigo ligá-lo á Mi Home, não consigo que se ligue ao Router!! Penso que isso tb será um problema para posteriormente conectar ao Home Assistant, já que não me vai ser possivel encontrar o TOKEN!

Boas!
Confere… sem isso, fica dificil…
Penso que o teu problema tenha a ver com a banda do Wifi. Estes dispositivos precisam de estar ligados na banda 2.4G e o telemovel também tem que estar na mesma.

Sugiro que desligues a banda 5G no teu router, e tentes emparelhar. Depois de correctamente emparelhado, já podes voltar a ligar a banda 5G.

Ok Sérgio, eu vou tentar. Mas eu já estava a utilizar a banda 2.4, de inicio até pensava que seria isso, mas mesmo assim não deu. Vou tentar desligar mesmo a 5G para ver, depois dou feedback.

Sim, tinhas razão o problema é do router da meo. Mesmo desligando a 5G continua a não ligar, tentei depois num NETGEAR bastante antigo que tenho do outro lado da casa a funcionar como repeater e já deu!!! O problema é que o aquecedor faz falta é deste lado da casa e não do outro… De qualquer das maneiras a tua ajuda valeu. Obrgado

Mas se tens isso, ha como resolver :smiley:

No router antigo, configura o Wifi com o mesmo nome e password do outro. Depois de configurares, podes voltar a por como estava (o router) e o aquecedor vai-se ligar na mesma na rede do da Meo :slight_smile: (mantendo o token).

Obrigado Sérgio, vou experimentar. De qualquer das maneiras ainda não tenho a Raspberry para instalar o HA, tenho uma mas é a 2 B já com bastante tempo e não é indicada para esse fim. Vou comprar uma 4 2G e dois sensores, para a semana já vai dar para começar a entrar no HA.

Não dá, depois de ficar ligado ao router mais antigo mesmo com o mesmo SSID e mesma password ele não liga a outra identica do router da meo! O MAQ number deve ficar registado no NETGEAR! Vou ter de comprar um router em condições para abranger a casa tda. Thanks any way

Muito obrigado pelo trabalho Sérgio! Será que é possível alterar a temperatura mínima do zhimi.heater.zb1 para os 16º que ele suporta? Obrigado!


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


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