logo elektroda
logo elektroda
X
logo elektroda

Tuya SmartLife Universal IR+RF WIFI REMOTE Control Smatrul PCB CODE S11-SH4-CBU-V2.4

hakimmuhiddin 7536 31
ADVERTISEMENT
  • #31 21609204
    abeta
    Level 1  
    Hello,
    here's another variant of the S11 bought on taobao.
    After some tinkering I can not seem to find a way to restore power from USB (still workin from UART); any help is appreciated.
    Cheers
    Tuya SmartLife Universal IR+RF WIFI REMOTE Control Smatrul PCB CODE S11-SH4-CBU-V2.4

    PS: working on compiling an esphome file from previous posts :
    Quote:

    esphome:
    name: tuya_rf_blaster_s11

    external_components:
    - source:
    type: local
    path: components
    components: [ tuya_rf ]

    bk72xx:
    board: cbu
    framework:
    version: latest

    logger:

    web_server:
    version: 3

    captive_portal:

    mdns:

    api:
    encryption:
    key: !secret esphome_encryption_key

    ota:
    platform: esphome
    password: !secret ota_password

    wifi:
    ssid: !secret wifi_ssid
    password: !secret wifi_password

    #status led
    output:
    platform: gpio
    id: status
    pin: P9

    #reset button, it has an external pull-down in my board
    binary_sensor:
    - platform: gpio
    id: reset_button
    pin: P23

    #rf transmitter and receiver
    tuya_rf:
    id: rf
    receiver_disabled: true
    dump: raw

    #for the ir leds
    remote_transmitter:
    id: ir
    pin: P7
    carrier_duty_percent: 50%

    #for the ir receiver
    remote_receiver:
    pin:
    number: P8
    inverted: true
    dump: nec

    sensor:
    - platform: uptime
    name: Uptime

    button:
    - platform: restart
    name: "restart"
    - platform: template
    name: irtest
    web_server:
    sorting_weight: 1000
    on_press:
    - remote_transmitter.transmit_nec:
    transmitter_id: ir
    address: 0xFA05
    command: 0xEB14
    command_repeats: 1
    - platform: template
    name: turn off receiver
    web_server:
    sorting_weight: 1010
    on_press:
    - tuya_rf.turn_off_receiver:
    - platform: template
    name: turn on receiver
    web_server:
    sorting_weight: 1020
    on_press:
    - tuya_rf.turn_on_receiver:
    - platform: template
    name: play/pause
    web_server:
    sorting_weight: 10
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    #code: [6042,-1106,391,-1106,391,-391,1106,-333,1106,-391,1106,-391,1106,-333,1106,-391,1106,-391,1106,-1106,391,-1106,391,-391,1106,-1106,391,-1106,391,-391,1106,-1106,391,-391,1106,-1106,391,-391,1106,-1106,391,-1106,391,-1106,391,-391,1106,-391,1106,-1106,391,-391,1106,-391,1106,-391,1106,-1106,333,-1106]
    code: [6027, -1093, 375, -1145, 355, -375, 1093, -406, 1094, -389, 1079, -406, 1094, -374, 1114, -386, 1094, -374, 1094, -1145, 354, -1096, 373, -406, 1094, -1145, 323, -1125, 375, -375, 1114, -1104, 375, -406, 1094, -1114, 354, -406, 1093, -1125,
    344, -1145, 386, -1093, 375, -375, 1114, -355, 1093, -1125, 406, -344, 1145, -355, 1124, -344, 1125, -1114, 386, -1093]
    - output.turn_off: status
    - platform: template
    name: 1
    web_server:
    sorting_weight: 20
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    #code: [6750,-1106,391,-1106,391,-391,1106,-391,1106,-391,1106,-391,1106,-391,1106,-391,1106,-391,1106,-1106,332,-1106,391,-391,1106,-1106,391,-1106,391,-391,1106,-1106,391,-391,1106,-1106,332,-391,1106,-1106,391,-1106,391,-1106,391,-1106,391,-1106,391,-391,1106,-1106,391,-391,1106,-391,1106,-391,1106,-391]
    code: [6744, -1115, 386, -1095, 375, -375, 1125, -348, 1099, -398, 1126, -344, 1107, -424, 1094, -344, 1126, -375, 1146, -1107, 352, -1096, 394, -345, 1144, -1075, 406, -1095, 378, -379, 1118, -1095, 375, -409, 1112, -1073, 376, -375, 1125, -1115,
    354, -1094, 407, -1094, 375, -1115, 386, -1094, 375, -406, 1115, -1105, 388, -362, 1094, -376, 1115, -385, 1094, -376]
    - output.turn_off: status
    - platform: template
    name: 2
    web_server:
    sorting_weight: 30
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    #code: [6013,-1093,387,-1093,341,-387,1093,-387,1093,-387,1128,-341,1128,-387,1093,-387,1093,-387,1128,-1093,387,-1093,387,-387,1093,-1093,387,-1093,387,-387,1128,-1093,387,-387,1128,-1093,387,-387,1093,-1128,387,-1093,387,-1093,387,-1093,387,-387,1093,-387,1128,-1093,387,-387,1093,-387,1093,-387,1093,-1093]
    code: [6061, -1095, 344, -1146, 354, -375, 1095, -406, 1129, -349, 1117, -375, 1126, -344, 1146, -354, 1126, -375, 1094, -1115, 386, -1097, 372, -375, 1129, -1100, 366, -1094, 407, -344, 1146, -1074, 409, -341, 1125, -1115, 386, -344, 1125, -1094,
    407, -1115, 354, -1126, 375, -1099, 391, -354, 1126, -375, 1094, -1146, 386, -344, 1126, -375, 1094, -378, 1100, -1117]
    - output.turn_off: status
    - platform: template
    name: 3
    web_server:
    sorting_weight: 40
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    #code: [6803,-1105,379,-1105,379,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-1105,379,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379,1105,-379,1105,-1105,379,-379]
    code: [6768, -1079, 406, -1094, 376, -396, 1073, -406, 1095, -375, 1146, -323, 1126, -375, 1126, -344, 1161, -370, 1095, -1094, 375, -1115, 386, -344, 1125, -1095, 427, -1073, 375, -375, 1126, -1115, 354, -375, 1126, -1094, 376, -375, 1140, -1080,
    375, -1094, 410, -1099, 367, -406, 1095, -1105, 364, -406, 1094, -1095, 375, -406, 1115, -355, 1125, -1095, 375, -390]
    - output.turn_off: status
    - platform: template
    name: 4
    web_server:
    sorting_weight: 50
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    #code: [6005,-1105,379,-1105,379,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-1105,379,-1105,379,-379,1105,-379,1105,-379,1105,-1105,379,-379,1105,-379,1105,-1105,379,-1105]
    code: [6034, -1115, 386, -1094, 375, -375, 1104, -400, 1091, -375, 1094, -407, 1115, -354, 1095, -406, 1094, -374, 1116, -1105, 375, -1094, 411, -385, 1080, -1095, 406, -1098, 380, -367, 1094, -1125, 376, -375, 1146, -1073, 379, -372, 1094, -1144,
    357, -1094, 406, -1095, 389, -361, 1125, -376, 1094, -406, 1115, -1075, 374, -406, 1094, -386, 1084, -1094, 406, -1126]
    - output.turn_off: status
    - platform: template
    name: 5
    web_server:
    sorting_weight: 60
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    #code: [6816,-1105,379,-1105,379,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379,1105,-379]
    code: [6784, -1094, 375, -1115, 386, -344, 1126, -375, 1135, -334, 1094, -407, 1094, -407, 1115, -354, 1126, -344, 1125, -1115, 386, -1094, 375, -375, 1126, -1108, 361, -1094, 407, -344, 1146, -1073, 407, -344, 1125, -1115, 386, -344, 1125, -1094,
    422, -1100, 354, -406, 1095, -1094, 389, -1080, 407, -344, 1156, -1115, 355, -375, 1094, -1126, 375, -388, 1081, -407]
    - output.turn_off: status
    - platform: template
    name: 6
    web_server:
    sorting_weight: 70
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    #code: [5933,-1104,379,-1104,379,-379,1104,-379,1104,-379,1104,-379,1104,-379,1104,-379,1104,-379,1104,-1104,379,-1104,379,-379,1104,-1104,379,-1104,379,-379,1104,-1104,379,-379,1104,-1104,379,-379,1104,-1104,379,-1104,379,-379,1104,-1104,379,-379,1104,-379,1104,-1104,379,-379,1104,-1104,379,-379,1104,-1104]
    code: [6034, -1115, 386, -1125, 344, -407, 1097, -386, 1080, -407, 1094, -375, 1115, -386, 1097, -372, 1094, -407, 1115, -1104, 344, -1126, 375, -396, 1074, -1094, 406, -1099, 391, -386, 1094, -1126, 344, -406, 1115, -1105, 344, -406, 1095, -1146,
    323, -1106, 395, -375, 1129, -1097, 369, -375, 1126, -375, 1146, -1073, 376, -406, 1094, -1115, 355, -375, 1125, -1095]
    - output.turn_off: status
    - platform: template
    name: random
    web_server:
    sorting_weight: 80
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    code: [6046,-1103,380,-1103,380,-380,1103,-380,1103,-380,1103,-380,1103,-380,1103,-380,1103,-380,1103,-1103,380,-1103,380,-380,1103,-1103,380,-1103,380,-380,1103,-1103,380,-380,1103,-1103,380,-380,1103,-1103,380,-1103,380,-380,1103,-380,1103,-380,1103,-380,1103,-1103,380,-380,1103,-1103,380,-1103,380,-1103]
    - output.turn_off: status
    - platform: template
    name: invert
    web_server:
    sorting_weight: 90
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    code: [6728,-1105,333,-1105,388,-388,1105,-388,1105,-388,1105,-388,1105,-388,1105,-388,1105,-388,1105,-1105,388,-1105,388,-388,1105,-1105,388,-1105,388,-388,1105,-1105,388,-388,1105,-1105,388,-388,1105,-1105,388,-1105,388,-388,1105,-388,1105,-1105,333,-388,1105,-1105,388,-388,1105,-1105,388,-1105,388,-333]
    - output.turn_off: status
    - platform: template
    name: 1h
    web_server:
    sorting_weight: 100
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    code: [6068,-1106,390,-1106,390,-390,1106,-390,1106,-390,1106,-390,1106,-390,1106,-390,1106,-390,1106,-1106,390,-1106,332,-390,1106,-1106,332,-1106,390,-390,1106,-1106,390,-390,1106,-1106,332,-390,1106,-1106,390,-332,1106,-1106,390,-390,1106,-390,1106,-1106,390,-390,1106,-1106,332,-390,1106,-1106,390,-1106]
    - output.turn_off: status
    - platform: template
    name: 2h
    web_server:
    sorting_weight: 110
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    code: [6698,-1108,392,-1108,392,-392,1108,-392,1108,-392,1108,-392,1108,-331,1108,-392,1108,-392,1108,-1108,392,-1108,331,-392,1108,-1108,392,-1108,392,-392,1108,-1108,392,-392,1108,-1108,392,-392,1108,-1108,392,-392,1108,-392,1108,-392,1108,-1108,392,-1108,392,-392,1108,-1108,392,-1108,392,-1108,392,-331]
    - output.turn_off: status
    - platform: template
    name: 4h
    web_server:
    sorting_weight: 120
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    code: [6713,-1103,380,-1103,380,-380,1103,-380,1103,-380,1103,-380,1103,-380,1103,-380,1103,-380,1103,-1103,380,-1103,380,-380,1103,-1103,380,-1103,380,-380,1103,-1103,380,-380,1103,-1103,380,-380,1103,-1103,380,-380,1103,-380,1103,-1103,380,-1103,380,-1103,380,-380,1103,-1103,380,-1103,380,-380,1103,-380]
    - output.turn_off: status
    - platform: template
    name: 8h
    web_server:
    sorting_weight: 130
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    code: [6041,-1104,379,-1104,379,-379,1104,-379,1104,-379,1104,-379,1104,-379,1104,-379,1104,-379,1104,-1104,379,-1104,379,-379,1104,-1104,379,-1104,379,-379,1104,-1104,379,-379,1104,-1104,379,-379,1104,-1104,379,-1104,379,-379,1104,-1104,379,-379,1104,-1104,379,-379,1104,-379,1104,-1104,379,-379,1104,-1104]
    - output.turn_off: status
    - platform: template
    name: luz
    web_server:
    sorting_weight: 140
    on_press:
    - output.turn_on: status
    - remote_transmitter.transmit_raw:
    transmitter_id: rf
    repeat:
    times: 7
    wait_time: 0s
    code: [6756,-1105,379,-1105,379,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-1105,379,-379,1105,-1105,379,-379,1105,-1105,379,-379]
    - output.turn_off: status
  • ADVERTISEMENT
  • #32 21618884
    leandrosouzacarneiro
    Level 1  
    no need to clone, you can use your current ESPHome Builder interface, here a sample code:

    Code: YAML
    Log in, to see the code


    receiving RF works, I haven't emmiting, tho; IR works like a charm. Tested on a S11

Topic summary

The discussion centers on the Tuya SmartLife Universal IR+RF WiFi Remote Control with PCB code S11-SH4-CBU-V2.4, focusing on firmware configuration, IR and RF functionality, and integration with OpenBK and ESPHome platforms. Key technical details include pin assignments such as "wfst_pin" for WiFi status LED, "infrr" for infrared receive, and "infre" for infrared emit. Users share JSON configuration templates and explore programming IR remote functions using OpenBeken firmware. A significant topic is enabling RF transmission and reception, with suggestions to port Tasmota RF drivers (e.g., xdrv_17_rcswitch) due to compatible licenses. Several contributors express interest in developing RF support, noting partial IR functionality but limited RF support in current firmware. Alternative approaches involve flashing custom firmware using Tuya Cloud Cutter and ESPHome, enabling raw RF signal capture and replay, demonstrated with protocols like Dooya DC2702. Discussions include challenges in flashing firmware via USB-to-TTY adapters and successful OTA flashing methods. Users analyze RF signal encoding, including NEC IR codes and 433 MHz raw high/low pulse sequences, and confirm that most 433 MHz RF devices operate unencrypted and do not require pairing, allowing broad compatibility. Additional tools mentioned include CC1101 RF modules with ESP32 and esphome-cc1101 integration for signal decoding and visualization. The thread also touches on scripting examples for TV remote control and requests for assembly cable diagrams for programming related devices.
Summary generated by the language model.
ADVERTISEMENT