logo elektroda
logo elektroda
X
logo elektroda

Home Heating Gas Thermostats Compatible with OpenBeken or Custom Firmware

gandi69 1359 37
ADVERTISEMENT
  • #31 21737091
    gandi69
    Level 2  
    Info:CMD:[WebApp Cmd 'tuyaMcu_sendQueryState' Result] OK
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 01 01 00 01 01 12
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 1 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 1
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 03 02 00 04 00 00 00 B6 D0
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 3 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 182
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 04 04 00 01 01 18
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 4 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 1
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 05 04 00 01 00 18
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 5 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 08 01 00 01 00 18
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 8 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 0D 01 00 01 00 1D
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 13 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 10 05 00 01 00 24
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 16 type 5-bitmap len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 14 02 00 04 FF FF FF FB 23
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 20 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 -5
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 15 02 00 04 00 00 00 1C 48
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 21 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 28
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 19 04 00 01 00 2C
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 25 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 1A 01 00 01 00 2A
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 26 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 1F 01 00 01 00 2F
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 31 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 29 04 00 01 01 3D
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 41 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 1
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 2A 04 00 01 02 3F
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 42 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 2
    Info:TuyaMCU:Received: 55 AA 03 07 00 24 2B 00 00 20 02 02 00 78 06 1E 00 D2 07 1E 00 78 0C 1E 00 78 11 00 00 78 17 00 00 78 08 00 00 78 17 00 00 78 50
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 43
    Info:TuyaMCU:ParseState: id 43 type 0-raw len 32
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 65 01 00 01 00 75
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 101 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 69 02 00 04 00 00 00 05 85
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 105 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 5
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 6B 02 00 04 00 00 00 1C 9E
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 107 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 28
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 02 02 00 04 00 00 00 78 91
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 2 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 120

    Added after 3 [minutes]:

    And this is the config from the newer unit along with its firmware backup

    Info:CMD:[WebApp Cmd 'tuyaMcu_sendQueryState' Result] OK
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 01 01 00 01 01 12
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 1 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 1
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 02 02 00 04 00 00 00 EB 04
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 2 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 235
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 03 02 00 04 00 00 00 A7 C1
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 3 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 167
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 04 04 00 01 00 17
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 4 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 05 04 00 01 01 19
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 5 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 1
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 09 01 00 01 00 19
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 9 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 0B 05 00 01 00 1F
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 11 type 5-bitmap len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 0F 02 00 04 00 00 00 3C 62
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 15 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 60
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 13 02 00 04 FF FF FF F6 1D
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 19 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 -10
    Info:TuyaMCU:Received: 55 AA 03 07 00 24 69 00 00 20 06 00 00 C8 08 00 00 A0 0B 1E 00 A0 0C 1E 00 A0 11 00 00 DC 16 00 00 A0 08 00 00 DC 17 00 00 A0 FD
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 43
    Info:TuyaMCU:ParseState: id 105 type 0-raw len 32
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 66 02 00 04 00 00 00 3C B9
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 102 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 60
    Info:TuyaMCU:Received: 55 AA 03 07 00 08 65 02 00 04 00 00 00 0A 86
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 15
    Info:TuyaMCU:ParseState: id 101 type 2-val len 4
    Info:TuyaMCU:ParseState: int32 10
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 67 01 00 01 00 77
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 103 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 6D 01 00 01 01 7E
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 109 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 1
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 6C 01 00 01 00 7C
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 108 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 6A 04 00 01 03 80
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 106 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 3
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 6E 04 00 01 00 81
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 110 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 0
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 6B 04 00 01 01 7F
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 107 type 4-enum len 1
    Info:TuyaMCU:ParseState: byte 1
    Info:TuyaMCU:Received: 55 AA 03 07 00 05 68 01 00 01 00 78
    Info:TuyaMCU:ProcessIncoming[v=3]: cmd 7 (State) len 12
    Info:TuyaMCU:ParseState: id 104 type 1-bool len 1
    Info:TuyaMCU:ParseState: byte 0
  • ADVERTISEMENT
  • #32 21737264
    gandi69
    Level 2  
    Does anyone have a config I can use a base from another thermostat maybe?

    mine is currently like this yet it doesnt really behave itself:

    // ======================================================
    // TuyaMCU Configuration for Thermostat
    // Fixed Target Temperature Slider + Clean Rules
    // ======================================================

    // -------------------- Startup --------------------
    startDriver TuyaMCU
    tuyaMcu_defWiFiState 4
    // tuyaMcu_setBaudRate 115200 // Uncomment if required for your MCU


    // =====================================================
    // POWER (DPID 1)
    // =====================================================
    setChannelLabel 1 "Power"
    setChannelType 1 Toggle
    linkTuyaMCUOutputToChannel 1 val 1
    linkTuyaMCUInputToChannel 1 val 1



    // =====================================================
    // TARGET TEMPERATURE (DPID 2)
    // =====================================================

    // ---- Channel 2: Dimmer-type slider linked directly to MCU ----
    setChannelLabel 2 "Target Temperature"
    setChannelType 2 Dimmer
    // MCU expects °C×10. We'll map 5.0–35.0 °C → 50–350
    tuyaMcu_setDimmerRange 50 350
    setChannelMin 2 50
    setChannelMax 2 350
    setChannelStep 2 5
    // Automatically synchronize both directions
    linkTuyaMCUOutputToChannel 2 val 2
    linkTuyaMCUInputToChannel 2 val 2

    // ---- Channel 21: readback in °C (converted from x10) ----
    setChannelLabel 21 "Target °C →"
    setChannelType 21 Temperature_div10
    linkTuyaMCUOutputToChannel 2 val 21



    // =====================================================
    // CURRENT TEMPERATURE (DPID 3)
    // =====================================================
    setChannelLabel 3 "← Current °C"
    setChannelType 3 Temperature_div10
    linkTuyaMCUOutputToChannel 3 val 3



    // =====================================================
    // WORK MODE (DPID 4) + STATE (DPID 5)
    // =====================================================
    setChannelLabel 4 "Work Mode"
    setChannelType 4 Enum
    setEnumLabel 4 0 "Home"
    setEnumLabel 4 1 "Auto"
    setEnumLabel 4 2 "Temporary"
    linkTuyaMCUOutputToChannel 4 val 4
    linkTuyaMCUInputToChannel 4 val 4

    setChannelLabel 5 "Work State"
    setChannelType 5 Enum
    linkTuyaMCUOutputToChannel 5 val 5



    // =====================================================
    // EXTRAS
    // =====================================================
    setChannelLabel 6 "Child Lock"
    setChannelType 6 Toggle
    linkTuyaMCUOutputToChannel 9 val 6
    linkTuyaMCUInputToChannel 6 val 9

    setChannelLabel 7 "Fault Alarm"
    setChannelType 7 Fault
    linkTuyaMCUOutputToChannel 11 val 7

    setChannelLabel 8 "Upper Temp Limit"
    setChannelType 8 Temperature
    linkTuyaMCUOutputToChannel 15 val 8
    linkTuyaMCUInputToChannel 8 val 15

    setChannelLabel 9 "Temp Correction"
    setChannelType 9 Temperature_div10
    linkTuyaMCUOutputToChannel 19 val 9
    linkTuyaMCUInputToChannel 9 val 19

    setChannelLabel 10 "Start Differential"
    setChannelType 10 Temperature_div10
    linkTuyaMCUOutputToChannel 101 val 10
    linkTuyaMCUInputToChannel 10 val 101

    setChannelLabel 11 "Sensor Limit Temp"
    setChannelType 11 Temperature
    linkTuyaMCUOutputToChannel 102 val 11
    linkTuyaMCUInputToChannel 11 val 102

    setChannelLabel 12 "Anti-Frost"
    setChannelType 12 Toggle
    linkTuyaMCUOutputToChannel 103 val 12
    linkTuyaMCUInputToChannel 12 val 103

    setChannelLabel 13 "Factory Reset"
    setChannelType 13 Button
    addEventHandler OnClick13 sendTuyaMCUValue 104 1

    setChannelLabel 15 "Backlight"
    setChannelType 15 Enum
    linkTuyaMCUOutputToChannel 106 val 15

    setChannelLabel 16 "Workdays"
    setChannelType 16 Enum
    linkTuyaMCUOutputToChannel 107 val 16

    setChannelLabel 17 "Output Polarity"
    setChannelType 17 Toggle
    linkTuyaMCUOutputToChannel 108 val 17
    linkTuyaMCUInputToChannel 17 val 108

    setChannelLabel 18 "Sound"
    setChannelType 18 Toggle
    linkTuyaMCUOutputToChannel 109 val 18
    linkTuyaMCUInputToChannel 18 val 109

    setChannelLabel 19 "Sensor Select"
    setChannelType 19 Enum
    linkTuyaMCUOutputToChannel 110 val 19
    linkTuyaMCUInputToChannel 19 val 110



    // =====================================================
    // RULES (Work-mode presets)
    // =====================================================
    removeEventHandlerAll

    // Mode 0 = Home → 21.0 °C
    addEventHandler Channel4==0 sendTuyaMCUValue 2 210

    // Mode 1 = Auto → 27.0 °C
    addEventHandler Channel4==1 sendTuyaMCUValue 2 270

    // Mode 2 = Temporary → 18.0 °C
    addEventHandler Channel4==2 sendTuyaMCUValue 2 180

    // ======================================================
  • ADVERTISEMENT
  • ADVERTISEMENT
  • #34 21737711
    gandi69
    Level 2  
    when you guys get chance can see if you can have a look at the second backup? thanks in advance
  • ADVERTISEMENT
  • #36 21737755
    gandi69
    Level 2  
    Thank you, doesn’t look like these dpld values align to me. Id2 is not the set the desired temperature
  • #37 21737835
    divadiow
    Level 37  
    hmm OK. I'm not too sure what's amiss.

    I don't know if this'll help but here something new:

    I've started again with each backup, pairing with the product key the MCU sends for each device. On initial pairing of the backup you sent me, the motif was grey again, but I noticed in the Get Update Information return from Tuya that a different firmware key (not product key - firmware key always starts with "key") was listed - key30d7e434e7084 instead of keyjkajwawthq4f5. keyjkajwawthq4f5 is seen in the boot log of your 1st device.

    Upon second pairing (in this session - probably 4th/5th total) the motif is now yellow in the app. I can't explain why.

    App screen for heating control showing 20.0°C set temperature

    BUT the schema remains the same. So seemingly nothing else to go on with that.

    I made a gandi69 pack of each firmware dump (1st one is new reset dump) alongside the raw responses from Tuya for each. 1_alt named json files are the yellow motif session responses.

    Ultimately might not help where you're at now, but it's at least a bunch of resources.

    List of JSON and BIN files related to thermostats and device data

    backup file naming logic is xxxx_<firmwarekey>_<productkey>_<factory_pin>.xxx.bin
  • #38 21740130
    gandi69
    Level 2  
    is there any way I can bind a button to just pass a simple command to the mcu?

    ie: this tuyaMcu_sendState 1 bool 0

    or tuyaMcu_sendState 1 bool 1

    Ive got a few bits working on this but I cant turn the thermostat off and on without manually entering the above commands

    this is my autoexec:

    # ======================================================
    # OpenBeken Thermostat Config
    # ======================================================

    # --- Start Tuya driver and free UART TX ---
    startDriver TuyaMCU
    tuyaMcu_defWiFiState 4
    tuyaMcu_setBaudRate 9600
    logger
    baud_rate 0

    # =====================================================
    # POWER (DPID 1)
    # =====================================================
    setChannelLabel 1 "Power"
    setChannelType 1 Toggle
    linkTuyaMCUInputToChannel 1 val 1
    linkTuyaMCUOutputToChannel 1 val 1
    setFlag 10 1
    setChannelFlag 1 0

    # --- Power control rules ---
    removeEventHandlerAll
    addEventHandler Channel1==0 tuyaMcu_sendState 1 bool 0
    addEventHandler Channel1==1 tuyaMcu_sendState 1 bool 1

    # =====================================================
    # TARGET TEMPERATURE (DPID 2)
    # =====================================================
    setChannelLabel 2 "Target °C"
    setChannelType 2 Dimmer1000
    setChannelMin 2 100
    setChannelMax 2 300
    setChannelStep 2 10
    tuyaMcu_setDimmerRange 100 300
    linkTuyaMCUOutputToChannel 2 val 2
    linkTuyaMCUInputToChannel 2 val 2

    # =====================================================
    # CURRENT TEMPERATURE (DPID 3)
    # =====================================================
    setChannelLabel 3 "Current °C"
    setChannelType 3 Readonly
    setChannelMultiplier 3 0.1
    linkTuyaMCUOutputToChannel 3 val 3

    # =====================================================
    # MODE SELECTION (DPID 4)
    # =====================================================
    setChannelLabel 4 "Mode"
    setChannelType 4 Enum
    setEnumLabel 4 0 "Manual"
    setEnumLabel 4 1 "Program"
    setEnumLabel 4 2 "Temporary"
    setEnumLabel 4 3 "Leave Home"
    linkTuyaMCUOutputToChannel 4 val 4
    linkTuyaMCUInputToChannel 4 val 4

    # =====================================================
    # HEATING ACTIVE STATE (DPID 5)
    # =====================================================
    setChannelLabel 5 "Heating"
    setChannelType 5 Readonly
    linkTuyaMCUOutputToChannel 5 val 5
    setChannelHide 5 1

    # =====================================================
    # ANTI-FROST (DPID 103)
    # =====================================================
    setChannelLabel 6 "Anti-frost"
    setChannelType 6 Toggle
    linkTuyaMCUOutputToChannel 6 val 103
    linkTuyaMCUInputToChannel 6 val 103

    # =====================================================
    # BACKLIGHT (DPID 106)
    # =====================================================
    setChannelLabel 7 "Backlight"
    setChannelType 7 Enum
    setEnumLabel 7 0 "Dark"
    setEnumLabel 7 1 "Low"
    setEnumLabel 7 2 "Middle"
    setEnumLabel 7 3 "High"
    linkTuyaMCUOutputToChannel 7 val 106
    linkTuyaMCUInputToChannel 7 val 106

    # =====================================================
    # OUTPUT INVERSE (DPID 108)
    # =====================================================
    setChannelLabel 8 "Output Inverse"
    setChannelType 8 Toggle
    linkTuyaMCUOutputToChannel 8 val 108
    linkTuyaMCUInputToChannel 8 val 108

    # =====================================================
    # SOUND (DPID 109)
    # =====================================================
    setChannelLabel 9 "Sound"
    setChannelType 9 Toggle
    linkTuyaMCUOutputToChannel 9 val 109
    linkTuyaMCUInputToChannel 9 val 109

    # =====================================================
    # SENSOR SELECTION (DPID 110)
    # =====================================================
    setChannelLabel 10 "Sensor"
    setChannelType 10 Enum
    setEnumLabel 10 0 "Internal"
    setEnumLabel 10 1 "External"
    setEnumLabel 10 2 "Both"
    linkTuyaMCUOutputToChannel 10 val 110
    linkTuyaMCUInputToChannel 10 val 110

    # =====================================================
    # ERROR STATUS (DPID 11)
    # =====================================================
    setChannelLabel 11 "Error"
    setChannelType 11 Readonly
    linkTuyaMCUOutputToChannel 11 val 11
    setChannelHide 11 1

    # =====================================================
    # MODE PRESET RULES
    # =====================================================
    addEventHandler Channel4==0 tuyaMcu_sendState 2 val 210
    addEventHandler Channel4==1 tuyaMcu_sendState 2 val 230
    addEventHandler Channel4==2 tuyaMcu_sendState 2 val 180
    addEventHandler Channel4==3 tuyaMcu_sendState 2 val 150

    # =====================================================
    # DONE
    # =====================================================
    logger.log Thermostat configuration applied (no delay)

    Added after 16 [minutes]:

    AddEvent Handler is non existent so that out of the window.

    I think this device may have to be strictly MQTT from Home Assistant or manual controls, nothing really works too well via the webui on the device itself.

Topic summary

The discussion focuses on identifying home heating gas thermostats compatible with OpenBeken (OBK) or similar custom firmware to replace inflexible Tuya-based units. Most Tuya devices can be flashed with OBK, but newer or less common models may require additional hardware modifications. The ME81H thermostat is referenced as a known model with existing configurations, though it is not recommended due to reliability concerns. Alternatives such as Minco and Moes thermostats are explored, with Minco units favored for their similarity to ME81H and better build quality. Users report soldering ESP8266/ESP32 modules (e.g., ESP-12F, ESP8684-WROOM-01C) to enable custom firmware. The Realtek 8710c MCU is discussed as a target for firmware replacement, with TuyaMCU protocol support in OpenRTL allowing communication over UART (RX, TX, VCC, GND). Extracting and mapping Tuya datapoint IDs (dpIDs) is critical for configuring device functions like power and temperature control. Backups of device firmware and keys (product key, factory pin) are used with tools like Tuya MCU Debugging Assistant to obtain dpID schemas. Challenges include hardware fragility during desoldering and differences in app motifs linked to firmware keys. Community members share partial configs and suggest developing tools to convert Tuya JSON schemas into OpenBeken autoexec scripts for easier setup. Overall, the process involves hardware modification, firmware flashing, dpID extraction, and manual configuration to achieve cloud-free, customizable thermostat control.
Summary generated by the language model.
ADVERTISEMENT