The SonOff RF Bridge uses the ESP8285 and not the ESP32. It can be flashed with both ESPHome as well as Tasmota. MIne is flashed with Tasmote. The Chip used for 433MHz communication is EFM8BB1 which I have flashed with Portisch FW. On order to flashe the EFM8BB1, I had to make some HW modification:
Thank you for this. Being a bit noobish I understand better when I can view all the code at once. Would it be possible for you to post all your yaml files somewhere? Regards.
Excluding the standard YAML code, this is what I use for controlling my switches.
And yes, someone could potentially use this information to control my switches and in that case, please go ahead and do that but be fast because they are being replaced with Wi-Fi enabled and Tuya cutter lights and switches in a fast phase
As you can see I haven’t enabled the receiver and I have turned of the web service because if not, the device will reboot all the time. Maybe it’s only my device or all are the same. I remember i also did the HW mod, but as I remember it was not only these two wires i was cutting it was also a third one if I remember correctly.
As my experience from playing with the ESPHome Dallas component is that the timing (not using timer interrupts) are not that precise I guess this might cause some problems having both the web service and receiver running at the same time as you try to transmit. So if it’s unstable having both the receiver and transmitter running, turn of the one you don’t use for the moment.
Also. It’s not fun to re-flash every time you add some device. I have seen some setup where the codes was provided via the API from HA to the ESPHome device and that setup would be better I think. But I didn’t know enough about ESPHome YAML configurations at the time I configured this but someone else might step in here
#web_server:
status_led:
pin:
number: GPIO13
inverted: yes
sensor:
- platform: wifi_signal
name: RF Bridge Wifi Signal
update_interval: 60s
- platform: uptime
name: RF Bridge Uptime
update_interval: 60s
# USBRX = GPIO4 ---> receiver
# USBTX = GPIO5 ---> trasmitter
# receiver = pin 5 of the 8-legged chip (the one closer to the wifi antenna)
# transmitter = pin 4 of the 6-legged chip (closest to r12)
# https://esphome.io/components/remote_transmitter.html#remote-setting-up-rf
#remote_receiver:
# pin: GPIO04
# dump:
# - nexa
# - rc_switch
# - all
# Settings to optimize recognition of RF devices
# tolerance: 50%
# filter: 4us
# idle: 4ms
# buffer_size: 1kb
# on_rc_switch:
# - lambda: !lambda |-
# char code[100];
# sprintf(code, "Code:%llu Protocol:%d", x.code, x.protocol);
# id(mqtt_client).publish("rf/bridge/all", code);
# on_rc_switch:
# then:
# - mqtt.publish:
# topic: "test/rc_switch"
# payload: x.code
remote_transmitter:
pin: GPIO05
carrier_duty_percent: 100%
switch:
### Arbetsrum
- platform: template
name: Arbetsrum Bord
optimistic: True
assumed_state: True
#LuxorParts 1 3
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '000101010101000101010101'
protocol: 1
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '000101010101000101010100'
protocol: 1
repeat:
times: 10
wait_time: 0s
- platform: template
name: Arbetsrum Fönster
optimistic: True
assumed_state: True
#Proove 1 1
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110100110101010'
protocol: 8
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110101010101010'
protocol: 8
repeat:
times: 10
wait_time: 0s
### Kök
- platform: template
name: "Kök Arbetsbänk"
optimistic: True
assumed_state: True
#Nexa
turn_on_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 1
group: 0
channel: 1
level: 0
repeat:
times: 10
wait_time: 10ms
turn_off_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 0
group: 0
channel: 1
level: 0
repeat:
times: 10
wait_time: 10ms
- platform: template
name: "Kök Diskbänk"
optimistic: True
assumed_state: True
#Proove 1 2
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110100110101001'
protocol: 8
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110101010101001'
protocol: 8
repeat:
times: 10
wait_time: 0s
- platform: template
name: "Kök Fönster"
optimistic: True
assumed_state: True
#LuxorParts 1 4
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '000101010100010101010101'
protocol: 1
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '000101010100010101010100'
protocol: 1
repeat:
times: 10
wait_time: 0s
- platform: template
name: "Kök Småfönster"
optimistic: True
assumed_state: True
#LuxorParts 1 1
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '000101010001010101010101'
protocol: 1
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '000101010001010101010100'
protocol: 1
repeat:
times: 10
wait_time: 0s
### Ute
- platform: template
name: "Ute Farstun"
optimistic: True
assumed_state: True
#Nexa
turn_on_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 1
group: 0
channel: 3
level: 0
repeat:
times: 10
wait_time: 10ms
turn_off_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 0
group: 0
channel: 3
level: 0
repeat:
times: 10
wait_time: 10ms
### Hall
- platform: template
name: "Hall Fönster"
optimistic: True
assumed_state: True
#Nexa
turn_on_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 1
group: 0
channel: 2
level: 0
repeat:
times: 10
wait_time: 10ms
turn_off_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 0
group: 0
channel: 2
level: 0
repeat:
times: 10
wait_time: 10ms
- platform: template
name: "Hall Höger"
optimistic: True
assumed_state: True
#LuxorParts 2 1
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '010001010001010101010101'
protocol: 1
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '010001010001010101010100'
protocol: 1
repeat:
times: 10
wait_time: 0s
- platform: template
name: "Hall Vänster"
optimistic: True
assumed_state: True
#Proove 1 3
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110100110100110'
protocol: 8
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110101010100110'
protocol: 8
repeat:
times: 10
wait_time: 0s
### Sovrum
- platform: template
name: "Sovrum Fönster"
optimistic: True
assumed_state: True
#Nexa
turn_on_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 1
group: 0
channel: 4
level: 0
repeat:
times: 10
wait_time: 10ms
turn_off_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 0
group: 0
channel: 4
level: 0
repeat:
times: 10
wait_time: 10ms
### Trapp uppe
- platform: template
name: "Trapp uppe Sybord"
optimistic: True
assumed_state: True
#Nexa
turn_on_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 1
group: 0
channel: 5
level: 0
repeat:
times: 10
wait_time: 10ms
turn_off_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 0
group: 0
channel: 5
level: 0
repeat:
times: 10
wait_time: 10ms
### T
- platform: template
name: "T Byrån"
optimistic: True
assumed_state: True
#Proove 1 4
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110100110100101'
protocol: 8
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110101010100101'
protocol: 8
repeat:
times: 10
wait_time: 0s
- platform: template
name: "T Soffan"
optimistic: True
assumed_state: True
#Nexa
turn_on_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 1
group: 0
channel: 6
level: 0
repeat:
times: 10
wait_time: 10ms
turn_off_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 0
group: 0
channel: 6
level: 0
repeat:
times: 10
wait_time: 10ms
- platform: template
name: "T TV"
optimistic: True
assumed_state: True
#Proove 2 3
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110100110010110'
protocol: 8
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110101010010110'
protocol: 8
repeat:
times: 10
wait_time: 0s
- platform: template
name: "Y"
optimistic: True
assumed_state: True
#Proove 2 1
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110100110011010'
protocol: 8
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110101010011010'
protocol: 8
repeat:
times: 10
wait_time: 0s
### Y
- platform: template
name: "Y Skåp"
optimistic: True
assumed_state: True
#LuxorParts 2 2
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '010001010100010101010101'
protocol: 1
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '010001010100010101010100'
protocol: 1
repeat:
times: 10
wait_time: 0s
- platform: template
name: "Y Höger"
optimistic: True
assumed_state: True
#Proove 2 2
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110100110011001'
protocol: 8
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '1001100110100101011010101010010101010101011010010110101010011001'
protocol: 8
repeat:
times: 10
wait_time: 0s
### X
- platform: template
name: "X Fönster"
optimistic: True
assumed_state: True
#Luxorpart I 4
turn_on_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '000101010101010001010101'
protocol: 1
repeat:
times: 10
wait_time: 0s
turn_off_action:
- remote_transmitter.transmit_rc_switch_raw:
code: '000101010101010001010100'
protocol: 1
repeat:
times: 10
wait_time: 0s
- platform: template
name: "X Bord"
optimistic: True
assumed_state: True
#Nexa
turn_on_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 1
group: 0
channel: 8
level: 0
repeat:
times: 10
wait_time: 10ms
turn_off_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 0
group: 0
channel: 8
level: 0
repeat:
times: 10
wait_time: 10ms
### Dashboard
- platform: template
name: Dashboard
optimistic: True
assumed_state: True
#Nexa
turn_on_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 1
group: 0
channel: 7
level: 0
repeat:
times: 10
wait_time: 10ms
turn_off_action:
- remote_transmitter.transmit_nexa:
device: 0x227BACA
state: 0
group: 0
channel: 7
level: 0
repeat:
times: 10
wait_time: 10ms
#Proove Packet structure:
#Learn by sending On code
# Bit nbr: Name:
# 01-52 Transmitter code. 26 bits, sent as 52 (every other bit is the inverse of previous)
# 53-54 Group On(01), Off(10)
# 55-56 On(01), Off(10) (or Dim(11)?)
# 57-60 Channel. 1=1010, 2=1001, 3=0110, 4=0101
# 61-64 Switch. 1=1010, 2=1001, 3=0110, 4=0101
# (65-73 Dimmer value, 16 steps. (optional))
# # 10 20 30 40 50 60
# # 1234567890123456789012345678901234567890123456789012 34 56 7890 1234
# ----------------------------------------------------------------------------
# #1 On: 1001100110100101011010101010010101010101011010010110 10 01 0101 0101
# #1 Off: 1001100110100101011010101010010101010101011010010110 10 10 0101 0101
# #2 On: 1001100110100101011010101010010101010101011010010110 10 01 0101 0110
# #2 Off: 1001100110100101011010101010010101010101011010010110 10 10 0101 0110
# #3 On: 1001100110100101011010101010010101010101011010010110 10 01 0101 1001
# #3 Off: 1001100110100101011010101010010101010101011010010110 10 10 0101 1001
# Gr On: 1001100110100101011010101010010101010101011010010110 01 01 0101 0101
# Gr Off: 1001100110100101011010101010010101010101011010010110 01 10 0101 0101
#LuxorParts
#I=0x15 II=0x45 III=0x51 IV=0x54
#1=0x15 2=0x45 3=0x51 4=0x54
#On=0x55 Off=0x54
#1=0x15 '00010101'
#2=0x45 '01000101'
#3=0x51 '01010001'
#4=0x54 '01010100'
#On=0x55 '01010101'
#Off=0x54 '01010100'
#Everflourish / Clas Ohlson
#https://github.com/chrols/emw100
#Intro sequence is 0XAAA4A92A4A9294A5494AL / 10101010101001001010100100101010010010101001001010010100101001010100100101001010
#The ID is 27 bits long
#ID Binary Hexadecimal
#1 100101001010010100100101001 0X4A52929
#2 100100101001010010101001010 0X494A54A
#3 010101001001010100101001001 0X2A4A949
#4 010100101010010100101001010 0X295294A
#The command is 22 bits long
#Switch On: 0100101001010010100101 (0X1294A5) Switch Off: 0101001010010100101001 (0X14A529)
#DELAY (time for a bit) = .00057
#SLEEP (time period between each switch) = .016
any idea why the RM433 remote from Sonoff does not work well with Sonoff bridge?
Hi, I have my Sonoff RFBridge flashed with Tasmota and Portisch. It works well to decode most 433MHz devices I have, except for the Sonoff 433 RM Remote control. In fact the bridge isn’t able to read anything from the remote in rfraw166 mode, but in rfraw177 mode, it spits out lots of inconsistent garbage.
Have you found any method to read, decode and eventually mimic (simulate) RM433 key codes using the RF Bridge as a trnasmitter?