A plug with a switch

Here’s as much as it will allow me to paste.

INFO ESPHome 2025.11.4
INFO Reading configuration /config/esphome/esp-01s-2.yaml...
WARNING The minimum WiFi authentication mode (wifi -> min_auth_mode) is not set. This controls the weakest encryption your device will accept when connecting to WiFi. Currently defaults to WPA (less secure), but will change to WPA2 (more secure) in 2026.6.0. WPA uses TKIP encryption which has known security vulnerabilities and should be avoided. WPA2 uses AES encryption which is significantly more secure. To silence this warning, explicitly set min_auth_mode under 'wifi:'. If your router supports WPA2 or WPA3, set 'min_auth_mode: WPA2'. If your router only supports WPA, set 'min_auth_mode: WPA'.
INFO Starting looking for IP in topic esphome/discover/esp-01s-2
INFO Connected to MQTT broker!
INFO Send discover via MQTT broker topic: esphome/ping/esp-01s-2
WARNING MQTT IP discovery failed (Failed to find IP via MQTT), will try other devices if available
INFO Starting log output from esp-01s-2.local using esphome API
INFO Successfully resolved esp-01s-2.local in 0.059s
INFO Successfully connected to esp-01s-2 @ 192.168.1.190 in 0.003s
INFO Successful handshake with esp-01s-2 @ 192.168.1.190 in 2.585s
[16:00:01.495][I][app:190]: ESPHome version 2025.11.4 compiled on Dec  8 2025, 10:45:06
[16:00:01.550][C][logger:261]: Logger:
[16:00:01.550][C][logger:261]:   Max Level: DEBUG
[16:00:01.550][C][logger:261]:   Initial Level: DEBUG
[16:00:01.550][C][logger:267]:   Log Baud Rate: 115200
[16:00:01.550][C][logger:267]:   Hardware UART: UART0
[16:00:01.550][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.551][I][remote.pronto:237]: 0000 006D 0003 0000 000D 00FE 0051 000A 000E 0180 
[16:00:01.551][C][gpio.binary_sensor:018]: GPIO Binary Sensor 'Outlet State'
[16:00:01.551][C][gpio.binary_sensor:072]:   Pin: GPIO0
[16:00:01.551][C][gpio.binary_sensor:073]:   Mode: interrupt
[16:00:01.551][C][gpio.binary_sensor:075]:   Interrupt Type: ANY_EDGE
[16:00:01.551][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.561][I][remote.pronto:237]: 0000 006D 0007 0000 0017 0049 0056 0008 0022 006B 002C 0014 002C 004B 000E 0007 0018 0180 
[16:00:01.561][C][remote_receiver:059]: Remote Receiver:
[16:00:01.574][C][remote_receiver:060]:   Pin: GPIO3
[16:00:01.584][W][remote_receiver:062]: Remote Receiver Signal starts with a HIGH value. Usually this means you have to invert the signal using 'inverted: True' in the pin schema!
[16:00:01.593][C][remote_receiver:065]:   Buffer Size: 1000
[16:00:01.593][C][remote_receiver:065]:   Tolerance: 25%
[16:00:01.593][C][remote_receiver:065]:   Filter out pulses shorter than: 150 us
[16:00:01.593][C][remote_receiver:065]:   Signal is done after 10000 us of no changes
[16:00:01.604][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.611][I][remote.pronto:237]: 0000 006D 0008 0000 000D 0033 0011 0057 004C 000D 0015 0007 0023 0074 001B 0006 000B 002B 0181 
[16:00:01.615][C][captive_portal:122]: Captive Portal:
[16:00:01.633][C][wifi:1062]: WiFi:
[16:00:01.633][C][wifi:1062]:   Connected: YES
[16:00:01.633][C][wifi:827]:   Local MAC: D8:BF:C0:FB:B5:80
[16:00:01.639][C][wifi:834]:   IP Address: 192.168.1.190
[16:00:01.652][C][wifi:838]:   SSID: 'wifi2-2g'[redacted]
[16:00:01.652][C][wifi:838]:   BSSID: 86:2A:A8:4A:E0:34[redacted]
[16:00:01.652][C][wifi:838]:   Hostname: 'esp-01s-2'
[16:00:01.652][C][wifi:838]:   Signal strength: -47 dB ▂▄▆█
[16:00:01.652][C][wifi:838]:   Channel: 1
[16:00:01.652][C][wifi:838]:   Subnet: 255.255.255.0
[16:00:01.652][C][wifi:838]:   Gateway: 192.168.1.1
[16:00:01.652][C][wifi:838]:   DNS1: 192.168.1.221
[16:00:01.652][C][wifi:838]:   DNS2: 0.0.0.0
[16:00:01.664][I][remote.canalsatld:099]: Received CanalSatLD: device=0x7C, address=0x3F, command=0x7F, repeat=0x1
[16:00:01.679][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.679][I][remote.pronto:237]: 0000 006D 0007 0000 000C 000C 0048 0007 003F 0021 0085 001A 000B 0028 0013 0030 0180 
[16:00:01.683][C][web_server:326]: Web Server:
[16:00:01.683][C][web_server:326]:   Address: esp-01s-2.local:80
[16:00:01.694][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.707][I][remote.pronto:237]: 0000 006D 0007 0000 0008 008D 000B 000D 0009 0083 0010 0031 0022 0065 001F 0017 0181 
[16:00:01.711][C][esphome.ota:093]: Over-The-Air updates:
[16:00:01.711][C][esphome.ota:093]:   Address: esp-01s-2.local:8266
[16:00:01.711][C][esphome.ota:093]:   Version: 2
[16:00:01.711][C][esphome.ota:100]:   Password configured
[16:00:01.723][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.736][I][remote.pronto:237]: 0000 006D 0007 0000 0013 000E 0017 0007 0034 000A 000E 0008 0030 000C 005A 001F 0180 
[16:00:01.755][C][safe_mode:018]: Safe Mode:
[16:00:01.755][C][safe_mode:018]:   Successful after: 60s
[16:00:01.755][C][safe_mode:018]:   Invoke after: 10 attempts
[16:00:01.755][C][safe_mode:018]:   Duration: 300s
[16:00:01.755][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.771][I][remote.pronto:237]: 0000 006D 0007 0000 000E 0046 0008 001D 0024 000D 0021 007C 000A 0009 0065 0007 000D 0180 
[16:00:01.771][C][web_server.ota:241]: Web Server OTA
[16:00:01.771][C][api:223]: Server:
[16:00:01.771][C][api:223]:   Address: esp-01s-2.local:6053
[16:00:01.771][C][api:223]:   Listen backlog: 1
[16:00:01.771][C][api:223]:   Max connections: 4
[16:00:01.784][C][api:230]:   Noise encryption: YES
[16:00:01.784][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.793][I][remote.pronto:237]: 0000 006D 0005 0000 000C 00BE 0007 0041 000B 001E 001B 0070 0017 0180 
[16:00:01.793][C][mdns:177]: mDNS:
[16:00:01.793][C][mdns:177]:   Hostname: esp-01s-2
[16:00:01.805][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.813][I][remote.pronto:237]: 0000 006D 000C 0000 0018 009D 0010 0030 0007 0024 001A 0023 001A 0008 000D 0035 0009 0009 001D 0014 0070 000E 001C 000D 0028 0006 0018 0180 
[16:00:01.837][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.842][I][remote.pronto:237]: 0000 006D 000D 0000 0008 0013 0017 0013 000C 0016 0012 0013 0014 0019 002A 001E 000F 0026 0045 0007 004C 0020 0014 0008 0027 0008 0009 000C 0008 0180 
[16:00:01.876][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.887][I][remote.pronto:237]: 0000 006D 0011 0000 0009 0019 002A 0008 0008 0012 001A 0008 0007 0008 000E 000B 0009 002F 001F 000A 0059 000B 000E 000B 0007 0009 0022 0009 000C 0006 0028 0026 0012 0017 0018 0009 007F 0180 
[16:00:01.910][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.916][I][remote.pronto:237]: 0000 006D 0003 0000 000B 0039 0018 003B 0009 0180 
[16:00:01.941][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.944][I][remote.pronto:237]: 0000 006D 0001 0000 0181 
[16:00:01.968][D][remote.beo4:086]: Beo4: n_sym=172
[16:00:01.984][I][remote.pronto:229]: Received Pronto: data=
[16:00:01.994][I][remote.pronto:237]: 0000 006D 0056 0000 0010 003C 000D 0014 000F 0028 000F 0018 000B 0009 0006 001A 000B 000B 0021 001A 0013 000E 0010 0013 0018 0015 0006 000E 0008 0031 0006 00EA 002A 0023 000B 00DC 0009 003E 0016 000B 006A 0008 0032 0007 0017 0008 
[16:00:02.014][I][remote.pronto:237]: 000C 000A 0015 0081 0005 003E 0033 000D 001D 0016 0014 00B1 0005 0041 0007 000C 0055 0029 0006 0009 0011 0007 0025 0026 005E 0038 0005 007D 0010 0047 0006 0019 000D 0007 0036 007F 0007 000C 003B 0008 006E 001C 0023 000D 000E 0008 
[16:00:02.033][I][remote.pronto:237]: 0035 004E 0008 0058 003C 00D4 00BC 003A 0018 000B 001F 005A 006F 005F 0014 000D 0036 001E 0006 0007 0008 004F 0008 0026 0009 0018 004D 000A 0005 0024 0014 0075 000E 001A 0027 000F 0016 000E 0035 000B 0005 001B 0005 000D 0008 002E 
[16:00:02.050][I][remote.pronto:237]: 0005 00B2 0019 004F 0011 0064 0076 0047 0016 000B 002B 0008 0011 000B 002B 0013 000B 0009 0008 006E 00DE 0031 000F 001E 006E 0016 0006 000B 0008 000A 0018 0009 0017 00C8 0047 0040 002B 0181 
[16:00:02.084][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.090][I][remote.pronto:237]: 0000 006D 000C 0000 000D 0009 0047 000D 0039 000D 000D 0007 001C 0008 0037 000C 0026 0009 001A 002D 0011 000A 0015 0019 0008 001C 0009 0181 
[16:00:02.115][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.123][I][remote.pronto:237]: 0000 006D 000F 0000 0008 0010 0044 0009 003D 0009 0082 0015 0007 0023 0028 005B 003D 0017 0039 0007 000D 0034 0009 0010 000D 0021 0008 0020 0037 0016 001C 000A 002F 0181 
[16:00:02.152][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.163][I][remote.pronto:237]: 0000 006D 000B 0000 0012 000B 0049 000A 003D 0027 001A 0009 0033 0009 004C 005B 0005 001A 001E 0035 0008 0045 0032 0023 000D 0181 
[16:00:02.186][I][remote.canalsat:102]: Received CanalSat: device=0x7F, address=0x3F, command=0x7F, repeat=0x1
[16:00:02.198][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.198][I][remote.pronto:237]: 0000 006D 000A 0000 000B 0009 0047 0008 00D3 0008 000D 0009 0021 0053 0008 003B 0007 0024 0020 00C0 0008 0123 0006 0181 
[16:00:02.236][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.253][I][remote.pronto:237]: 0000 006D 000F 0000 000F 000F 00A5 003C 0054 0017 000D 005D 001B 0023 0015 0009 001C 0008 0008 0008 0016 000E 0009 0009 000D 0013 0007 0009 0009 001B 0013 0007 0012 0181 
[16:00:02.285][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.292][I][remote.pronto:237]: 0000 006D 000E 0000 000E 000E 005A 00EA 0036 000A 0019 0008 0009 0019 0007 0017 0008 000A 001F 0010 000A 000B 000C 0009 0035 0008 001C 0018 000E 000D 0010 0181 
[16:00:02.315][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.323][I][remote.pronto:237]: 0000 006D 000F 0000 000F 000B 008C 0007 0092 000A 0006 0012 002C 000C 000B 0008 0009 000B 001A 0023 000A 0008 0007 002C 000A 000D 0005 003C 0007 0009 0026 0043 0180 
[16:00:02.350][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.357][I][remote.pronto:237]: 0000 006D 000D 0000 000D 00A6 0009 0025 000A 002A 000D 000B 002E 0009 001A 003A 000A 0028 0029 0050 0024 0006 002C 000A 0015 000C 002F 0018 0181 
[16:00:02.387][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.394][I][remote.pronto:237]: 0000 006D 000E 0000 001A 000C 0046 0019 0011 0067 0032 0009 005B 0034 0018 0009 002E 001B 0008 0015 0017 000E 0014 0009 000B 000C 0008 0013 0009 0010 0016 0181 
[16:00:02.421][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.423][I][remote.pronto:237]: 0000 006D 0008 0000 0019 005E 00DA 0012 000B 0008 0009 0014 000C 0008 0008 0019 000D 0035 001E 0181 
[16:00:02.451][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.458][I][remote.pronto:237]: 0000 006D 000F 0000 000D 000B 0051 000D 000E 003F 008B 0016 0019 002A 0006 000C 000C 0007 0007 000C 000A 0016 0010 000D 0009 000A 0005 0007 001A 000E 0012 0009 0012 0181 
[16:00:02.490][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.493][I][remote.pronto:237]: 0000 006D 0009 0000 0010 0009 0134 000E 0018 000D 000B 0012 0014 000E 000E 000E 0011 0013 0018 006F 000A 0181 
[16:00:02.519][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.525][I][remote.pronto:237]: 0000 006D 000E 0000 000E 0011 006E 0030 000B 0008 0024 000A 0058 001B 0008 0028 000A 0009 0013 000E 0005 001C 0005 002C 001A 0008 001A 0032 001A 0010 000A 0181 
[16:00:02.555][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.563][I][remote.pronto:237]: 0000 006D 0011 0000 00EE 0007 002D 0080 0007 000A 000A 000A 0007 000A 0029 001E 0015 000A 0007 0009 002B 0008 0008 0009 0019 0018 002B 0038 000D 000A 001E 000B 0005 0009 0015 0085 0008 0181 
[16:00:02.594][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.604][I][remote.pronto:237]: 0000 006D 000B 0000 000D 0010 0042 0007 0058 000B 008C 004B 0012 000B 000A 0046 0007 0010 0018 000D 0025 0015 0009 0013 0013 0181 
[16:00:02.635][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.641][I][remote.pronto:237]: 0000 006D 000D 0000 0014 000D 004B 0009 00B9 0008 0059 0008 0027 0019 0009 0008 002B 0008 0026 0009 000B 0021 002C 000B 0020 000F 0005 0009 0011 0181 
[16:00:02.675][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.678][I][remote.pronto:237]: 0000 006D 000A 0000 0010 0066 002F 0009 009E 0013 0010 0036 0008 001A 0007 001B 0016 000D 000F 000E 0027 0007 0012 0181 
[16:00:02.700][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.702][I][remote.pronto:237]: 0000 006D 0008 0000 000E 000D 0140 000B 001E 001C 000F 0009 0007 000B 000A 004D 001E 003D 0011 0181 
[16:00:02.729][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.733][I][remote.pronto:237]: 0000 006D 000B 0000 000E 000D 0036 0008 0083 008F 000A 000E 0007 0015 000B 0025 0005 0028 004B 000A 000B 000B 0013 0008 0013 0181 
[16:00:02.766][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.777][I][remote.pronto:237]: 0000 006D 000D 0000 001A 000F 0017 0007 002F 0012 002B 0017 0092 001F 0032 000B 000A 0025 0009 000C 004F 000B 000F 0053 000E 0021 0011 0009 0023 0181 
[16:00:02.800][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.805][I][remote.pronto:237]: 0000 006D 000C 0000 000E 000E 0044 0075 0018 0008 0073 0009 0043 001C 0038 0022 0007 0019 0013 0055 000B 001C 000E 0011 0023 0018 000B 0181 
[16:00:02.834][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.837][I][remote.pronto:237]: 0000 006D 000B 0000 0014 0008 001C 0007 002C 000A 0036 001F 0077 006C 000E 0008 0018 0036 000B 0009 0041 0013 0014 0014 0020 0181 
[16:00:02.866][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.869][I][remote.pronto:237]: 0000 006D 0009 0000 0010 000F 006D 0008 0019 0090 0009 0027 0009 005F 0008 0008 0008 0046 0008 000B 002D 0181 
[16:00:02.901][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.909][I][remote.pronto:237]: 0000 006D 000E 0000 000C 000E 0047 000A 00E3 0017 0021 0017 0008 0008 0008 0008 000A 0008 003F 0028 0007 0018 000B 0008 0015 000A 000E 0016 000C 0012 003F 0181 
[16:00:02.937][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.940][I][remote.pronto:237]: 0000 006D 000B 0000 0013 000A 0023 0060 0031 0008 006B 0007 000E 0026 000A 0014 0015 000A 000E 0035 0006 000E 000D 0016 0180 
[16:00:02.965][I][remote.pronto:229]: Received Pronto: data=
[16:00:02.968][I][remote.pronto:237]: 0000 006D 0007 0000 0039 0040 0007 0006 0009 0010 0010 0022 0018 0009 0016 0005 0181 
[16:00:03.002][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.005][I][remote.pronto:237]: 0000 006D 0009 0000 0012 0008 0016 00D6 0007 000B 0034 0019 0067 0013 0015 0008 000B 00CA 003E 0045 0045 0181 
[16:00:03.032][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.035][I][remote.pronto:237]: 0000 006D 0003 0000 0009 0029 0034 0084 0017 0181 
[16:00:03.048][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.048][I][remote.pronto:237]: 0000 006D 0007 0000 000D 0051 0007 0021 0014 00BB 007F 0008 0028 000E 0036 000D 0044 0181 
[16:00:03.074][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.084][I][remote.pronto:237]: 0000 006D 0008 0000 0014 0032 0018 000D 0016 00C1 0065 004C 0068 0012 0028 003F 000C 0023 0180 
[16:00:03.105][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.108][I][remote.pronto:237]: 0000 006D 0007 0000 000B 0008 000A 0052 0045 006B 0049 0012 0007 003D 0017 0015 0181 
[16:00:03.134][I][remote.canalsatld:099]: Received CanalSatLD: device=0x37, address=0x3F, command=0x7F, repeat=0x1
[16:00:03.143][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.143][I][remote.pronto:237]: 0000 006D 0007 0000 000C 001C 0018 0008 001E 001A 000C 0021 000A 001E 000D 002E 0180 
[16:00:03.168][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.176][I][remote.pronto:237]: 0000 006D 0007 0000 000F 000A 0034 001D 000C 001A 00C8 004A 0030 0006 0013 001C 0181 
[16:00:03.189][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.189][I][remote.pronto:237]: 0000 006D 0007 0000 000F 000F 000D 0028 0005 0008 000B 0010 000D 00E5 0043 004F 001F 0181 
[16:00:03.207][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.209][I][remote.pronto:237]: 0000 006D 0005 0000 000D 003F 0014 000B 0017 00D2 0041 0008 0006 0181 
[16:00:03.231][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.234][I][remote.pronto:237]: 0000 006D 0009 0000 0007 0013 0054 002E 006C 006F 003E 008E 0008 0023 0007 0020 0027 0009 000D 005A 0024 0181 
[16:00:03.251][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.254][I][remote.pronto:237]: 0000 006D 0006 0000 0071 000C 0084 0099 000D 0017 0087 000A 0025 00C5 0102 0181 
[16:00:03.276][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.280][I][remote.pronto:237]: 0000 006D 000B 0000 0015 0012 008E 000F 000B 0010 003D 0010 0007 0022 0028 00CD 000C 001B 009E 0059 0023 0019 0005 0035 000F 0181 
[16:00:03.307][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.310][I][remote.pronto:237]: 0000 006D 0007 0000 0014 0008 008F 0071 0014 0007 001F 0097 0046 0007 000D 0013 0017 0181 
[16:00:03.333][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.336][I][remote.pronto:237]: 0000 006D 0006 0000 000E 00ED 004F 0062 000B 0038 0005 0024 0057 0015 0024 0181 
[16:00:03.359][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.362][I][remote.pronto:237]: 0000 006D 0008 0000 0088 000D 000A 000C 000F 000C 0041 000B 0005 001D 0017 002B 0042 0038 0180 
[16:00:03.398][D][remote.beo4:086]: Beo4: n_sym=95
[16:00:03.410][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.422][I][remote.pronto:237]: 0000 006D 0030 0000 0018 001B 0008 00AC 0080 004A 001C 000F 006D 0005 00B0 000F 001E 0019 000D 001F 0010 003B 0036 000F 0027 0008 0011 0034 001B 0006 0007 000B 000A 000F 0015 000A 0014 003B 001B 0017 000C 001A 0028 0007 000C 000D 
[16:00:03.441][I][remote.pronto:237]: 0011 000B 002D 0018 004C 0015 003D 0018 0009 0006 000A 0039 000F 0033 000D 000B 0037 0005 001A 0009 003A 000C 0027 000C 000F 0032 0029 0013 0015 0006 0019 000A 001A 0023 0015 0026 0016 0033 000C 003A 000E 003C 0012 000B 00C6 0008 
[16:00:03.444][I][remote.pronto:237]: 0007 0007 006A 0037 003B 0020 0181 
[16:00:03.475][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.482][I][remote.pronto:237]: 0000 006D 000B 0000 000B 001D 007E 0046 000C 0010 0021 0074 000D 0017 0015 0009 005C 0008 0017 0044 0007 001A 0029 004B 000A 0181 
[16:00:03.516][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.518][I][remote.pronto:237]: 0000 006D 000B 0000 0015 0012 008C 0026 0007 0009 003E 002F 0007 001D 000C 007B 0011 0019 0015 000A 0086 007D 0006 0046 000F 0181 
[16:00:03.544][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.554][I][remote.pronto:237]: 0000 006D 000F 0000 0013 000D 008C 0010 000A 0021 0039 0036 0030 0011 0017 000B 0012 0008 002B 000D 005A 0016 000B 0036 000A 0007 001A 0022 0050 0045 0007 001C 0024 0181 
[16:00:03.579][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.585][I][remote.pronto:237]: 0000 006D 000E 0000 00BE 0009 0018 0022 0007 0014 0022 0008 000A 000B 0065 00A2 0019 004C 00A4 000B 002E 000E 000C 001A 002B 0011 0012 001A 0013 0170 0008 0181 
[16:00:03.618][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.625][I][remote.pronto:237]: 0000 006D 0011 0000 0016 0010 00C2 0057 0014 0025 000B 0027 0017 000C 0013 000C 000A 0008 0018 000B 00B3 000D 0009 001E 0006 000D 0050 0012 0010 000D 0011 0059 0024 002C 0011 0145 003B 0181 
[16:00:03.654][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.657][I][remote.pronto:237]: 0000 006D 0009 0000 001C 0010 008F 000A 0082 000E 0009 001B 0008 004E 0028 0014 0015 0011 0086 0024 0029 0181 
[16:00:03.682][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.690][I][remote.pronto:237]: 0000 006D 0010 0000 0014 000F 0090 000A 000E 000D 001A 001C 0014 0016 001D 0025 0016 004C 002C 000C 0017 000D 007B 000B 0031 0007 0006 0014 000E 000C 0006 0022 000E 0022 0015 0181 
[16:00:03.721][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.730][I][remote.pronto:237]: 0000 006D 0010 0000 000F 0015 008F 0016 0009 0010 0016 0010 002A 000F 000C 000A 0009 001B 000B 0026 0017 0012 0016 002A 0011 0008 0046 0075 0017 004B 000D 0072 0006 0011 0036 0181 
[16:00:03.756][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.763][I][remote.pronto:237]: 0000 006D 000E 0000 0013 0015 0090 0014 002C 0017 0024 0017 0013 001A 000A 0028 000B 0019 000A 0007 001A 0009 001A 000F 0086 000A 0025 004C 003E 000F 0010 0181 
[16:00:03.790][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.792][I][remote.pronto:237]: 0000 006D 0008 0000 0013 000A 00AA 0008 001E 0018 0086 0014 0061 0018 002C 0017 0029 000A 0026 0181 
[16:00:03.822][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.832][I][remote.pronto:237]: 0000 006D 0010 0000 0092 0012 000D 0019 003E 0022 0009 001D 000B 001D 000E 000A 000F 000D 0025 0030 00B3 0019 002A 002F 0006 000A 0009 000C 001A 000A 0016 0021 0008 006A 002E 0181 
[16:00:03.861][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.864][I][remote.pronto:237]: 0000 006D 0009 0000 0017 0010 00C1 0027 0022 0047 0031 0020 0063 0012 0037 000A 0018 0026 0005 0009 0011 0181 
[16:00:03.890][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.898][I][remote.pronto:237]: 0000 006D 000F 0000 0008 001D 0090 000F 0008 000A 0025 0047 0009 0016 0005 0013 0018 002E 0011 000F 0011 0017 001E 006D 000A 0048 0009 000B 0005 0029 0008 002D 002B 0181 
[16:00:03.925][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.934][I][remote.pronto:237]: 0000 006D 0011 0000 0012 0018 00B1 0018 0014 000C 0017 0007 002F 001D 0009 0010 001E 004E 000A 001C 0008 0018 0015 0009 002E 00A3 0030 003C 001A 0014 0008 0008 000D 0039 0037 0049 0017 0181 
[16:00:03.961][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.969][I][remote.pronto:237]: 0000 006D 000F 0000 0007 000C 000C 0010 008A 000F 0005 0028 0008 0011 0026 0028 0015 000C 0019 0016 0019 0013 0011 00D0 0006 000C 000C 0044 000D 000C 0018 0149 0006 0181 
[16:00:03.994][I][remote.pronto:229]: Received Pronto: data=
[16:00:03.998][I][remote.pronto:237]: 0000 006D 0007 0000 0014 0011 0089 0022 000A 0025 0031 0025 007F 000B 00D2 0061 004C 0181 
[16:00:04.028][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.036][I][remote.pronto:237]: 0000 006D 000F 0000 0014 000B 008E 0009 0012 0018 0010 0007 0052 0008 0015 000F 0017 0008 003A 001A 0011 000F 0007 0011 0007 0007 0049 0009 001E 0014 005E 0017 0018 0181 
[16:00:04.061][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.064][I][remote.pronto:237]: 0000 006D 0007 0000 0014 000B 00A8 000C 00BD 000E 0063 0009 002B 002A 0022 0027 0011 0181 
[16:00:04.093][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.099][I][remote.pronto:237]: 0000 006D 000A 0000 001D 000D 00A1 0013 000B 0008 000F 000E 001D 0028 000B 001D 0014 0015 0017 000B 00B6 001B 008A 0181 
[16:00:04.136][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.145][I][remote.pronto:237]: 0000 006D 0011 0000 000E 0013 008A 0011 000B 0018 001A 0029 0008 0014 0022 0011 0009 003D 0014 0010 0047 0019 0012 002C 001E 0015 006C 0027 000A 0008 000B 0065 0037 0038 0008 001A 0025 0181 
[16:00:04.172][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.178][I][remote.pronto:237]: 0000 006D 000D 0000 008A 0017 002A 0008 0007 0009 000F 0008 0007 0019 000B 002D 0014 0011 0014 0008 0049 006F 0019 004C 0007 0007 0010 000D 0040 0181 
[16:00:04.210][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.213][I][remote.pronto:237]: 0000 006D 000E 0000 000D 001D 0087 000C 0007 0012 000A 0016 002C 001B 001C 001C 0015 0012 0012 000A 000B 0007 0034 000B 005D 000D 002A 0016 0007 0046 0028 0181 
[16:00:04.240][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.246][I][remote.pronto:237]: 0000 006D 000E 0000 0017 000D 0079 001D 0012 0009 000E 001E 002F 0045 000B 0007 001A 001A 000D 0031 000B 0015 005E 0009 003C 0009 0013 00C0 0035 004F 0016 0181 
[16:00:04.272][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.278][I][remote.pronto:237]: 0000 006D 000D 0000 0020 0011 0084 0009 001A 000A 0025 0008 0024 0023 0005 0024 000C 000A 0049 000C 0013 0010 00E8 000A 0009 002F 002D 001D 0011 0181 
[16:00:04.304][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.314][I][remote.pronto:237]: 0000 006D 000D 0000 000F 000F 0095 002B 0010 0007 000A 0008 0024 0023 000A 000D 0019 0024 0038 000B 0062 0016 0022 0007 001F 002F 0007 0011 0021 0181 
[16:00:04.335][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.338][I][remote.pronto:237]: 0000 006D 000A 0000 0015 0009 0087 0010 000A 0012 0024 0093 000E 0009 005B 002D 0008 0020 000F 001E 0007 00FE 0037 0181 
[16:00:04.361][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.364][I][remote.pronto:237]: 0000 006D 0008 0000 0017 0011 0098 0007 0007 001F 000D 0013 0026 0085 00AC 0030 0013 00E5 0007 0181 
[16:00:04.386][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.396][I][remote.pronto:237]: 0000 006D 0001 0000 0180 
[16:00:04.405][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.405][I][remote.pronto:237]: 0000 006D 000B 0000 0007 0017 0008 0031 0009 0029 001B 000D 000E 0007 0010 0006 000D 0043 0010 00B9 0014 0022 000D 0006 0181 
[16:00:04.435][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.438][I][remote.pronto:237]: 0000 006D 000A 0000 0009 0014 0075 004D 0007 0013 0058 0008 000B 0019 0009 006C 0013 001A 005A 00AE 0036 0037 003D 0181 
[16:00:04.464][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.467][I][remote.pronto:237]: 0000 006D 0009 0000 000F 0010 0088 0030 0017 0008 0051 0022 0007 000F 0058 0014 0024 0048 000B 0010 000F 0181 
[16:00:04.489][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.500][I][remote.pronto:237]: 0000 006D 000D 0000 0007 0009 00A4 0007 003D 001D 000E 001A 0016 0018 000C 0007 0007 0026 0025 0020 000D 000F 0022 000A 002C 0010 005C 0009 0030 0181 
[16:00:04.535][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.538][I][remote.pronto:237]: 0000 006D 0007 0000 000F 0013 0075 000A 0010 0022 001E 000A 005A 004A 0006 0045 0180 
[16:00:04.562][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.565][I][remote.pronto:237]: 0000 006D 0007 0000 0012 0059 000C 000B 000F 0011 0015 0036 0007 00BC 0007 0007 000C 0180 
[16:00:04.588][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.592][I][remote.pronto:237]: 0000 006D 0005 0000 001A 0079 0009 001E 000B 0063 0007 0046 0027 0180 
[16:00:04.622][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.626][I][remote.pronto:237]: 0000 006D 0009 0000 0012 007C 002D 0010 000E 0009 0017 0007 0008 000A 0011 0013 000F 000B 000A 0046 000F 0180 
[16:00:04.649][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.652][I][remote.pronto:237]: 0000 006D 0006 0000 0015 0077 0007 000C 0022 006B 0008 0013 0012 0013 001A 0180 
[16:00:04.679][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.682][I][remote.pronto:237]: 0000 006D 000A 0000 0017 007F 007A 0010 001E 0009 0025 0010 0011 004E 000E 0006 000E 001E 0065 0028 002F 00BE 0181 
[16:00:04.710][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.713][I][remote.pronto:237]: 0000 006D 0009 0000 0014 000A 0096 0036 0041 0044 0007 000C 0023 0021 0014 0008 0008 0010 0027 0055 0180 
[16:00:04.742][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.745][I][remote.pronto:237]: 0000 006D 0006 0000 0008 008F 000D 000C 0022 005D 000A 005E 0028 002E 0026 0180 
[16:00:04.771][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.773][I][remote.pronto:237]: 0000 006D 0008 0000 0087 0009 001E 0034 0009 003C 0020 0061 000D 002D 0039 0009 0030 0161 0181 
[16:00:04.806][D][remote.beo4:086]: Beo4: n_sym=51
[16:00:04.811][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.826][I][remote.pronto:237]: 0000 006D 001A 0000 0089 0007 0063 0026 0023 0023 000B 000C 003F 008B 0007 003C 0008 002D 0009 0037 0016 002B 0056 001B 0025 0015 0005 0022 0006 0017 010D 000E 0008 000E 0100 002E 0008 002A 0038 000A 0035 000F 000C 0057 0007 0008 
[16:00:04.826][I][remote.pronto:237]: 000C 0019 004C 001F 006F 0009 0020 002D 0180 
[16:00:04.850][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.856][I][remote.pronto:237]: 0000 006D 000E 0000 0013 007E 0017 0006 0017 0055 0042 0023 0010 0017 0009 002A 000D 0027 0049 0007 002F 0008 0014 0008 0007 005C 00C7 0017 010A 0039 0181 
[16:00:04.883][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.888][I][remote.pronto:237]: 0000 006D 000C 0000 0018 000F 0087 0026 0049 000B 0007 0018 0015 001C 0009 0008 0071 0013 009C 000B 000B 0009 0007 0007 000A 0032 0011 0181 
[16:00:04.910][I][remote.pronto:229]: Received Pronto: data=
[16:00:04.916][I][remote.pronto:237]: 0000 006D 000D 0000 0007 0016 0097 0019 0010 0047 0028 0021 0007 002C 0008 0049 0017 000D 0016 0011 0083 003F 0017 000B 0018 0038 0014 0008 000F 0181 

What IP address is your MQTT broker on? Is it a static IP? Your ESP01s doesn’t seem to be connecting to it from what the logs say.

Eh? It’s on a static IP.

INFO Connected to MQTT broker!

I don’t know what’s going on there, but the dump you posted indicates you are trying to receive IR, not 433.

I was wondering about that. How do I tell it that I’m sending RF? And Ya, everything is coming out as pronto, which I am not yet familiar with. With other systems (SDR, dumb outlet receiver and various software tools), I’m only able to identify the timings, not the actual protocol being used. It seems like the protocol is something different than what either Tasmota or ESPHome know about.

From what I’ve read so far, maybe it doesn’t matter? The differences between IR and RF are minimal. Just a different frequency, and a few different data bits at the start and end of the transmission is all I have identified for differences between the two.

I don’t follow you at all.
And I don’t remember all the passes you have done here.
What hardware setup you have at the moment?

Well, looks like Tasmota wins the race to first working solution.

I got all the functionality I want with Tasmota. It’s able to not just receive the RF signal, but decode it down to the actual data sent - E.g. RFRECEIVED#DATA=0X12 I don’t have to worry about pulse timings or anything like that, except in the RFSend commands.

I’ve got the ESP-01S set up with:

  • Flashed tasmota-sensors.bin.gz (see also)
  • RF data output to the MCU on GPIO1/TX (RFSend)
  • RF data input from the RF demodulator on GPIO2 (RFRecv)
  • Relay state input from the MCU relay pin on GPIO3/RX (Switch_n)

Couldn’t put relay state on GPIO0 or GPIO2 because both of those pins affect ESP boot, and the relay state pin gets held low at power-up time.

Tasmota template for the ESP-01S (specific to this project):
{"NAME":"ESP-01S","GPIO":[0,1120,1152,192,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}

Configure Tasmota via its Console.

  • SetOption1 1 (disable accidental reset)
  • SetOption2 1 (Enable temperature)
  • SetOption8 1 (Fahrenheit)
  • SetOption30 1 (relays are lights - not sure this is needed)
  • SwitchMode 1

Create the rule to relay specific RF codes back out to the MCU:

Rule1 
on RfReceived#Data=0x12 do RfSend {"data":0x12,"bits":24,"protocol":1,"repeat":4,"pulse":211} endon
on RfReceived#Data=0x14 do RfSend {"data":0x14,"bits":24,"protocol":1,"repeat":4,"pulse":211} endon

You don’t have to relay the same code. You can receive one code and send another. This allows “pairing” ANY transmitter supported by Tasmota via the Tasmota configs rather than by pairing to the outlet’s MCU. Tasmota logs all RF signals it can decode, which makes for simple “pairing” via configs.

Configure MQTT in Tasmota.

Set up a MQTT-based switch in HA. Note the command template.

mqtt:
  switch:
    - name: "GE Outlet"
      state_topic: "stat/tasmota_C6F471/POWER"
      command_topic: "cmnd/tasmota_C6F471/RFSend"
      command_template: '{"Data":"{{ "0x14" if value == "ON" else "0x12" }}","Bits":24,"Protocol":1,"Repeat":4,"Pulse":211}'
      unique_id: sensor.ge_outlet
      retain: true
      device:
        name: "ESP-01S-3"
        manufacturer: "Tasmota"
        identifiers: "tasmota_C6F471"
        model: "ESP01S"

Use the UI to create a Light from a Switch. I could have created a Light instead of a Switch within MQTT. But a Light doesn’t support command_template, which is critical to sending the right on/off payloads to MQTT.

When I press the transmitter button, its payload is received by the ESP. If the payload matches the data in Rule1, it’s resent out to the MCU. If that changes the state of the outlet, the relay pin reflects the state like a switch, and the HA state is updated to show it.

When I turn the light on and off in HA, HA publishes to MQTT RFSend {<payload>} (same as the payload from the transmitter). This gets “sent” out the RFSend pin in Tasmota, to the MCU and the MCU changes the relay.

Goals accomplished:

  • Convert dumb wireless switch to smart, with HA integration. (Had to buy some parts tho)
  • Can be turned on/off with the wireless transmitter and without HA or any IP network.
  • Can be turned on and off through HA.
  • HA state is updated in real time.
  • The wireless buttons look nice and fit within a standard “Decora” switch plate, and I can get more buttons and pair them as needed.

If I think of any more setup or config details, I’ll update this post.

Parts list:

  • 1 x GE Outlet (these) When I bought them, they were $13. They’re up to $21 now.
  • 1 x ESP-01S module. If you can get them without pins, it’s best. But everything I could find included pins. We have to de-solder the pins for space.
  • 1 x Hi-Link HLK-PM03 100-240VAC → 3.3VDC/1A power module
  • 22AWG wire rated for 300V in five different colors

Tools:

  • Soldering iron with fine tip and suction de-soldering tool
  • Triangular screwdriver bits (iFixit)
  • Wire cutter/stripper
  • Dremel high-speed tool for cutting out the case for the power module and for drilling tiny holes in the PCB
  • 1.1mm drill bit
  • Files for finishing the case cuts
  • Dust mask and eye protection
  • Hot glue

Level of effort: Moderate. Can be completed in an evening or weekend.

  • Flash the ESP-01S over USB to serial with custom firmware (Tasmota) and configure it.
  • Solder and de-solder both SMD and thru-hole.
  • Drill holes in the circuit board for the wires to pass thru and attach to nearby pads without causing any unwanted contact.
  • Carve out the outlet case where the 3.3V module sits, and apply lots of hot glue to seal things back up.

ESP vs Outlet power and GND

WARNING - DANGEROUS!!!
DO NOT EVER TOUCH OR CONNECT TO THE INTERNAL CIRCUITS WHILE THE DEVICE IS PLUGGED IN. Device circuits are at mains voltage and will blow up your laptop, and can kill you too.

  • When testing, power the outlet’s MCU and RF receiver with a +3.3V supply attached to the V pad (red wire in my photos) and neg (-) to the GND pad (black wire).
  • When building, all GNDs are common and connected. The +3.3V connections are separate. The Hi-Link only powers the ESP. And the outlet’s original supply only powers its original parts.

Do not try to flash the ESP over serial after it’s been connected to the outlet circuit. The GPIO assignments may result in a short circuit. De-solder the ESP from the outlet circuit before connecting to serial.

Mini-project that spun off of this thread: A cheap 433MHz bridge.
ESP32-C6 board (so I can add BT relay later)
433MHz ASK/OOK transmitter and receiver
Some prototyping board

This hangs from the rafters in my garage and relays the 433MHz buttons I use as light switches to MQTT, which triggers an automation that turns on the smart outlets controlling the garage lights. It replaced an RTL-SDR solution. Improved reliability and response time from 1-2sec to “before your finger leaves the button”.

A pic of the remote installed nicely into the wall plate. The switch on the left is real and has a box behind it. The switch on the right is the remote for the GE outlet, and is just stuck to the wall. The screws don’t go into anything.

2 Likes