kovapatrik / homebridge-midea-platform

Homebridge plugin for Midea devices
https://www.npmjs.com/package/homebridge-midea-platform
Apache License 2.0
29 stars 2 forks source link

Add supporto for Heat Pump Wi-Fi Controller (C3) #107

Open fagallo opened 2 months ago

fagallo commented 2 months ago

Please add support for Heat Pump Wi-Fi Controller ( type C3 ). It's very popular, sold under different brands.

Thanks a lot.

kovapatrik commented 2 months ago

Can you please describe what features you would need?

fagallo commented 2 months ago

Heat pump is not supported at this time. You only support : Air Conditioner (AC); Dehumidifier (A1); Electric Water Heater (E2); Gas Water Heater (E3); Fan (FA).

I request if you can support Heat Pump Wi-Fi Controller (C3). It’s supported in HA by @georgezhao2010 , and your plugin is based on work of him.

Thanks

Il giorno 5 set 2024, alle ore 17:48, Kovalovszky Patrik @.***> ha scritto:

Can you please describe what features you would need?

— Reply to this email directly, view it on GitHub https://github.com/kovapatrik/homebridge-midea-platform/issues/107#issuecomment-2332084916, or unsubscribe https://github.com/notifications/unsubscribe-auth/A32S2PHLEG5UE5O7TGA2TKTZVB4LHAVCNFSM6AAAAABNWAYWKOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZSGA4DIOJRGY. You are receiving this because you authored the thread.

kovapatrik commented 2 months ago

I'm just asking what features you would need. What do you want to access from Apple Home? There are a lot of features in the official application (I would guess), and as I don't know what are these features and how they work, I want to ask you to provide me some input about these as I can't implement features I don't know about.

fagallo commented 2 months ago

The most important (essential) feature are :

1) Switch for:

2) Sensor for :

3) Thermostat card

There are other feature that you can implement, but these are the minimum to operate the heat pump.

I remain available for any clarification.

Il giorno 5 set 2024, alle ore 18:12, Kovalovszky Patrik @.***> ha scritto:

I'm just asking what features would you need? What do you want to access from Apple Home? There are a lot of features in the offiical application (I would guess), and as I don't know what are these features and how do they work, I want to ask you to provide me some input about these as I can't implement features I don't know about.

— Reply to this email directly, view it on GitHub https://github.com/kovapatrik/homebridge-midea-platform/issues/107#issuecomment-2332136874, or unsubscribe https://github.com/notifications/unsubscribe-auth/A32S2PAJUPMC43TARBAA7D3ZVB7HPAVCNFSM6AAAAABNWAYWKOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZSGEZTMOBXGQ. You are receiving this because you authored the thread.

kovapatrik commented 2 months ago

By looking at this table, I came to a conclusion I will separate settings like this:

 "zone1": {
  "title": "Zone 1 accessory",
  "description": "Toggles if the zone 1 accessory is created with the accessory.",
  "type": "boolean"
},
"zone2": {
  "title": "Zone 2 accessory",
  "description": "Toggles if the zone 2 accessory is created with the accessory.",
  "type": "boolean"
},
"waterHeater": {
  "title": "Water Heater accessory",
  "description": "Toggles if the water heater accessory is created with the accessory.",
  "type": "boolean"
},
"ecoSwitch": {
  "title": "Eco Mode Switch",
  "description": "Toggles if the ECO mode switch is created with the accessory.",
  "type": "boolean"
},
"silentSwitch": {
  "title": "Silent Mode Switch",
  "description": "Toggles if the silent mode switch is created with the accessory.",
  "type": "boolean"
},
"tbhSwitch": {
  "title": "TBH Mode Switch",
  "description": "Toggles if the TBH mode switch is created with the accessory.",
  "type": "boolean"
},
"disinfectSwitch": {
  "title": "Disinfect Mode Switch",
  "description": "Toggles if the disinfect mode switch is created with the accessory.",
  "type": "boolean"
}

Is this okay with you? Also, I might need you to get an understanding of the sensors and switches. For example, I want some logic, if the water heater accessory is created, then all of the things which are somehow in connection with the water heater (like the dhw settings, if I understand correctly) should be created with it. Can you provide some grouping like this for zone1, zone2 and waterHeater?

kovapatrik commented 2 months ago

Or maybe a more clarified question: which services from the linked table should be created with zone1, zone2 or waterHeater?

kovapatrik commented 2 months ago

I might totally misunderstood this, and all of these (zone1, zone2, waterHeater) should be created by default and there shouldn't be options to disable them. I totally don't understand how this should work, so I would like to rely on you in these questions.

fagallo commented 2 months ago

I have a simple heating system with only one zone and without tank. But this in only my case. I will go to collect more information and I will go to write you tomorrow.

Sorry for English.

Il giorno 5 set 2024, alle ore 19:19, Kovalovszky Patrik @.***> ha scritto:

Or maybe a more clarified question: which services from the linked table should be created with zone1, zone2 or waterHeater?

— Reply to this email directly, view it on GitHub https://github.com/kovapatrik/homebridge-midea-platform/issues/107#issuecomment-2332259365, or unsubscribe https://github.com/notifications/unsubscribe-auth/A32S2PD3YF4IWMYALZY7OBDZVCHCFAVCNFSM6AAAAABNWAYWKOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZSGI2TSMZWGU. You are receiving this because you authored the thread.

kovapatrik commented 2 months ago

Thank you! So my initial intuition about this was not entirely incorrect.

fagallo commented 2 months ago

I might totally misunderstood this, and all of these (zone1, zone2, waterHeater) should be created by default and there shouldn't be options to disable them. I totally don't understand how this should work, so I would like to rely on you in these questions.

There are heat system with one zone or two zone. In my case Is disabled on the Wifi Controller (where you enter the parameters). In the same way there can be systems without tank and consequently therefore fast_dhw and water_heater is disabled ( always my case). Tank is for domestic hot water, zone 1/2 is , for example, for a two-level house.

This is the variable in home assistant :

There is another value, important for trigger, that I don't know why it doesn't work, the room_temperature.

I n the end the plug-in takes, more or less, the data that is on the official app.

At this link https://world.clivet.it/openDocs?c=KeJvMXkNddkYQb010f6sKA%3D%3D&e=Ny4kuAP%2F5XE%3D&d=86DmsPXnRB9rjccLu8XPXQ%3D%3D&u=xoaD6TMulm0Vz79q8J5JBA%3D%3D&ext=DMjZ3DQjMD8%3D&s=%2BPbNvR27dMI%3D there is the manual of Clivet heat pump (Midea) and at chapter 9 there are the explanations on wifi controller.

Something else is needed?

Il giorno 5 set 2024, alle ore 19:33, Kovalovszky Patrik @.***> ha scritto:

Thank you! So my initial intuition about this was not entirely incorrect.

— Reply to this email directly, view it on GitHub https://github.com/kovapatrik/homebridge-midea-platform/issues/107#issuecomment-2332284140, or unsubscribe https://github.com/notifications/unsubscribe-auth/A32S2PEULDXDNC6DVOHNQJLZVCIYHAVCNFSM6AAAAABNWAYWKOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZSGI4DIMJUGA. You are receiving this because you authored the thread.

kovapatrik commented 2 months ago

The images didn't come through the email. Can you please upload them using GitHub?

kovapatrik commented 2 months ago

Also, in the latest beta version I've added a feature where you can download a file on the config UI discovery page, which helps me implement the plugin. Could you please attach that?

So you need to do a discovery, and when the discovery is over, you can download the file by clicking on the model number of your unit.

kovapatrik commented 2 months ago

One more thing: do I understand correctly that there are no current temperature displayed on this controller? I think only the target temperature is shown.

fagallo commented 2 months ago

I’m away from home until monday.I have installed your plugin , not beta, and try discover. It found heat pump but is “i unsupported” Monday I will try beta.—Fabio @. giorno 6 set 2024, alle ore 19:09, Kovalovszky Patrik @.> ha scritto: Also, in the latest beta version I've added a feature where you can download a file on the config UI discovery page, which helps me implement the plugin. Could you please attach that? So you need to do a discovery, and when the discovery is over, you can download the file by clicking on the model number of your unit.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

fagallo commented 2 months ago

On physical controller is displayed current temperature , target temperature and external temperature.In home assistent plugin there is current temperature sensor but not have value (undefined)—Fabio @. giorno 6 set 2024, alle ore 19:10, Kovalovszky Patrik @.> ha scritto: One more thing: do I understand correctly that there are no current temperature displayed on this controller? I think only the target temperature is shown.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

kovapatrik commented 2 months ago

Sure thing! The discovery will identify the unit as Heat Pump WiFi Controller, but it doesn't matter as for now. I want to get that file because the original Python plugin, just as you said, didn't fetch for the current temperature and I might be able to do that using that file.

fagallo commented 2 months ago

A few months ago i write @georgezhao to report this problem without any response.This is the log. Please note that “current_temperature” value is null.This is state of climate:hvac_modes: off, auto, cool, heatmin_temp: 17max_temp: 30target_temp_step: 0.5current_temperature: nulltemperature: 21zone1_power: truezone2_power: falsedhw_power: falsezone1_curve: truezone2_curve: falsedisinfect: falsefast_dhw: falsezone_temp_type: false, falsezone1_room_temp_mode: truezone2_room_temp_mode: falsezone1_water_temp_mode: falsezone2_water_temp_mode: falsesilent_mode: trueeco_mode: falsetbh: falsemode: 3mode_auto: 3zone_target_temp: 40, 40dhw_target_temp: 39room_target_temp: 21zone_heating_temp_max: 65, 65zone_heating_temp_min: 35, 35zone_cooling_temp_max: 25, 25zone_cooling_temp_min: 5, 5room_temp_max: 30room_temp_min: 17dhw_temp_max: 60dhw_temp_min: 20tank_actual_temperature: 25target_temperature: 21, 21temperature_max: 30, 30temperature_min: 17, 17total_energy_consumption: 113status_heating: falsestatus_ibh: falsetotal_produced_energy: 400outdoor_temperature: 14error_code: 0icon: mdi:air-conditionerfriendly_name: Pompa di caloresupported_features: 1—Fabio @. giorno 6 set 2024, alle ore 22:13, Kovalovszky Patrik @.> ha scritto: Sure thing! The discovery will identify the unit as Heat Pump WiFi Controller, but it doesn't matter as for now. I want to get that file because the original Python plugin, just as you said, didn't fetch for the current temperature and I might be able to do that using that file.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

kovapatrik commented 2 months ago

Yeah, you are totally right. As I copied the logic of his plugin I've seen that it is not read out. The following attributes are available at the moment:

ZONE1_POWER: boolean;
ZONE2_POWER: boolean;
DHW_POWER: boolean;
ZONE1_CURVE: boolean;
ZONE2_CURVE: boolean;
DISINFECT: boolean;
FAST_DHW: boolean;
ZONE_TEMPERATURE_TYPE: boolean[];
ZONE1_ROOM_TEMPERATURE_MODE: boolean;
ZONE2_ROOM_TEMPERATURE_MODE: boolean;
ZONE1_WATER_TEMPERATURE_MODE: boolean;
ZONE2_WATER_TEMPERATURE_MODE: boolean;
MODE: number;
MODE_AUTO: number;
ZONE_TARGET_TEMPERATURE: number[];
DHW_TARGET_TEMPERATURE: number;
ROOM_TARGET_TEMPERATURE: number;
ZONE_HEATING_TEMPERATURE_MAX: number[];
ZONE_HEATING_TEMPERATURE_MIN: number[];
ZONE_COOLING_TEMPERATURE_MAX: number[];
ZONE_COOLING_TEMPERATURE_MIN: number[];
TANK_ACTUAL_TEMPERATURE?: number;
ROOM_TEMPERATURE_MAX: number;
ROOM_TEMPERATURE_MIN: number;
DHW_TEMPERATURE_MAX: number;
DHW_TEMPERATURE_MIN: number;
TARGET_TEMPERATURE: number[];
TEMPERATURE_MAX: number[];
TEMPERATURE_MIN: number[];
STATUS_HEATING?: boolean;
STATUS_DHW?: boolean;
STATUS_TBH?: boolean;
STATUS_IBH?: boolean;
TOTAL_ENERGY_CONSUMPTION?: number;
TOTAL_PRODUCED_ENERGY?: number;
OUTDOOR_TEMPERATURE?: number;
SILENT_MODE: boolean;
ECO_MODE: boolean;
TBH: boolean;
ERROR_CODE: number;

There is a high chance that I will be able to get behind the logic of the file I was talking about and be able to read out the current temperature. But we will see this next week.

kovapatrik commented 2 months ago

By the way, if your have your unit's serial number at hand, I can download that file using that.

kovapatrik commented 1 month ago

Have you had a chance to do this?

fagallo commented 1 month ago

what should I do?

kovapatrik commented 1 month ago

So, you need to do the discovery process and when it's done, there is a column with your model number. That cell inside of the row where your device is, is clickable and it will download a .lua file, containing the script which controls the device from within the app (I guess). Can you download this and send me through email? It's kovapatrik@gmail.com. Alternatively, you can just send me your device's serial number (also in email, I would suggest).

fagallo commented 1 month ago

Sorry, but cell is non clickable. I sent you a mail with screenshot.

kovapatrik commented 1 month ago

Oh, you might have to update to the latest beta. Forgot to mention.

fagallo commented 1 month ago

Get this error : Currently used cloud provider doesn't support Lua downloading, using the default profile now...

kovapatrik commented 1 month ago

It should be just a warning. The file should be downloaded regardless this message.

fagallo commented 1 month ago

Download Lua failed: Error: Error while sending request to https://mp-prod.appsmb.com/mas/v5/app/proxy?alias=/v2/luaEncryption/luaGet: Error: Error response from API: {"msg":"移动平台Token参数缺失或请求参数名错误! [accesstoken is empy]","code":40001} at MSmartHomeCloud.apiRequest (/homebridge/node_modules/homebridge-midea-platform/dist/core/MideaCloud.js:101:23) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async MSmartHomeCloud.getProtocolLua (/homebridge/node_modules/homebridge-midea-platform/dist/core/MideaCloud.js:166:26) at async Object./downloadLua (/homebridge/node_modules/homebridge-midea-platform/homebridge-ui/server.js:155:21) at async UiServer.processRequest (/homebridge/node_modules/homebridge-midea-platform/node_modules/@homebridge/plugin-ui-utils/dist/server.js:75:30

I use a Mac and I try with Safari and Chrome. Same result.

kovapatrik commented 1 month ago

Okay, this looks like some type of authentication error thing. Could you please try this very same process out using the Use default Midea SmartHome profile option? If it doesn't work, please just send me the serial number of your device.

kovapatrik commented 1 month ago

Have you had a chance to try this?