logo elektroda
logo elektroda
X
logo elektroda

Request for Help – Flashing Della Minisplit WiFi Module (WBR3 on TCWBRCU1)

dressyspider 15057 273
ADVERTISEMENT
  • #241 21761114
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    Here is test PR:
    https://github.com/openshwprojects/OpenBK7231T_App/pull/1870
    Command is "Gen X", where X is 0, 1, 2 or 3.
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #242 21761123
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21761114 That's what I'm talking about. Thank you.
    So do I just OTA the file? Right?
  • #243 21761141
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    well, yes, download artifacts, extract it, find proper ota file your platform and give it a go
    Helpful post? Buy me a coffee.
  • #244 21761182
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21761141 Dump question, sorry: extract the file with 7-Zip? Or? Lol I'm so lost
  • #245 21761304
    divadiow
    Level 38  
    Posts: 4994
    Help: 437
    Rate: 890
    ota to OpenRTL87X0C_1870_merge_5892d33cf0e8_ota.img
    Attachments:
    • OpenBK7231T_App_1870_merge_5892d33cf0e8_OpenRTL87X0C.zip (1.15 MB) You must be logged in to download this attachment.
  • #246 21761331
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    Here is step by step explanation:
    https://www.elektroda.com/rtvforum/topic4033833.html
    Helpful post? Buy me a coffee.
  • #247 21761454
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21761304 Thanks @divadiow @p.kaczmarek2, it seems like it does work. But I need the weather to get a bit cooler so I could really push the mini split to really know if it works. Right now I can't really push the mini split to max.
  • ADVERTISEMENT
  • #248 21761976
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    That's nice to hear, but how did you verify that it works? With power consumption check? How big is the change?
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #249 21762524
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21761976 from L1 to L3 about roughly 300 W difference, take that with a grain of salt because I can't be sure if that was the result of the compressor throttle down from the option or it's reached the set temperature (set to the highest possible 88°F) because it was not that cool at the moment. Need to do more tests around Christmas, then it's really cold and the mini split will have to work hard to raise the temperature up without any doubt. I will update when I can be sure that the code works lol, again thank you all for all the work that you guys put in.
  • #250 21764091
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21761976 Hey, could we put the GEN option in HA? I want to do automations with GEN function. Thanks, guys
  • Helpful post
    #251 21766471
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    For anyone who might have messed up their Wi-Fi module during flash, or if you’re looking for a spare one so you can play with it, search for Replacement Internet/BLE Dongle for Pioneer® WYT/WT Series Air Conditioner Heat Pump Systems @ https://www.pioneerminisplit.com. They use the same module, and the firmware's also the same, just got my delivered, jumped on Tuya dev, it's shown exactly what I have from my original module. So if need be you can get replacement now, don't have to go through Della; they’re always out of stock. Anyways, this might help someone.
  • #252 21775988
    dressyspider
    Level 3  
    Posts: 83
    Rate: 10
    Hey @vietxtlif, were you able to get OpenBeken up and running on your mini?
  • #253 21779310
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21775988 Yes, got it running OBK; everything works as it should. Thanks.

    Added after 2 [minutes]:

    How do I get Home Assistant to discover Gen option and have Gen option display in Climate like other options (Mode, Swing, Fan, ...). I tried modifying drv_tclAC but can't get Gen to show up in Climate.
  • #254 21779313
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    Is there a HA-specific solution for Gen? Or do you need a generic enum? You could look into enums HA discovery source code. If not, I can try to look into it myself, when I get some time.
    Helpful post? Buy me a coffee.
  • #255 21779319
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    Honestly, I don't know where to look. I tried, but my skill is next to none; if you could, I really appreciate.
  • ADVERTISEMENT
  • #256 21779321
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    Probably hass_createSelectEntityIndexedCustom function in OBK source code could help.
    Helpful post? Buy me a coffee.
  • #257 21779328
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21779321 I will look at that now. Thank you.

    Added after 5 [hours] 35 [minutes]:

    thank you for the pointer, i had made changes to hass.c and hass.h. dont know if the changes are correct and i dont know how to create release to get my ota file to test
    Attachments:
    • hass.h (5.18 KB) You must be logged in to download this attachment.
    • hass.c (45.81 KB) You must be logged in to download this attachment.
  • #258 21779457
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    Is this your PR? It does not build yet, you have a compile error:
    GitHub interface showing failed continuous integration checks
    Helpful post? Buy me a coffee.
  • #259 21779635
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21779457 Yes, that's what I tried. Honestly, I don't know what I'm doing. All I did was search for what you said "hass_createSelectEntityIndexedCustom" and write a new part for GenOptions in the two files I uploaded here. If you could look over those 2 files to see if I messed up somewhere.
  • #260 21779890
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    Is the mentioned PR same as uploaded files? If so, there is no need to upload C files, all changes are visible via Github... or are you saying that there is something more in files than in your PR? If so, please submit it to Github, so it's easier to see what was changed.

    Github shows why your changes didn't compile:
    Compilation error in CI showing missing brace in drv_tclAC.c file
    Helpful post? Buy me a coffee.
  • #261 21779898
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    >>21779890 I have just committed hass.c and hass.h. When I create pull, all checks are errors. Don't know what I did wrong Laptop screen showing a GitHub pull request page for Update hass.c #1895

    Added after 11 [hours] 6 [minutes]:

    >>21779898 help please, i dont know what cause the errors anymore
  • #262 21780258
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14558
    Help: 654
    Rate: 12570
    Ok, so do you know, that if you click here on "Details":
    Closed pull requests list showing mostly failed CI test results
    You get an error message there:
    Build error showing redefinition and multiple initialization of variable “modes”
    Currently it says:
    
     D:\a\OpenBK7231T_App\OpenBK7231T_App\src\httpserver\hass.c(438,9): error C2374: 'modes': redefinition; multiple initialization 
    

    It says line 438, right? So go to line 438.
    I can see you have variable "modes" declared twice:
    Screenshot showing source code changes in hass.c file on GitHub
    It's good that you are trying to add it, possibly with a help of an LLM, but it would benefit you a lot if you read the error messages.

    Otherwise I'll look into it when I get some time, but I'm just a single person and this project is huge so sometimes I can't really help right away.
    Helpful post? Buy me a coffee.
  • #263 21781377
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    App settings screen showing GEN Mode with power levels 30%, 50%, and 80%



    So today I managed to capture a graph of the mini split Gen Options operate and how much power it consumed as each Gen option is engaged. Though today is on the extreme side of things, we have -9 °C with our weather, so the mini split is working really hard to heat the room it's in.

    Power consumption chart of shed AC in watts between 8:50 AM and 9:45 AM


    Looking at the graph, each time power usage goes up or down is when I engaged Gen options. With LV1 = 30% the mini split uses roughly 1200 W, LV2 = 50% = 1800 W, LV3 = 80% = 2300 W, and with no Gen = 100% = 2900 W. And because I have the mini split on all day, you can see how much energy can be saved here.
    I control it from the Tuya app, by the way, and the graph is taken from the energy monitor CT clamp that only monitors the mini split circuit
  • #264 21797390
    aleksclark
    Level 1  
    Posts: 1
    >>21566741 Hey, I've got the same module, and just cannot get anything to connect for a firmware dump. I tried `python3 -m ltchiptool flash read -d /dev/ttyACM0 ambz2 /dev/null --length 0x1000` and it times out no matter what combination of pulling A_0 and/or RXD to 3.3 V, power via 5 V, 3.3 V, pulling EN low...

    Can you share how you managed to get a dump/flash?

    Edit: also tried picocom, I get nothing from the LOG_UART. If I hook up to user UART it's definitely alive because I get a single weird char when power applied.

    EDIT: it was my fraking USB adapter. Successfully flashed w/OpenRTL87X0C, now we see if it works!
  • #266 21883997
    vietxtlife
    Level 8  
    Posts: 26
    Help: 1
    Rate: 2
    No problems, so does every module still good? I got several modules so I switch them around from time to time, to see if any new options created like GEN option. Sadly its wasnt>>21883933
  • #267 21916056
    Nauttor
    Level 3  
    Posts: 5
    Rate: 1
    Hi all,

    I've been following this thread with great interest, I can see amazing progress so far for the Dellas AC. I want to add my 2 cents on what I have seen so far. I'm in Spain and here we have a pretty common brand and machine that looks the same, if not the same sold behind the brand Daitsu. My Ac is a 3x multisplit. The model is the one below:

    Exterior units: Daitsu DOSM-21KDT
    Interior units: DS-18KZ & DS-9KZ


    Request for Help – Flashing Della Minisplit WiFi Module (WBR3 on TCWBRCU1)
    Request for Help – Flashing Della Minisplit WiFi Module (WBR3 on TCWBRCU1)

    Request for Help – Flashing Della Minisplit WiFi Module (WBR3 on TCWBRCU1)

    USB plug circuit board next to a white Wi‑Fi/Bluetooth module label with certification marks
    From the description of the USB module it says:
    WIFI ad Blutoth Module
    MODEL(MODÉLE):TCWBRCU1
    FCC ID:2ANDL-TCWBRCU1
    IC:23243-TCWBRCU1
    rt18720cf_voice_aircon_tcl_home_Ql0_1.0.60
    G0303-110084

    Inside as expected the same WBR3 module.

    I added it to the tuya app, and I get to extract from the cloud api the DPIDs. I guess this will confirm if it is or not the same device.

    DPIDs

    {
      "result": {
        "properties": [
          {
            "code": "switch",
            "custom_name": "",
            "dp_id": 1,
            "time": 1780412154848,
            "type": "bool",
            "value": true
          },
          {
            "code": "temp_set",
            "custom_name": "",
            "dp_id": 2,
            "time": 1780412154848,
            "type": "value",
            "value": 2500
          },
          {
            "code": "temp_current",
            "custom_name": "",
            "dp_id": 3,
            "time": 1780412692520,
            "type": "value",
            "value": 2540
          },
          {
            "code": "mode",
            "custom_name": "",
            "dp_id": 4,
            "time": 1780412154848,
            "type": "enum",
            "value": "1"
          },
          {
            "code": "fan_speed_enum",
            "custom_name": "",
            "dp_id": 5,
            "time": 1780412154848,
            "type": "enum",
            "value": "1"
          },
          {
            "code": "auto",
            "custom_name": "",
            "dp_id": 7,
            "time": 1780412155131,
            "type": "bool",
            "value": false
          },
          {
            "code": "eco",
            "custom_name": "",
            "dp_id": 8,
            "time": 1780412155131,
            "type": "bool",
            "value": true
          },
          {
            "code": "drying",
            "custom_name": "",
            "dp_id": 9,
            "time": 1780412155131,
            "type": "bool",
            "value": false
          },
          {
            "code": "heat",
            "custom_name": "",
            "dp_id": 12,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "light",
            "custom_name": "",
            "dp_id": 13,
            "time": 1780412154848,
            "type": "bool",
            "value": false
          },
          {
            "code": "beep",
            "custom_name": "",
            "dp_id": 16,
            "time": 1780412155131,
            "type": "bool",
            "value": true
          },
          {
            "code": "temp_set_f",
            "custom_name": "",
            "dp_id": 24,
            "time": 1780412154848,
            "type": "value",
            "value": 77
          },
          {
            "code": "health",
            "custom_name": "",
            "dp_id": 26,
            "time": 1780412155259,
            "type": "bool",
            "value": false
          },
          {
            "code": "cleaning",
            "custom_name": "",
            "dp_id": 27,
            "time": 1780412154848,
            "type": "bool",
            "value": false
          },
          {
            "code": "gear_vertical",
            "custom_name": "",
            "dp_id": 31,
            "time": 1780412154848,
            "type": "enum",
            "value": "1"
          },
          {
            "code": "gear_horizontal",
            "custom_name": "",
            "dp_id": 34,
            "time": 1780412154848,
            "type": "enum",
            "value": "8"
          },
          {
            "code": "fresh_air_valve",
            "custom_name": "",
            "dp_id": 39,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "supply_fan_speed",
            "custom_name": "",
            "dp_id": 40,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "temperature_type",
            "custom_name": "",
            "dp_id": 101,
            "time": 1780412154848,
            "type": "bool",
            "value": false
          },
          {
            "code": "eight_add_hot",
            "custom_name": "",
            "dp_id": 102,
            "time": 1780412155259,
            "type": "bool",
            "value": false
          },
          {
            "code": "heat_status",
            "custom_name": "",
            "dp_id": 103,
            "time": 1780412155131,
            "type": "bool",
            "value": false
          },
          {
            "code": "high_temperature_wind",
            "custom_name": "",
            "dp_id": 104,
            "time": 1780412155259,
            "type": "bool",
            "value": false
          },
          {
            "code": "cool_feel_wind",
            "custom_name": "",
            "dp_id": 105,
            "time": 1780412155259,
            "type": "bool",
            "value": false
          },
          {
            "code": "new_wind_auto_switch",
            "custom_name": "",
            "dp_id": 106,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "weektimer1",
            "custom_name": "",
            "dp_id": 107,
            "time": 1780397501067,
            "type": "string",
            "value": ""
          },
          {
            "code": "freshair_status",
            "custom_name": "",
            "dp_id": 108,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "weektimer2",
            "custom_name": "",
            "dp_id": 109,
            "time": 1780397501067,
            "type": "string",
            "value": ""
          },
          {
            "code": "filter_block_status",
            "custom_name": "",
            "dp_id": 110,
            "time": 1780412155131,
            "type": "bool",
            "value": false
          },
          {
            "code": "ai_eco_switch",
            "custom_name": "",
            "dp_id": 111,
            "time": 1780412154848,
            "type": "bool",
            "value": true
          },
          {
            "code": "access_card_insert",
            "custom_name": "",
            "dp_id": 112,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "upper_tem_limit",
            "custom_name": "",
            "dp_id": 113,
            "time": 1780412155259,
            "type": "value",
            "value": 3100
          },
          {
            "code": "lower_tem_limit",
            "custom_name": "",
            "dp_id": 114,
            "time": 1780412155259,
            "type": "value",
            "value": 1600
          },
          {
            "code": "wind_speed_percentage",
            "custom_name": "",
            "dp_id": 115,
            "time": 1780397501067,
            "type": "value",
            "value": 0
          },
          {
            "code": "ure",
            "custom_name": "",
            "dp_id": 116,
            "time": 1780412608882,
            "type": "value",
            "value": 1900
          },
          {
            "code": "external_unit_fanspeed",
            "custom_name": "",
            "dp_id": 117,
            "time": 1780412155131,
            "type": "value",
            "value": 840
          },
          {
            "code": "outdoor_fan_tarspeed",
            "custom_name": "",
            "dp_id": 118,
            "time": 1780412155259,
            "type": "value",
            "value": 0
          },
          {
            "code": "compressor_frequency",
            "custom_name": "",
            "dp_id": 119,
            "time": 1780412708053,
            "type": "value",
            "value": 20
          },
          {
            "code": "outdoor_comptar_freqrun",
            "custom_name": "",
            "dp_id": 120,
            "time": 1780412155259,
            "type": "value",
            "value": 0
          },
          {
            "code": "outdoor_comptar_freqset",
            "custom_name": "",
            "dp_id": 121,
            "time": 1780412155259,
            "type": "value",
            "value": 0
          },
          {
            "code": "outdoor_eevtar_opendegree",
            "custom_name": "",
            "dp_id": 122,
            "time": 1780412155259,
            "type": "value",
            "value": 0
          },
          {
            "code": "soft_wind",
            "custom_name": "",
            "dp_id": 123,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "ai_eco_status",
            "custom_name": "",
            "dp_id": 124,
            "time": 1780412155259,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "regular_reporting",
            "custom_name": "",
            "dp_id": 125,
            "time": 1780412154848,
            "type": "enum",
            "value": "1"
          },
          {
            "code": "sleep_enum",
            "custom_name": "",
            "dp_id": 126,
            "time": 1780412155131,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "electricity",
            "custom_name": "",
            "dp_id": 127,
            "time": 1780412630789,
            "type": "value",
            "value": 0
          },
          {
            "code": "electricity_starttime",
            "custom_name": "",
            "dp_id": 128,
            "time": 1780412630789,
            "type": "value",
            "value": 1780412510
          },
          {
            "code": "electricity_endtime",
            "custom_name": "",
            "dp_id": 129,
            "time": 1780412630789,
            "type": "value",
            "value": 1780412630
          },
          {
            "code": "clearele_starttime",
            "custom_name": "",
            "dp_id": 130,
            "time": 1780397501067,
            "type": "value",
            "value": 0
          },
          {
            "code": "clearele_endtime",
            "custom_name": "",
            "dp_id": 131,
            "time": 1780397501067,
            "type": "value",
            "value": 0
          },
          {
            "code": "generator_mode",
            "custom_name": "",
            "dp_id": 132,
            "time": 1780412155131,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "capabilities",
            "custom_name": "",
            "dp_id": 133,
            "time": 1780412155052,
            "type": "raw",
            "value": "EwIDBwgJCwwNFRccHyEiJCcoKjA="
          },
          {
            "code": "error_code",
            "custom_name": "",
            "dp_id": 134,
            "time": 1780410693360,
            "type": "raw",
            "value": "AA=="
          },
          {
            "code": "light_sense",
            "custom_name": "",
            "dp_id": 135,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "specialtimer",
            "custom_name": "",
            "dp_id": 136,
            "time": 1780397501067,
            "type": "string",
            "value": ""
          },
          {
            "code": "vertical_wind",
            "custom_name": "",
            "dp_id": 137,
            "time": 1780412154848,
            "type": "enum",
            "value": "1"
          },
          {
            "code": "horizontal_wind",
            "custom_name": "",
            "dp_id": 138,
            "time": 1780412154848,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "wakeup_word",
            "custom_name": "",
            "dp_id": 139,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "wakeup_status",
            "custom_name": "",
            "dp_id": 140,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "volume",
            "custom_name": "",
            "dp_id": 141,
            "time": 1780401946340,
            "type": "value",
            "value": 28
          },
          {
            "code": "voice_switch",
            "custom_name": "",
            "dp_id": 142,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "voice_status",
            "custom_name": "",
            "dp_id": 143,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "examine_mode",
            "custom_name": "",
            "dp_id": 144,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "stores_mode",
            "custom_name": "",
            "dp_id": 145,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "sound_location",
            "custom_name": "",
            "dp_id": 146,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "smart_windmode",
            "custom_name": "",
            "dp_id": 147,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "mic_distance",
            "custom_name": "",
            "dp_id": 148,
            "time": 1780397501067,
            "type": "value",
            "value": 0
          },
          {
            "code": "filter_blocknotify",
            "custom_name": "",
            "dp_id": 149,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "max_volume",
            "custom_name": "",
            "dp_id": 150,
            "time": 1780397501067,
            "type": "value",
            "value": 1
          },
          {
            "code": "auto_gen_mode",
            "custom_name": "",
            "dp_id": 151,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "power_source",
            "custom_name": "",
            "dp_id": 152,
            "time": 1780397501067,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "ble_module_status",
            "custom_name": "",
            "dp_id": 153,
            "time": 1780401558193,
            "type": "enum",
            "value": "0"
          },
          {
            "code": "ble_module_mac",
            "custom_name": "",
            "dp_id": 154,
            "time": 1780397501067,
            "type": "string",
            "value": ""
          },
          {
            "code": "newwind_super",
            "custom_name": "",
            "dp_id": 155,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "light_senser_status",
            "custom_name": "",
            "dp_id": 156,
            "time": 1780397501067,
            "type": "bool",
            "value": false
          },
          {
            "code": "voice_language",
            "custom_name": "",
            "dp_id": 197,
            "time": 1780397501067,
            "type": "string",
            "value": ""
          },
          {
            "code": "virtual_period",
            "custom_name": "",
            "dp_id": 198,
            "time": 1780397501067,
            "type": "value",
            "value": 0
          },
          {
            "code": "virtual_electricity",
            "custom_name": "",
            "dp_id": 199,
            "time": 1780397501067,
            "type": "value",
            "value": 0
          }
        ]
    


    Where I stand, I desoldered the WBR3 from the USB and I get to upload latest version from github. Now I'm a bit lost. I don't know how to load the driver or template or what should I do now, sorry for asking if it is documented already. Let me know if you want me to test anything on this device.
  • #269 21916315
    Nauttor
    Level 3  
    Posts: 5
    Rate: 1
    This module is already loaded with the new firmware, but i can add one of the other 2 from the other 2 splits and extract the info you mentioned. Will do tomorrow.

    Thanks

    Added after 8 [minutes]:

    EDIT:
    Seems the API have it cached and I get this reply. Not sure if it is valid. Let me know.

    {
      "result": {
        "active_time": 1780397501,
        "bind_space_id": "291474605",
        "category": "kt",
        "create_time": 1780397501,
        "custom_name": "Split Living",
        "icon": "smart/icon/bay17107630453468cMu/89ed9839341260acccaba5f2925bb7b3.png",
        "id": "xxxxxx",
        "ip": "xxxxxx",
        "is_online": true,
        "lat": "0",
        "local_key": "xxxxx",
        "lon": "0",
        "model": "Artic",
        "name": "Split Pared Artic ",
        "product_id": "ytdek3ddm6hlig7r",
        "product_name": "Split Pared Artic ",
        "sub": false,
        "time_zone": "+02:00",
        "update_time": 1780397570,
        "uuid": "xxxxxxx"
      },


    
    {
        "model": "{\"modelId\":\"e1n87fm8\",\"services\":[{\"actions\":[],\"code\":\"\",\"description\":\"\",\"events\":[],\"name\":\"\",\"properties\":[{\"abilityId\":1,\"accessMode\":\"rw\",\"code\":\"switch\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_power3\",\"attribute\":\"1025\"},\"name\":\"电源\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":2,\"accessMode\":\"rw\",\"code\":\"temp_set\",\"description\":\"int32_100;\\n传输值=实际值*100\",\"extensions\":{\"iconName\":\"icon-dp_temp\",\"attribute\":\"1024\"},\"name\":\"目标温度\",\"typeSpec\":{\"type\":\"value\",\"max\":3100,\"min\":1600,\"scale\":2,\"step\":50,\"unit\":\"℃\"}},{\"abilityId\":3,\"accessMode\":\"ro\",\"code\":\"temp_current\",\"description\":\"int32_100\\n传输值=实际值*100\",\"extensions\":{\"iconName\":\"icon-dp_temp\",\"attribute\":\"1024\"},\"name\":\"当前温度\",\"typeSpec\":{\"type\":\"value\",\"max\":10000,\"min\":-10000,\"scale\":2,\"step\":50,\"unit\":\"℃\"}},{\"abilityId\":4,\"accessMode\":\"rw\",\"code\":\"mode\",\"description\":\"0:自动;\\n1:制冷;\\n2:除湿;\\n3:送风;\\n4:制热\",\"extensions\":{\"iconName\":\"icon-dp_mode\",\"attribute\":\"1024\"},\"name\":\"工作模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\"]}},{\"abilityId\":5,\"accessMode\":\"rw\",\"code\":\"fan_speed_enum\",\"description\":\"0:停止 \\n1:静音 \\n2:低风 \\n3:中低风 \\n4:中风\\n5:中高风\\n6:高风 \\n7:强劲\",\"extensions\":{\"iconName\":\"icon-a_mode_fan\",\"attribute\":\"1152\"},\"name\":\"风速风量\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\"]}},{\"abilityId\":7,\"accessMode\":\"rw\",\"code\":\"auto\",\"description\":\"0:手动\\n1:自动\",\"extensions\":{\"iconName\":\"icon-a_mode_basement\",\"attribute\":\"1024\"},\"name\":\"风速自动开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":8,\"accessMode\":\"rw\",\"code\":\"eco\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-eco\",\"attribute\":\"1024\"},\"name\":\"节能\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":9,\"accessMode\":\"rw\",\"code\":\"drying\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-huoyan\",\"attribute\":\"1024\"},\"name\":\"干燥\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":12,\"accessMode\":\"rw\",\"code\":\"heat\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_flower\",\"attribute\":\"1024\"},\"name\":\"电加热\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":13,\"accessMode\":\"rw\",\"code\":\"light\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_light\",\"attribute\":\"1024\"},\"name\":\"灯光\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":16,\"accessMode\":\"rw\",\"code\":\"beep\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-gaodiyin\",\"attribute\":\"1024\"},\"name\":\"蜂鸣\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":24,\"accessMode\":\"rw\",\"code\":\"temp_set_f\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_temp\",\"attribute\":\"1024\"},\"name\":\"目标华氏温度\",\"typeSpec\":{\"type\":\"value\",\"max\":88,\"min\":61,\"scale\":0,\"step\":1,\"unit\":\"℉\"}},{\"abilityId\":26,\"accessMode\":\"rw\",\"code\":\"health\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_fresh\",\"attribute\":\"1152\"},\"name\":\"健康\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":27,\"accessMode\":\"rw\",\"code\":\"cleaning\",\"description\":\"0:关闭;\\n1:开启\",\"extensions\":{\"iconName\":\"icon-dp_wash\",\"attribute\":\"1152\"},\"name\":\"蒸发清洁\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":31,\"accessMode\":\"rw\",\"code\":\"gear_vertical\",\"description\":\"1:上下送风;\\n2:上送风;\\n3:下送风;\\n6:环抱风;\\n8:当前位置定格;\\n9:上定格;\\n10:偏上定格;\\n11:中定格;\\n12:偏下定格;\\n13:下定格\\n(0、4、5、7仅用做固件补位用,实际UI上不生效)\",\"extensions\":{\"iconName\":\"icon-baifeng\",\"attribute\":\"1152\"},\"name\":\"上下矢量送风\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\"]}},{\"abilityId\":34,\"accessMode\":\"rw\",\"code\":\"gear_horizontal\",\"description\":\"1:左右送风;\\n2:左送风;\\n3:中送风;\\n4:右送风;\\n5:对送风;\\n8:当前位置定格;\\n9:左定格;\\n10:偏左定格;\\n11:中定格;\\n12:偏右定格;\\n13:右定格;\\n17:环抱风\\n(0、6、7、14、15、16仅用做固件补位用,UI上实际不用)\",\"extensions\":{\"iconName\":\"icon-baifeng\",\"attribute\":\"1152\"},\"name\":\"左右矢量送风\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\"]}},{\"abilityId\":39,\"accessMode\":\"rw\",\"code\":\"fresh_air_valve\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-a_power\"},\"name\":\"新风开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":40,\"accessMode\":\"rw\",\"code\":\"supply_fan_speed\",\"description\":\"0:停止\\n1:低风\\n2:中风\\n3:强劲\",\"extensions\":{\"iconName\":\"icon-a_mode_fan\"},\"name\":\"新风风量\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\"]}},{\"abilityId\":101,\"accessMode\":\"rw\",\"code\":\"temperature_type\",\"description\":\"0:摄氏度;\\n1:华氏度\",\"name\":\"温度类型\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":102,\"accessMode\":\"rw\",\"code\":\"eight_add_hot\",\"description\":\"0:关闭;\\n1:开启\",\"name\":\"8度制热\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":103,\"accessMode\":\"ro\",\"code\":\"heat_status\",\"description\":\"0:关闭;\\n1:开启\\n不需要做\",\"name\":\"电加热实际开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":104,\"accessMode\":\"rw\",\"code\":\"high_temperature_wind\",\"description\":\"0:关闭;\\n1:开启\\n是否开启高温风\",\"name\":\"高温风\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":105,\"accessMode\":\"rw\",\"code\":\"cool_feel_wind\",\"description\":\"0:关闭;\\n1:开启\\n\",\"name\":\"凉感风\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":106,\"accessMode\":\"rw\",\"code\":\"new_wind_auto_switch\",\"description\":\"0:关闭;\\n1:开启\",\"name\":\"新风自动开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":107,\"accessMode\":\"rw\",\"code\":\"weektimer1\",\"description\":\"8个周定时(仅开关)\",\"name\":\"周定时器1\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}},{\"abilityId\":108,\"accessMode\":\"ro\",\"code\":\"freshair_status\",\"description\":\"0:关闭;\\n1:脏堵\",\"name\":\"新风脏堵结果\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":109,\"accessMode\":\"rw\",\"code\":\"weektimer2\",\"description\":\"8个周定时2\",\"name\":\"周定时器2\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}},{\"abilityId\":110,\"accessMode\":\"ro\",\"code\":\"filter_block_status\",\"description\":\"0:关闭\\n1:脏堵\",\"name\":\"滤网脏堵检测结果\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":111,\"accessMode\":\"rw\",\"code\":\"ai_eco_switch\",\"description\":\"0:关闭;\\n1:开启\",\"name\":\"AI节能开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":112,\"accessMode\":\"ro\",\"code\":\"access_card_insert\",\"description\":\"0:未插卡;\\n1:已插卡\",\"name\":\"门禁卡插入\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":113,\"accessMode\":\"ro\",\"code\":\"upper_tem_limit\",\"description\":\"电控支持的温度上限;\\n面板在限制华氏温度时,对应的华氏温度默认为需求表中的无华氏+1\",\"name\":\"温度上限\",\"typeSpec\":{\"type\":\"value\",\"max\":3100,\"min\":2600,\"scale\":2,\"step\":100,\"unit\":\"°C\"}},{\"abilityId\":114,\"accessMode\":\"ro\",\"code\":\"lower_tem_limit\",\"description\":\"电控支持的温度下限;\\n面板在限制华氏温度时,对应的华氏温度默认为需求表中的无华氏+1\",\"name\":\"温度下限\",\"typeSpec\":{\"type\":\"value\",\"max\":2500,\"min\":1600,\"scale\":2,\"step\":100,\"unit\":\"°C\"}},{\"abilityId\":115,\"accessMode\":\"rw\",\"code\":\"wind_speed_percentage\",\"description\":\"静音:0-10\\n低速风:11-25\\n中低风:26-40\\n中速风:41-55\\n中高风:56-70\\n高速风:71-85\\n强劲:86-100\\n(不处理,不发送)\",\"name\":\"风速百分比\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"%\"}},{\"abilityId\":116,\"accessMode\":\"ro\",\"code\":\"ure\",\"description\":\"int32_100\\n传输值=实际值*100\",\"name\":\"室外环境温度\",\"typeSpec\":{\"type\":\"value\",\"max\":25000,\"min\":-5000,\"scale\":2,\"step\":100,\"unit\":\"°C\"}},{\"abilityId\":117,\"accessMode\":\"ro\",\"code\":\"external_unit_fanspeed\",\"description\":\"\",\"name\":\"室外风机转速\",\"typeSpec\":{\"type\":\"value\",\"max\":3000,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"rpm\"}},{\"abilityId\":118,\"accessMode\":\"rw\",\"code\":\"outdoor_fan_tarspeed\",\"description\":\"云端下发的外风机目标转速,内机传递给外机,数据缩小10倍:实际目标800rpm,下发值为80\",\"name\":\"外机风机目标转速\",\"typeSpec\":{\"type\":\"value\",\"max\":200,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":119,\"accessMode\":\"ro\",\"code\":\"compressor_frequency\",\"description\":\"\",\"name\":\"压缩机运行频率\",\"typeSpec\":{\"type\":\"value\",\"max\":1500,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":120,\"accessMode\":\"ro\",\"code\":\"outdoor_comptar_freqrun\",\"description\":\"mcu上报的外机自身计算的压机目标频率\",\"name\":\"外机实际压机目标频率\",\"typeSpec\":{\"type\":\"value\",\"max\":150,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":121,\"accessMode\":\"rw\",\"code\":\"outdoor_comptar_freqset\",\"description\":\"云端下发的压机目标频率,内机传递给外机,下发值为实际值\",\"name\":\"云端设定外机压机目标频率\",\"typeSpec\":{\"type\":\"value\",\"max\":150,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":122,\"accessMode\":\"rw\",\"code\":\"outdoor_eevtar_opendegree\",\"description\":\"云端下发的外机电子膨胀阀目标开度值,内机传给外机,下发值为实际值\",\"name\":\"外机电子膨胀阀目标开度\",\"typeSpec\":{\"type\":\"value\",\"max\":500,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":123,\"accessMode\":\"rw\",\"code\":\"soft_wind\",\"description\":\"只有0和1,其他默认为1\",\"name\":\"柔风\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\"]}},{\"abilityId\":124,\"accessMode\":\"rw\",\"code\":\"ai_eco_status\",\"description\":\"0:无需频繁上报节能算法相关的属性;\\n1:AI节能调频运行中;\\n2:AI节能PID运行中\\n(云端设置电控端AI节能运行状态\\n0:无需频繁上报节能算法相关的属性\\n1/2:AI节能运行中)\\n\",\"name\":\"AI节能运行状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\"]}},{\"abilityId\":125,\"accessMode\":\"rw\",\"code\":\"regular_reporting\",\"description\":\"0:开机、模式切换全属性上报;\\n1:定时1h全属性上报;\\n2:云端下指令要求全属性上报\",\"name\":\"固定间隔全量上报\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\"]}},{\"abilityId\":126,\"accessMode\":\"rw\",\"code\":\"sleep_enum\",\"description\":\"0:关闭;\\n1:标准模式;\\n2:老人模式;\\n3:小孩模式\",\"name\":\"睡眠\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\"]}},{\"abilityId\":127,\"accessMode\":\"ro\",\"code\":\"electricity\",\"description\":\"0-999999.99#0.01\\n每2分钟上报1次\",\"name\":\"电量\",\"typeSpec\":{\"type\":\"value\",\"max\":10000000,\"min\":0,\"scale\":2,\"step\":1,\"unit\":\"kwh\"}},{\"abilityId\":128,\"accessMode\":\"ro\",\"code\":\"electricity_starttime\",\"description\":\"电量事件\\n电控上报16:00~16:02,累计电量时间+2min\\n电控上报16:02~16:04,累计电量时间+2min\",\"name\":\"电力状态#开始时间\",\"typeSpec\":{\"type\":\"value\",\"max\":2147483647,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"s\"}},{\"abilityId\":129,\"accessMode\":\"ro\",\"code\":\"electricity_endtime\",\"description\":\"电控上报16:59~17:01,累计电量时间+2min,若云端时间为17点,则17点对应图表+2min\",\"name\":\"电力状态#截止时间\",\"typeSpec\":{\"type\":\"value\",\"max\":2147483647,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"s\"}},{\"abilityId\":130,\"accessMode\":\"rw\",\"code\":\"clearele_starttime\",\"description\":\"云端收到设备上报的电量数据后,下发清除累计电量时间;\\n电控上报什么时间,云端累计了,就下发什么\",\"name\":\"清除累计电量#开始时间\",\"typeSpec\":{\"type\":\"value\",\"max\":2147483647,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":131,\"accessMode\":\"rw\",\"code\":\"clearele_endtime\",\"description\":\"电控上报什么时间,云端累计了,就下发什么告诉电控去清除已累计的\",\"name\":\"清除累计电量#截止时间\",\"typeSpec\":{\"type\":\"value\",\"max\":2147483647,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":132,\"accessMode\":\"rw\",\"code\":\"generator_mode\",\"description\":\"0:关闭;\\n1:LV1;\\n2:LV2;\\n3:LV3;\\n4:LV4;\\n5:LV5;\\n6:LV6\",\"name\":\"发电机模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\"]}},{\"abilityId\":133,\"accessMode\":\"rw\",\"code\":\"capabilities\",\"description\":\"size=49;\\n0:所有功能都无;\\n1:光敏功能选择有无;\\n2:滤网脏堵提醒功能有无;\\n3:蒸发器自清洁功能有无;\\n4:智能除湿防霉变功能有无;\\n7:矢量送风功能有无;\\n8:左右送风功能有无;\\n9:7档风量功能有无;\\n10:自学习功能有无;\\n11:自动模式设定温可调功能有无;\\n12:除湿模式设定温可调功能有无;\\n13:送风模式设定温可调功能有无;\\n14:空气质量检测功能有无;\\n15:湿度功能有无;\\n16:智能风功能有无;\\n17:温湿双控功能有无;\\n18:恒温除湿功能有无;\\n19:AI 功能有无;\\n20:左右风速单独控制功能有无;\\n......\",\"name\":\"空调能力描述\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},{\"abilityId\":134,\"accessMode\":\"ro\",\"code\":\"error_code\",\"description\":\"size=99;\\n1:E0 室内外通信故障;\\n2:EC 室外模块间通信故障;\\n3:E3 室外盘管温度传感器故障;\\n4:E4 系统故障(缺氟);\\n5:E5 机型配置错误(变频)/外机压力保护(定频);\\n6:E7 室外环境温度传感器故障;\\n7:E8 室外排气温度传感器故障;\\n8:E9 室外IPM模块故障/压缩机驱动故障;\\n9:EF 室外直流风机故障;\\n10:EA 室外电流传感器故障;\\n11:EE 室外EEPROM故障;\\n12:EP 室外压缩机壳顶故障;\\n13:EU 室外电压传感器故障;\\n14:EH 室外吸气传感器故障;\\n15:P1 室外电压过高(过低)保护;\\n16:P2 室外电流保护;\\n17:P4 室外排气温度过高保护;\\n18:P5 室内盘管制冷过冷保护;\\n19:P6 室外盘管制冷过热保护;\\n20:P7 室内盘管制热过热保护;\\n......\",\"name\":\"故障码\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},{\"abilityId\":135,\"accessMode\":\"rw\",\"code\":\"light_sense\",\"description\":\"\",\"name\":\"光敏\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":136,\"accessMode\":\"rw\",\"code\":\"specialtimer\",\"description\":\"一个ON一个OFF\",\"name\":\"特殊定时器\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}},{\"abilityId\":137,\"accessMode\":\"rw\",\"code\":\"vertical_wind\",\"description\":\"0关闭;1打开\",\"name\":\"上下扫风\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\"]}},{\"abilityId\":138,\"accessMode\":\"rw\",\"code\":\"horizontal_wind\",\"description\":\"0关闭;1打开\",\"name\":\"左右扫风\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\"]}},{\"abilityId\":139,\"accessMode\":\"rw\",\"code\":\"wakeup_word\",\"description\":\"0:无自定义唤醒词;\\n1:有自定义唤醒词;\\n2:清除自定义唤醒词;\\n3:用户使用自定义唤醒词唤醒\",\"name\":\"自定义唤醒词状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\"]}},{\"abilityId\":140,\"accessMode\":\"ro\",\"code\":\"wakeup_status\",\"description\":\"0:开始学习;\\n1:第一次学习成功;\\n2:第二次学习成功;\\n3:第三次成功;\\n129:第一次失败;\\n130:第二次失败\",\"name\":\"唤醒词自学习状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"129\",\"130\"]}},{\"abilityId\":141,\"accessMode\":\"rw\",\"code\":\"volume\",\"description\":\"\",\"name\":\"语音播放音量\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":10,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":142,\"accessMode\":\"rw\",\"code\":\"voice_switch\",\"description\":\"0:关闭;\\n1:开启\",\"name\":\"语音开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":143,\"accessMode\":\"ro\",\"code\":\"voice_status\",\"description\":\"0:待机;\\n1:唤醒词/免唤醒词/拾音(STT);\\n2:识别成功(TTS);\\n3:反馈指令操作失败(TTS);\\n4:语音播放(TTS);\\n5:有声内容播放\",\"extensions\":{\"scope\":\"\"},\"name\":\"语音状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\"]}},{\"abilityId\":144,\"accessMode\":\"ro\",\"code\":\"examine_mode\",\"description\":\"0:关闭;\\n1:开启\",\"name\":\"商检模式\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":145,\"accessMode\":\"ro\",\"code\":\"stores_mode\",\"description\":\"0:关闭;\\n1:开启\",\"name\":\"卖场模式\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":146,\"accessMode\":\"ro\",\"code\":\"sound_location\",\"description\":\"1:方位1;\\n2:方位2;\\n3:方位3;\\n4:方位4;\\n5:方位5\\n0-4\",\"extensions\":{\"scope\":\"\"},\"name\":\"声源位置\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\"]}},{\"abilityId\":147,\"accessMode\":\"rw\",\"code\":\"smart_windmode\",\"description\":\"0:关闭;\\n1:风避人;\\n2:风吹人\",\"name\":\"智能风模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\"]}},{\"abilityId\":148,\"accessMode\":\"ro\",\"code\":\"mic_distance\",\"description\":\"电控上报的麦克风间距,需发送给语音模组,云端无需关心\",\"name\":\"MIC间距\",\"typeSpec\":{\"type\":\"value\",\"max\":255,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"mm\"}},{\"abilityId\":149,\"accessMode\":\"ro\",\"code\":\"filter_blocknotify\",\"description\":\"0:无需播报;\\n1:播报指定TTS\",\"name\":\"滤网脏堵语音播报\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":150,\"accessMode\":\"ro\",\"code\":\"max_volume\",\"description\":\"\",\"name\":\"语音最大音量\",\"typeSpec\":{\"type\":\"value\",\"max\":99999,\"min\":1,\"scale\":0,\"step\":1,\"unit\":\"\"}},{\"abilityId\":151,\"accessMode\":\"rw\",\"code\":\"auto_gen_mode\",\"description\":\"0:关闭;1:LV1;2:LV2;3:LV3;4:LV4;5:LV5;6:LV6;7:本次关闭;\",\"name\":\"自动发电机模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\"]}},{\"abilityId\":152,\"accessMode\":\"ro\",\"code\":\"power_source\",\"description\":\"0:电网;1:发电机\",\"name\":\"电力来源\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\"]}},{\"abilityId\":153,\"accessMode\":\"ro\",\"code\":\"ble_module_status\",\"description\":\"0:未配对;1:已配对\\n模组识别,上报到云端\",\"name\":\"蓝牙广播配对状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\"]}},{\"abilityId\":154,\"accessMode\":\"ro\",\"code\":\"ble_module_mac\",\"description\":\"三方蓝牙模块的蓝牙mac地址\",\"name\":\"蓝牙广播三方mac地址\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}},{\"abilityId\":155,\"accessMode\":\"rw\",\"code\":\"newwind_super\",\"description\":\"新风超强风开关,功能处理同 P7挂机\",\"name\":\"新风超强风开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":156,\"accessMode\":\"ro\",\"code\":\"light_senser_status\",\"description\":\"0:白天;\\n1:黑夜\",\"extensions\":{\"scope\":\"\"},\"name\":\"光敏实际状态\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":197,\"accessMode\":\"ro\",\"code\":\"voice_language\",\"description\":\"显示语音模块的版本信息\",\"name\":\"语种信息\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}},{\"abilityId\":198,\"accessMode\":\"rw\",\"code\":\"virtual_period\",\"description\":\"仅用作云端电量相关运行时间的计算和传输,和显示;\\n不和设备进行交互;\",\"name\":\"虚拟运行时间-仅云端\",\"typeSpec\":{\"type\":\"value\",\"max\":99999999,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"秒\"}},{\"abilityId\":199,\"accessMode\":\"ro\",\"code\":\"virtual_electricity\",\"description\":\"仅供云端平均电量计算使用,不与设备进行通信;\\n虚拟dp,不做实际的上报下发。\",\"name\":\"虚拟电量-仅云端\",\"typeSpec\":{\"type\":\"value\",\"max\":10000000,\"min\":0,\"scale\":2,\"step\":1,\"unit\":\"\"}}]}]}"
      }
    
  • #270 21916958
    Nauttor
    Level 3  
    Posts: 5
    Rate: 1
    >>21916305

    Hi,

    I loaded the driver/startdriver TCL, I see the confirmation is loaded, but it seems there is no reaction when I sent ACMODE 0 or any other parameter. :(

Topic summary

✨ The discussion centers on flashing and customizing the WiFi module (WBR3 on TCWBRCU1 board) of a Della Optima Series minisplit air conditioner to run OpenBeken firmware for local, cloud-free control. Initial assumptions about the device using TuyaMCU were revised after UART traffic analysis revealed a custom protocol similar to TCL AC units, leading to the development and testing of a dedicated TCL driver in OpenBeken. The user successfully desoldered the WBR3 module, backed up its firmware using appropriate Realtek tools (ltchiptool and AmebaZ2 PG Tool), and flashed OpenBeken firmware. Key datapoints such as power, mode, fan speed, temperature, humidity, and PM2.5 were identified from the Tuya IoT platform, but the device uses a binary packet protocol rather than standard Tuya DPIDs.

The community collaboratively developed and refined the TCL driver, enabling control of power, mode (cool, heat, dry, fan, auto), fan speeds (mapped to Smart Life app presets including auto, mute, mid-low to turbo), swing positions (vertical and horizontal), buzzer (beep) on/off, and display brightness on/off. The driver was integrated with Home Assistant via MQTT with discovery support, allowing control and state feedback. Challenges included correct UART parity settings (even parity), packet parsing, and mapping driver values to Home Assistant entities. The user provided detailed logs, testing results, and UI feedback, leading to improvements in MQTT integration, UI elements for fan speed and swing controls, and bug fixes for state synchronization. The project also discussed future enhancements like better OBK UI integration, thermostat card improvements, and potential DIY thermostat projects using OBK on ESP32 with external sensors.

Overall, the thread documents a successful reverse engineering and firmware replacement effort for the Della minisplit WiFi module, enabling local control with OpenBeken, full MQTT/Home Assistant integration, and detailed community-driven driver development for a non-standard protocol device.
Generated by the language model.

FAQ

TL;DR: If you have a Della mini split with a WBR3 module, you can flash OpenBeken locally, back up the original 2 MB flash first, and then control cooling, heat, fan, swing, buzzer, display, and even GEN mode. As one developer put it, "It worked!" This FAQ is for owners who want cloud-free control without losing core AC functions. [#21551100]

Why it matters: This thread shows that some Della WiFi modules are not standard TuyaMCU devices, so using the correct Realtek tools and the TCL driver is the difference between a working local AC and a dead-end flash attempt.

Option Chip family Fit/use in thread Main caveat
WBR3 Realtek RTL8720CF/AmebaZ2 Native Della module; fully tested with OBK TCL driver Fragile pads and traces during wiring
WBR1 on TCLWBR Realtek RTL8720CF Also worked after correct VIN/VCC power wiring Needed both 5 V and 3.3 V path active
WB3S Beken Considered compatible replacement for TuyaMCU-style UART layout Must verify 3.3 V, GND, reset, and UART pin match
CB3S Beken Considered compatible replacement with OBK support Same pinout checks as WB3S

Key insight: The Della TCWBRCU1/WBR3 setup in this thread was ultimately treated as a custom TCL serial protocol, not a normal TuyaMCU datapoint bridge. That is why flashing succeeded only after using Realtek-specific tools and why control required the OpenBeken TCL driver, not GPIO templates. [#21549462]

Quick Facts

  • The confirmed stock backup sizes were 384 KB ROM and 2 MB flash, and the 2 MB dump was verified to boot before flashing OpenBeken. [#21544743]
  • The working UART settings for the TCL protocol were 9600 baud, 8 data bits, even parity, 1 stop bit (9600 8E1); parity was a real failure point until fixed. [#21550462]
  • The Della unit discussed was a 9,000 BTU heat/cool mini split on 115 V, 60 Hz power, using a removable USB WiFi/Bluetooth module with a WBR3 soldered to a TCWBRCU1 carrier. [#21536655]
  • Internal target temperature in the TCL protocol is Celsius only, with a usable command range of 16–31 °C; entering 75 or 77 as if they were Fahrenheit produced wrong results such as 81 °F and 84 °F on the indoor display. [#21553236]
  • Reverse-engineered GEN mode testing showed approximate winter heating limits of 1.2 kW at L1, 1.8 kW at L2, 2.3 kW at L3, and 2.9 kW with no GEN limit, based on clamp monitoring. [#21781377]

How do I flash a Della mini split WBR3 WiFi module on the TCWBRCU1 board with OpenBeken step by step?

Use Realtek tools, not BK7231 tools. 1. Back up the stock WBR3 first with the Realtek workflow, because the verified flash dump was 2 MB and recoverable. 2. Flash an OpenRTL87X0C build that includes the TCL driver or update later by OTA. 3. Start the driver with startDriver TCL, then test commands such as ACMode 1, FANMode 3, and TargetTemperature 24. The thread showed this sequence working on the Della 048-TP-9K2V-23S-IN after successful backup and flash. [#21547316]

What is TuyaMCU, and how is it different from the custom TCL serial protocol used by some Della mini split WiFi modules?

"TuyaMCU is a host-MCU protocol layer that lets a WiFi module exchange standardized datapoints with a separate appliance controller, usually over UART." In this thread, that turned out not to be the whole story for the Della mini split. The WBR3 could run OpenBeken, but the AC control path matched a custom TCL serial protocol instead of normal TuyaMCU DPID traffic, which explained why TuyaMCU commands did nothing while the TCL driver worked. [#21549462]

Why does a Della WBR3 module get stuck on "getting bus" in BK7231 tools, and which flashing tools should I use for Realtek RTL8720CF or AmebaZ2 instead?

It gets stuck because BK7231 tools do not support Realtek AmebaZ2 chips like the WBR3. One helper stated plainly that Easy Flasher does not back up or write Realtek chips. The working toolchain in the thread was ltchiptool for backup and AmebaZ2 PG Tool for writing on RTL8720CF/AmebaZ2 hardware, which immediately solved the stalled "getting bus" problem. [#21544726]

What is a DPID in the Tuya ecosystem, and how were the Della mini split datapoints like power, mode, windspeed, and swing identified in this thread?

"DPID is a Tuya datapoint identifier that maps a cloud-visible property to a device function, type, and value range." The thread identified the Della AC datapoints from the Tuya IoT Platform and later from the product data model. Examples included DPID 1 power, 4 mode, 5 windspeed, 113 vertical swing, 114 horizontal swing, and 120 GEN mode, each with enum or value ranges shown by the Tuya schema. [#21536711]

How can I back up the stock firmware from a WBR3 or WBR1 module before flashing OpenBeken?

Back it up with the Realtek toolchain before you flash anything. The proven path was to read both the ROM and full flash, then verify the sizes: the ROM should be 384 KB and the flash dump 2 MB on the tested WBR3. That backup later booted successfully, which gave the thread a recovery path when hardware pads were lifted during rework. [#21544743]

Which OpenBeken commands were used to control the Della mini split after flashing, including ACMode, FANMode, SwingH, SwingV, TargetTemperature, Buzzer, Display, and Gen?

The working commands were startDriver TCL, ACMode, FANMode, SwingH, SwingV, TargetTemperature, Buzzer, Display, and later Gen. Confirmed examples included ACMode 1 for cool, ACMode 3 for fan-only, TargetTemperature 24, Buzzer 0, Display 0, and the test PR command Gen 0 through Gen 3. Those commands were validated progressively in the thread and then exposed to Home Assistant through MQTT discovery. [#21761114]

Why did TargetTemperature seem wrong when entering Fahrenheit values in OpenBeken, and how does the Della TCL protocol actually handle temperature internally?

It seemed wrong because OpenBeken expected Celsius while the indoor display was showing Fahrenheit. The TCL protocol stores target temperature as a 4-bit value for 16–31 °C, so entering TargetTemperature 75 was interpreted as a Celsius-side command, wrapped internally, and produced values like 29 °C, which appeared as about 84 °F on the unit. Once the user switched to TargetTemperature 24 and 25, the display correctly showed 75 °F and 77 °F. [#21553392]

What was the correct UART configuration for the Della TCL mini split protocol on Realtek, including baud rate and parity, and why did parity matter?

The correct serial format was 9600 8E1: 9600 baud, 8 data bits, even parity, 1 stop bit. Parity mattered because the first TCL driver builds used the wrong parity setting, so commands were sent but not understood correctly by the AC controller. Once even parity was fixed, the unit started beeping on valid commands and mode and fan tests began to work immediately. [#21551100]

How do Home Assistant MQTT discovery and the OpenBeken TCL driver work together for a Della mini split, and what commands or settings are needed to make the climate entity appear?

Start the TCL driver first, then trigger Home Assistant discovery. The thread used startDriver TCL and then either Home Assistant discovery from the UI or the command scheduleHADiscovery 1. After that, Home Assistant created a climate entity and additional controls, and later builds added mode, fan, horizontal swing, and vertical swing support to the discovered entity. [#21561364]

What troubleshooting steps helped when Home Assistant showed Della mini split state updates but power-on or mode changes did not work correctly?

The main fixes were driver-side, not MQTT-side. Early on, Home Assistant could show state changes from OBK, but power-on and mode commands were incomplete because the TCL mode parse and mode publishing were not fully implemented. Once the driver parsed AC mode correctly, Home Assistant could both read OBK state and write changes back, including on/off and mode switching. [#21563089]

WB3S vs CB3S vs WBR3 for a Della mini split replacement module — which options were considered compatible with OpenBeken and what pinout checks matter most?

WBR3 was the native tested module, but WB3S and CB3S were both considered workable OpenBeken replacements. The key check was not brand alone; it was whether GND, 3.3 V, reset, and UART matched the original footprint and host board expectations. The thread specifically noted that other GPIO positions may differ, but the basic UART-based control path could still work if those core pins lined up. [#21548807]

How can I capture UART traffic between the WiFi module and the indoor unit MCU on a Della mini split without a full logic analyzer?

You can capture each UART lane separately with a USB-UART adapter if you match the serial settings. One developer explained that you do not need a full logic analyzer to start; you can connect RX to the line you want to observe, set the correct baud, and record module-to-MCU and MCU-to-module traffic independently. For this TCL setup, correct serial settings mattered, especially parity. [#21550113]

What caused the WBR1 TCLWBR board to crash when starting UART-based OpenBeken drivers, and how was the missing VCC or VIN power connection eventually identified?

The crash came from powering the WBR1 incorrectly during bench testing. The user had supplied only 3.3 V for flashing-style setup, but the TCLWBR adapter also needed the VIN/VCC path active from 5 V so the board’s power scheme matched normal operation. Once they powered the adapter board correctly instead of only the WBR1 core rail, the TCL driver started normally and the module worked. [#21579198]

Where can I find replacement Della-compatible WiFi modules like WBR3, WBR1, or Pioneer USB adapter boards if I damage the original during flashing?

One confirmed source was Pioneer’s replacement USB WiFi/BLE dongle for WYT/WT systems, which a later poster said used the same style of module and compatible firmware family. Earlier in the thread, users also sourced WBR3 replacements from AliExpress after damaging traces and pads during desoldering. The practical lesson was to buy a spare before risky rework, because these module pads are fragile. [#21766471]

How was the GEN or generator mode on supported Della mini splits reverse engineered, and what do the L1, L2, and L3 power limits correspond to in practice?

GEN mode was inferred from the Tuya schema, then tested in a custom OpenBeken PR with Gen 0 to Gen 3, and finally validated by watching real power draw. Practical results on one unit were about 1.2 kW for L1, 1.8 kW for L2, 2.3 kW for L3, and 2.9 kW with no GEN limit during cold-weather heating. The user mapped L1, L2, and L3 to roughly 30%, 50%, and 80% compressor power limits. [#21762524]
Generated by the language model.
ADVERTISEMENT