Add integration for Hisense devices using ConnectLife

can you please recap the instructions used

this is a recap.
create a directory for the addon
download the zip from git
unzip it
execute docker build . --build-arg=‘BUILD_FROM=alpine:3.19’ -t ha-connectlife-addon
create compose.yml like this one

version: ‘3.8’

services:
ha-connectlife-addon:
image: ha-connectlife-addon
environment:
- CONNECTLIFE_LOGIN=YOUR CONNECTLIFE EMAIL
- CONNECTLIFE_PASSWORD=YOUR CONNECTLIFE PWD
- LOG_LEVEL=info
- MQTT_HOST=YOUR MQTT IP (dont use 127.0.0.1, it fail to me)
- MQTT_USER=YOUR MQTT USER
- MQTT_PASSWORD=YOUR MQTT PWD
- MQTT_PORT=1883
- MQTT_SSL=false
command: /bin/ash -c ‘php artisan app:mqtt-loop’

now launch with docker compose up -d

now you should have all a/c in HA under mqtt :slight_smile:

What’s wrong with these instructions?

Install in Home Assistant with Supervisor

ha_badge

  1. Make sure your Connectlife appliances are online.
  2. In Supervisor, navidate to the Add-on Store.
  3. From the overflow menu, select “Repositories”.
  4. Add https://github.com/bilan/home-assistant-addons/.
  5. Wait for Add-on to appear or click “Reload” in the same overflow menu.
  6. Install / build thhe add-on.
  7. Turn on the add-on watchdog - Connectlife API is not stable and sometimes times out.
  8. In the Configuration section, fill in the necessary fields. If you leave the fields blank, the add-on will attempt to fetch MQTT credentials from the Supervisor API.
1 Like

Hello,
I followed the instructions and did have the MQTT integration appear but nothing was discovered:


I can confirm that the API add-on is receiving information from Connectlife with the A/C information.

1 Like

Hi

I used the instructions in the formal help…

Install in Home Assistant with Supervisor

  1. Make sure your Connectlife appliances are online.
  2. In Supervisor, navidate to the Add-on Store.
  3. From the overflow menu, select “Repositories”.
  4. Add https://github.com/bilan/home-assistant-addons/.
  5. Wait for Add-on to appear or click “Reload” in the same overflow menu.
  6. Install / build thhe add-on.
  7. Turn on the add-on watchdog - Connectlife API is not stable and sometimes times out.
  8. In the Configuration section, fill in the necessary fields. If you leave the fields blank, the add-on will attempt to fetch MQTT credentials from the Supervisor API.

The only thing I would add is that, in my case, leaving field blank did not work, and I had to fill username and password (as I expected) manually. Also you need MQTT installed… But it was very “easy” if you have a little HomeAssistant experience.

Good luck!
Raul

1 Like

I had left this effort alone for a few days.
Now today, all of a sudden, the MQTT integration discovered the portable A/C.
Very odd!
Working great, thank you for the addon!

Under MQTT there were still no ConnectLife devices discovered. I tried also manually adding MQTT ip, username and password. My MQTT server is working, already are there 88 devices.

In log I can see many reports like this but I believe this is because I have different type of AC (feature code 109) and a few other products in my ConnectLife account


2024-03-04 15:32:34,912 DEBG 'mqtt' stdout output:
                                     
  [ErrorException]                   
  Undefined array key "t_temp_type"  
                                     

Exception trace:
  at /home/app/app/Services/AcDevice.php:28
 Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at /home/app/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:255
 Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}() at /home/app/app/Services/AcDevice.php:28
 App\Services\AcDevice->__construct() at /home/app/app/Services/ConnectlifeApiService.php:139
 App\Services\ConnectlifeApiService->getOnlineAcDevices() at /home/app/app/Services/MqttService.php:18
 App\Services\MqttService->__construct() at n/a:n/a
 ReflectionClass->newInstanceArgs() at /home/app/vendor/laravel/framework/src/Illuminate/Container/Container.php:952
 Illuminate\Container\Container->build() at /home/app/vendor/laravel/framework/src/Illuminate/Container/Container.php:795

2024-03-04 15:32:34,912 DEBG 'mqtt' stdout output:
 Illuminate\Container\Container->resolve() at /home/app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:957
 Illuminate\Foundation\Application->resolve() at /home/app/vendor/laravel/framework/src/Illuminate/Container/Container.php:731
 Illuminate\Container\Container->make() at /home/app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:942
 Illuminate\Foundation\Application->make() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:181
 Illuminate\Container\BoundMethod::addDependencyForCallParameter() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:124
 Illuminate\Container\BoundMethod::getMethodDependencies() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
 Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() at /home/app/vendor/laravel/framework/src/Illuminate/Container/Util.php:41
 Illuminate\Container\Util::unwrapIfClosure() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
 Illuminate\Container\BoundMethod::callBoundMethod() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
 Illuminate\Container\BoundMethod::call() at /home/app/vendor/laravel/framework/src/Illuminate/Container/Container.php:662
 Illuminate\Container\Container->call() at /home/app/vendor/laravel/framework/src/Illuminate/Console/Command.php:211
 Illuminate\Console\Command->execute() at /home/app/vendor/symfony/console/Command/Command.php:326
 Symfony\Component\Console\Command\Command->run() at /home/app/vendor/laravel/framework/src/Illuminate/Console/Command.php:180
 Illuminate\Console\Command->run() at /home/app/vendor/symfony/console/Application.php:1096
 Symfony\Component\Console\Application->doRunCommand() at /home/app/vendor/symfony/console/Application.php:324
 Symfony\Component\Console\Application->doRun() at /home/app/vendor/symfony/console/Application.php:175
 Symfony\Component\Console\Application->run() at /home/app/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:201
 Illuminate\Foundation\Console\Kernel->handle() at /home/app/artisan:35


2024-03-04 15:32:34,912 DEBG 'mqtt' stdout output:
 Illuminate\Container\Container->resolve() at /home/app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:957
 Illuminate\Foundation\Application->resolve() at /home/app/vendor/laravel/framework/src/Illuminate/Container/Container.php:731
 Illuminate\Container\Container->make() at /home/app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:942
 Illuminate\Foundation\Application->make() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:181
 Illuminate\Container\BoundMethod::addDependencyForCallParameter() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:124
 Illuminate\Container\BoundMethod::getMethodDependencies() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
 Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() at /home/app/vendor/laravel/framework/src/Illuminate/Container/Util.php:41
 Illuminate\Container\Util::unwrapIfClosure() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
 Illuminate\Container\BoundMethod::callBoundMethod() at /home/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
 Illuminate\Container\BoundMethod::call() at /home/app/vendor/laravel/framework/src/Illuminate/Container/Container.php:662
 Illuminate\Container\Container->call() at /home/app/vendor/laravel/framework/src/Illuminate/Console/Command.php:211
 Illuminate\Console\Command->execute() at /home/app/vendor/symfony/console/Command/Command.php:326
 Symfony\Component\Console\Command\Command->run() at /home/app/vendor/laravel/framework/src/Illuminate/Console/Command.php:180
 Illuminate\Console\Command->run() at /home/app/vendor/symfony/console/Application.php:1096
 Symfony\Component\Console\Application->doRunCommand() at /home/app/vendor/symfony/console/Application.php:324
 Symfony\Component\Console\Application->doRun() at /home/app/vendor/symfony/console/Application.php:175
 Symfony\Component\Console\Application->run() at /home/app/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:201
 Illuminate\Foundation\Console\Kernel->handle() at /home/app/artisan:35


2024-03-04 15:32:35,914 INFO success: mqtt entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-03-04 15:32:35,914 INFO success: mqtt entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Should this work for tumble dryer too?

1 Like

This error should be fixed in v2.1.3 released today.

2 Likes

Every Connectlife App device should have been accessible through the add-on API (default port 8000), but you had to discover by yourself what properties the device has and how to change them.

1 Like

Thank you so much for this addon !!! Finally I can manage my AC from Home Assistant! :smiley:

2 Likes

It works now for AC!

2 Likes

How can you add to configuration also other device types? I would like to add my oven.

1 Like

Hi guys, just to let you know that after an plugin update, my refrigerator RF793N4SAFE show up!

These are all the information it sends! Now, to put it to some use :laughing:

"deviceNickName":"Refrigerator","deviceFeatureCode":"1b0610z0049j","deviceFeatureName":"BCD-610WP1BWF1S3/HC4(HAB)","deviceTypeCode":"026","deviceTypeName":"","bindTime":1710171538374,"role":1,"roomId":3836987,"roomName":"default_room","statusList":{"refrigerator_temperature":"4","freeze_temperature":"-18","variation_temperature":"-40","work_mode1":"0","work_mode2":"0","mainboard_version":"151","refrigerator_real_temperature":"3","freeze_real_temperature":"-17","variation_real_temperature":"-40","environment_real_temperature":"20","freeze_sensor_real_temperature":"-40","refrigerator_sensor_real_temperature":"-17","variation_sensor_real_temperature":"-40","sensor_failure_status":"0","control_failure_status":"0","running_status":"0","mainboard_type":"70","displayboard_key_setting":"0","displayboard_type":"75","compressor_frequency":"0","refrigerator_poweron_ad":"0","refrigerator_poweroff_ad":"0","freeze_poweron_ad":"0","freeze_poweroff_ad":"0","variation_poweron_ad":"0","variation_poweroff_ad":"0","sensor_failure_status2":"0","temperature_room_judge":"19","wifi_setting":"0","displayboard_version":"1","environment_humidity":"58","model_type":"26","refrigerator_min_temperature":"2","refrigerator_max_temperature":"9","variation_min_temperature":"-20","variation_max_temperature":"5","freeze_min_temperature":"-24","freeze_max_temperature":"-13","wifi_next_sendtime":"0","open_the_door_alarm":"0","displayboard_brand":"3","refrigerator_door_open_time":"0","variation_door_open_time":"0","freeze_door_open_time":"0","wifi_handshake_fault_flag":"0","reserve46":"0","reserve47":"0","reserve48":"0","reserve49":"0","reserve50":"0","reserve51":"0","reserve52":"0","reserve53":"0","reserve54":"0","reserve55":"0","reserve56":"0","reserve57":"0","reserve58":"0","reserve59":"0","reserve60":"0","reserve61":"65535","reserve62":"65535","reserve63":"65535","reserve64":"65535","reserve65":"65535","reserve66":"65535","reserve67":"65535","reserve68":"65535","reserve69":"65535","reserve70":"65535","reserve71":"65535","reserve72":"65535","fuzzy_mode":"0","save_mode":"0","show_mode":"0","sf_mode":"0","sr_mode":"0","holiday_mode":"0","debacilli_mode":"0","free_temp_sens_head_failure":"0","refr_temp_sens_head_failure":"0","vari_temp_sens_head_failure":"0","envi_temp_sens_head_failure":"0","refr_evap_temp_sens_head_failure":"0","free_evap_temp_sens_head_failure":"0","inlet pipe_temp_sens_head_failure":"0","tx_failure":"0","free_defrosting_failure":"0","free_fan_failure":"0","refr_defrosting_failure":"0","refr_fan_failure":"0","rx_failure":"0","ice_making_machine_failure":"0","refr_room_open":"0","free_room_open":"0","vari_room_open":"0","commodity_inspection":"0","frost_state":"0","compressor_condition":"0","refr_key":"0","vari_key":"0","free_key":"0","alarm_key":"0","mode_key":"0","lock_key":"0","vari_evap_temp_sens_head_failure":"0","free_room_over_temp_alarm_failure":"0","humidity sensor_failure":"0","refr_room":"1","free_room":"1","vari_room":"0","custard_room":"0","automatic_ice_making":"1","existing_fuzzy_mode":"0","existing_save_mode":"1","existing_holiday_mode":"0","existing_sf_mode":"1","existing_sr_mode":"1","open_refrigerator_door_alarm":"0","open_freeze_door_alarm":"0","open_variation_door_alarm":"0","display_panel_ronshen":"1","wifi_rx_fault_flag":"0","wifi_tx_fault_flag":"0","wifi_fault_flag":"0","ali_wifi_fault_flag":"0","lock_fresh_mode":"0","existing_lock_fresh_mode":"0","dbd_clean_mode":"0","special_space":"0","high_temperature":"0","medium_temperature":"0","low_temperature":"0","high_humidity":"0","medium_humidity":"0","low_humidity":"0","variable_temperature_space ":"0","wet_and_dry_space":"0","user_debacilli_mode":"0","ref_light":"0","load_operation_status2":"0","pairing":"0","not_active":"1","pairing_active":"0","unpair_all_users":"0","monitor":"0","monitor_set":"0","monitor_set_act":"0","temperature_unit":"0","running_status3":"0","vacuum_on_off_status":"0","human_on_off_status":"0","super_water_supply_mode":"0","gold_water_supply_mode":"0","micro_water_supply_mode":"0","water_box_mode_status":"0","water_box_lack_status":"0","sf_sr_mutex_mode":"1","electric_energy_one_tenths_value":"0","electric_energy_percentile_thousands_value":"5","electric_current":"129","ice_making_state":"0","filter_state":"93","power_hundred_ten_value":"0","power_one_tenths_value":"0","power_voltage":"0","fruit_vegetables_temperature":"0","ice_sensor_failure_flag":"0","ice_temperature_sensor_header_failure_flag":"0","variable_fan_failure_status":"0","condensation_fan_failure_status":"0","unfreeze_switch_status":"0","variable_heater_failure_status":"0","right_free_sensor_failure":"0","wine_sensor_failure_flag":"0","wine_light":"0","real_humidity":"0","standby_mode_valid":"0","standby_mode_state":"0","refrigerator_freeze_swith_state":"0","refrigerator_freeze_swith":"0","water_tank_install_state":"0","temp_auto_ctrl_mode_state":"0","fast_store_mode_status":"0","will_light_market_mode_state":"0","will_light_switch_state":"0","will_light_mode_state":"0","will_light_mode_exist":"0","temp_auto_ctrl_mode_exist":"0","market_mode_exist":"0","fast_store_mode_exist":"0","free_room_open_2":"0","var_room_open_2":"0","real_humidity_b":"0","real_humidity_c":"0","measured_vibrations":"0","wine_area_switch_status":"0","quiet_mode_status":"0","sabbath_mode_switch_status":"0","night_mode_status":"0","night_mode_start_hour":"0","night_mode_start_min":"0","night_mode_end_hour":"0","night_mode_end_min":"0","date_display_format_status":"0","shelf_light_a_state":"0","shelf_light_b_state":"0","shelf_light_c_state":"0","rgb_light_state":"0","camera_state":"0","sabbath_mode_status":"0","shelf_light_atmosphere_mode_brightness":"0","shelf_light_function_mode_brightness":"0","rgb_light_normal_brightness":"0","rgb_light_atmosphere_brightness":"0","rgb_light_function_brightness":"0","shelf_light_normal_on_time":"0","shelf_light_function_on_time":"0","human_sense_ui_display_state":"0","shelf_light_atmosphere_brightness":"0","rgb_light_normal_on_time":"0","human_sense_light_status":"0","rgb_light_atmosphere_on_time":"0","rgb_light_function_on_time":"0","date_format_status":"0","rgb_normal_mode_r_value":"0","rgb_normal_mode_g_value":"0","rgb_normal_mode_b_value":"0","rgb_atmosphere_mode_r_value":"0","rgb_atmosphere_mode_g_value":"0","rgb_atmosphere_mode_b_value":"0","rgb_function_mode_r_value":"0","rgb_function_mode_g_value":"0","rgb_function_mode_b_value":"0","normal_sound_size":"0","wine_b_switch__area":"0","alarm_sound_volume":"0","humdy_test_switch_state":"0","key_press_sound_volume":"0","water_box_alarm_switch_state":"0","screen_display_brightness":"0","night_mode_screen_dark_level":"0","night_mode_light_dark_level":"0","child_lock_open_door_sound_alarm":"0","theme_color":"0","screen_to_clock_time":"0","child_lock_switch_status":"0","child_lock_open_alarm":"0","screen_to_standby_time":"0","screen_display_lock":"0","charcoal_filter_surplus_time":"0","water_filter_surplus_time":"0","filter_alarm_time":"0","up_wine_area_a_humdy_fault":"0","mid_wine_area_b_humdy_fault":"0","low_wine_area_c_humdy_fault":"0","language_select":"0","date_time_format_day_state":"0","date_time_format_month_state":"0","date_time_format_year_state":"0","vibration_sensor_fault":"0","up_wine_area_a_temp_fault":"0","mid_wine_area_b_temp_fault":"0","low_wine_area_c_temp_fault":"0","mid_wine_area_b_evaporator_fault":"0","low_wine_area_c_evaporator_fault":"0","up_wine_area_a_fan_fault":"0","mid_wine_area_b_fan_fault":"0","low_wine_area_c_fan_fault":"0","ice_making_b_switch_status":"0","door_open_ui_display_status":"0","door_open_light_status":"0","run_status_flag_5":"0","door_close_ui_display_status":"0","door_close_light_status":"0","charcoal_filter_time_reset":"0","water_filter_time_reset":"0","up_wine_area_a_evaporator_fault":"0","vibration_alarm":"0","ODOR_SENSOR_SENSITIVITY":"3","ODOR_SENSOR_NO_DISTURB_MODE_STATUS":"1","ODOR_SENSOR_SWITHC_STATUS":"1","STERI_PURI_CYCLE_FLAG":"1","ODOR_SENSOR_FAULT_FLAG":"0","AIR_FRESHNESS":"0","unfreeze_run_status":"0","will_fresh_light_status":"0","human_sensor_switch_exist":"0","will_fress_light_exist":"0","child_lock_switch_exist":"0","ice_making_full_status":"0","refr_var_room_sens_failure":"0","refr_dry_wet_room_sens_failure":"0","froze_convert_to_refri_switch_status":"0","charcoal_filter_expiration_alarm":"0","var_room_over_temp_alarm":"0","refr_room_over_temp_alarm":"0","lumin_value_of_interior_light":"0","daily_energy_kwh":0},"useTime":1710171538353,"offlineState":1,"seq":0,"createTime":0}

Great work!

1 Like

I would love to see this too - The addon can see my washing machine, gives me a bunch of outputs but I can’t get this across into HA - If I had the knowledge I would love to assist to add it but I know nothing about how it works

I have a Hisense washing also and would love to see this working.

2 Likes

This is great! Just bought Hisense AC, and found this. Thank you!

1 Like

Did you manage to get it to work? what do you use for the wifi module?

1 Like

Is anyone willing to integrate also other devices? We can see them in the log, but I have no idea how to get them to the frontend. I can help with testing, maybe share account and maybe we can even help with some reimbursement for working solution

1 Like

Hi,

I’ve installed the addon and it seems to be connected.

But how do i put this in a dashboard? The mttq broker doesnt see any new entities.

Please advise how to put this in a entitie for a dashboard

1 Like