Homewizard climate local MQTT control!

Also the configuration.yaml code needs to be change to support the new mqtt: format. maybe its that. can anyone help with the formatting?

Your manually configured MQTT climate(s) needs attention

This stops working in version 2022.12.0. Please address before upgrading.

Manually configured MQTT climate(s) found under platform key climate.

Please move the configuration to the mqtt integration key and restart Home Assistant to fix this issue. See the documentation, for more information.

mqtt:
  climate:
    - name: Badkamer
      fan_modes:
        - "high"
        - "low"
      modes: ["off", "heat"]
      mode_command_topic: "appliance/heater/3c39e7217cc0/state/power_on/set" 
      mode_state_topic: "appliance/heater/3c39e7217cc0/state/power_on"
      mode_state_template: >-
        {% if value == "false" %}
          off
        {% elif value == "true" %}
          heat
        {% endif %}
      mode_command_template: >-
        {% if value == "off" %}
          false
        {% elif value == "heat" %}
          true
        {% endif %}
      min_temp: 10   
      max_temp: 35   
      current_temperature_topic: "appliance/heater/3c39e7217cc0/state/current_temperature"
      temperature_command_topic: "appliance/heater/3c39e7217cc0/state/target_temperature/set"
      temperature_state_topic: "appliance/heater/3c39e7217cc0/state/target_temperature"
      fan_mode_command_topic: "appliance/heater/3c39e7217cc0/state/mode/set"
      fan_mode_state_topic: "appliance/heater/3c39e7217cc0/state/mode"
      precision: 1.0

switch:
  - name: "Badkamer vuurtje"
    state_topic: "appliance/heater/3c39e7217cc0/state/power_on"
    command_topic: "appliance/heater/3c39e7217cc0/state/power_on/set"
    payload_on: "true"
    payload_off: "false"
    state_on: "true"
    state_off: "false"

  - name: "Badkamer vuurtje lock"
    state_topic: "appliance/heater/3c39e7217cc0/state/lock"
    command_topic: "appliance/heater/3c39e7217cc0/state/lock/set"
    payload_on: "true"
    payload_off: "false"
    state_on: "true"
    state_off: "false"

  - name: "Badkamer vuurtje mode"
    state_topic: "appliance/heater/3c39e7217cc0/state/mode"
    command_topic: "appliance/heater/3c39e7217cc0/state/mode/set"
    payload_on: "high"
    payload_off: "low"
    state_on: "high"
    state_off: "low"

sensor:
  - platform: mqtt
    state_topic: "homewiz/heater/3c39e7217cc0/state/current_temperature"
    name: Temperatuur Vuurtje badkamer

  - platform: mqtt
    state_topic: "homewiz/heater/3c39e7217cc0/state/target_temperature"
    name: Target temp Vuurtje badkamer

Thanks mate. When i import that in and check the config it throws these errors

nvalid config for [switch]: required key not provided @ data[‘platform’]. Got None. (See /config/configuration.yaml, line 46).
Invalid config for [switch]: required key not provided @ data[‘platform’]. Got None. (See /config/configuration.yaml, line 46).
Invalid config for [switch]: required key not provided @ data[‘platform’]. Got None. (See /config/configuration.yaml, line 46)

Try again, ident was wrong

Hi mate. Same again.

Invalid config for [switch]: required key not provided @ data[‘platform’]. Got None. (See /config/configuration.yaml, line 46).
Invalid config for [switch]: required key not provided @ data[‘platform’]. Got None. (See /config/configuration.yaml, line 46).
Invalid config for [switch]: required key not provided @ data[‘platform’]. Got None. (See /config/configuration.yaml, line 46).

I can get the configuration checks to pass except for when this last section is in the mix

sensor:

  • platform: mqtt
    state_topic: “homewiz/heater/3c39e7217cc0/state/current_temperature”
    name: Temperatuur Vuurtje badkamer

  • platform: mqtt
    state_topic: “homewiz/heater/3c39e7217cc0/state/target_temperature”
    name: Target temp Vuurtje badkamer

This is what i have so far. The configuration check now passes. Not sure if its correct but it passes and it restarts.

However i dont think something somewhere is connected yet.

mqtt:
  climate:
    - name: Badkamer
      fan_modes:
        - "high"
        - "low"
      modes: ["off", "heat"]
      mode_command_topic: "appliance/heater/3c39e7217cc0/state/power_on/set" 
      mode_state_topic: "appliance/heater/3c39e7217cc0/state/power_on"
      mode_state_template: >-
        {% if value == "false" %}
          off
        {% elif value == "true" %}
          heat
        {% endif %}
      mode_command_template: >-
        {% if value == "off" %}
          false
        {% elif value == "heat" %}
          true
        {% endif %}
      min_temp: 10   
      max_temp: 35   
      current_temperature_topic: "appliance/heater/3c39e7217cc0/state/current_temperature"
      temperature_command_topic: "appliance/heater/3c39e7217cc0/state/target_temperature/set"
      temperature_state_topic: "appliance/heater/3c39e7217cc0/state/target_temperature"
      fan_mode_command_topic: "appliance/heater/3c39e7217cc0/state/mode/set"
      fan_mode_state_topic: "appliance/heater/3c39e7217cc0/state/mode"
      precision: 1.0
      
  switch:
  - name: "Badkamer vuurtje"
    state_topic: "appliance/heater/3c39e7217cc0/state/power_on"
    command_topic: "appliance/heater/3c39e7217cc0/state/power_on/set"
    payload_on: "true"
    payload_off: "false"
    state_on: "true"
    state_off: "false"

  - name: "Badkamer vuurtje lock"
    state_topic: "appliance/heater/3c39e7217cc0/state/lock"
    command_topic: "appliance/heater/3c39e7217cc0/state/lock/set"
    payload_on: "true"
    payload_off: "false"
    state_on: "true"
    state_off: "false"

  - name: "Badkamer vuurtje mode"
    state_topic: "appliance/heater/3c39e7217cc0/state/mode"
    command_topic: "appliance/heater/3c39e7217cc0/state/mode/set"
    payload_on: "high"
    payload_off: "low"
    state_on: "high"
    state_off: "low"

  sensor:
  - name: Temperatuur Vuurtje badkamer
    state_topic: "homewiz/heater/3c39e7217cc0/state/current_temperature"
  - name: Target temp Vuurtje badkamer
    state_topic: "homewiz/heater/3c39e7217cc0/state/target_temperature"

You need more than the yaml config…did you read the first post?

  • Do you have the right mqtt server?
  • The certs?
  • The DNS redirect?
  • checked with mqtt explorer if the heater makes a connectiob with the mqtt server?
  • did you find the correct heater address in the MQTT topic? Mine is 3c39e7217cc0, but it’s unique.

It’s a lot more than just copy and past some yml file.

  • Do you have the right mqtt server? - Yes I only have one.
  • The certs? - I have created the certs
  • The DNS redirect? - I am looking at this now. I thought it was in place but not so sure.
  • checked with mqtt explorer if the heater makes a connectiob with the mqtt server? - I have tried with MQTT Explorer but it does not seem to connect even with the certs provided.
  • did you find the correct heater address in the MQTT topic? Mine is 3c39e7217cc0, but it’s unique. - yes updated the yaml with the mac address of my heater

I do see this in my Mosquitto broker logs

2022-12-09 23:51:51: Error: Unable to create websockets listener on port 443.

In ADGuard i dont see the device making a DNS request to m.cloud.homewizard.com

I do see these though

I am still on version 1.07 of the appliance, maybe they added new bits.

  • You need to make sure that you are using Mosquitto v1.6.12. Later versions do not work.
  • Port 443 needs to be free, so MQTT can use it. If MQTT can’t bind to 433 It’s for sure not going to work.
  • DNS redirect is a crucial piece of the puzzle.

Given up in the end. I cant use an older Mosquitto so that stops me dead in the water.

The heater i was able to get in to the Tuya app and can control it via Tuya Local so its better than nothing. Would prefer MQTT but right now i am just happy to be able to control it via HA.

Good to know.

:wave: I bought a Princess smart heater fan a while ago, and created a cloud integration for it which is in a PR now, hopefully it gets merged pretty soon.

Would also welcome collaboration on adding support for more devices.

2 Likes

@mepla Anyway to already use your integration already?

@mhjansen79 Yes, you can copy the component directory under your custom_components and add a version field to manifest.json (as explained in this doc)

Ultimately you will need to have something like this image:

I will release this in HACS if I the PR takes longer than a week or two after new year.

2 Likes

Thanks! I’ve done this and I am able to add the integration using my email and password, but I don’t have any devices load into the integration. I currently use the dehumidifier, which works fine through the Homewizard Climate app.

Device info:
Software: 1.07
Dehumidifier HWCdhmG1

@mhjansen79 I should’ve mentioned that it currently only supports one type of device (HeaterFan). Main reason is I only had access to that one device. I might have a way to find out other device types’ websocket payloads, but I’m not sure yet. You are welcome to open a PR in the underlying library if you know what payloads are sent for your device type. Otherwise, I might have more supported devices in about a month or so.

2 Likes

Is there a way to find out those websocket payloads? I’m using the same infrared heater( ‘Princess 01.343350.01.001 Smart Infrared Panel Heater 350 | Princess’) as MaxiMIlliaz mentioned above.