Compare commits

...

24 Commits

Author SHA1 Message Date
084cf61b26 Update README.md 2025-03-16 10:15:06 +01:00
c94e8de9d9 Update readme.md 2025-03-16 10:10:57 +01:00
8ce77c5f31 Update readme.md 2025-03-16 10:09:46 +01:00
cb9910c4b9 Update readme.md 2025-03-16 09:52:19 +01:00
d19900bc7f Create readme.md 2025-03-16 09:52:01 +01:00
afd14e6f67 Delete Schematic directory 2025-03-16 09:45:05 +01:00
51f84e40f3 Add files via upload 2025-03-16 09:44:50 +01:00
7f8c38b0e9 Update esp360remote.yaml 2024-10-29 19:21:00 +01:00
91ca5e2c09 Update esp360remote.yaml 2024-10-29 18:51:14 +01:00
ae42342565 Update esp360remote.yaml 2024-10-29 18:45:00 +01:00
ca51817da5 Update esp360remote.yaml 2024-10-29 18:21:46 +01:00
015225182e Rename esp360remote.yml to esp360remote.yaml 2024-10-29 18:19:10 +01:00
dbe125c277 Rename esp360remote.yaml to esp360remote.yml 2024-10-29 18:17:24 +01:00
02c5edf95f Merge pull request #10 from ryfow/lasko-fan
Add example IR buttons for a Lasko fan
2024-10-21 08:36:16 +02:00
e3c1028a1e Add example IR buttons for a Lasko fan 2024-10-20 18:53:24 -06:00
b9cbd22a0a Update esp360remote.yaml 2024-09-15 11:32:34 +02:00
70c6994569 Update esp360remote.yaml 2024-09-15 11:15:47 +02:00
2d2fe8c0f5 Update esp360remote.yaml 2024-09-15 11:11:03 +02:00
a9886f3d5a Update esp360remote.yaml 2024-09-15 09:57:08 +02:00
01e5bc6b03 Add files via upload 2024-09-15 09:53:12 +02:00
00e459e42a Delete ESPHome 2024-09-15 09:52:11 +02:00
66c538c1c0 Create ESPHome 2024-09-15 09:50:40 +02:00
4e51e8b918 Add files via upload 2024-09-15 09:39:40 +02:00
0aa1021ccc Delete ESPHome Configuration/esp360remote.yaml 2024-09-15 09:37:33 +02:00
13 changed files with 283 additions and 11 deletions

View File

@ -48,26 +48,31 @@ ota:
- platform: esphome - platform: esphome
wifi: wifi:
on_connect:
- delay: 5s # Gives time for improv results to be transmitted
- ble.disable:
on_disconnect:
- ble.enable:
# Enable fallback hotspot (captive portal) in case wifi connection fails # Enable fallback hotspot (captive portal) in case wifi connection fails
ap: ap:
ssid: "${name}" ssid: "${name}"
password: "" password: ""
esp32_improv:
authorizer: none
# Sets up the improv via serial client for Wi-Fi provisioning # Sets up the improv via serial client for Wi-Fi provisioning
improv_serial: improv_serial:
esp32_improv:
authorizer: false
dashboard_import: dashboard_import:
package_import_url: github://esphome/esphome-project-template/project-template-esp32.yaml@v6 package_import_url: github://ale1800/ESP-360-REMOTE/ESPHome/esp360remote.yaml@main
import_full_config: false # or true import_full_config: true # or true
web_server:
port: 80
captive_portal: #captive_portal:
#i2c bus definition #i2c bus definition
i2c: i2c:
@ -82,14 +87,14 @@ i2c:
sensor: sensor:
- platform: shtcx - platform: shtcx
temperature: temperature:
name: "Living Room Temperature" name: "ESP360Remote Temperature"
filters: filters:
- median: - median:
window_size: 5 window_size: 5
send_every: 1 send_every: 1
- offset: -3.7 - offset: -3.7
humidity: humidity:
name: "Living Room Humidity" name: "ESP360Remote Humidity"
filters: filters:
- median: - median:
window_size: 5 window_size: 5

181
ESPHome/esp360remote.yaml Normal file
View File

@ -0,0 +1,181 @@
substitutions:
name: "esp360remote"
friendly_name: "ESP360Remote"
project_name: "ale1800.ESP360Remote"
project_version: "2.0"
esphome:
name: "${name}"
name_add_mac_suffix: true
project:
name: "${project_name}"
version: "${project_version}"
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
services:
- service: send_ir_raw
variables:
command: int[]
then:
- remote_transmitter.transmit_raw:
transmitter_id: IR_TX
code: !lambda 'return command;'
- service: send_rf_raw
variables:
protocol_number: int
raw_data: string
repeat_times: int
wait_time: int
then:
- remote_transmitter.transmit_rc_switch_raw:
transmitter_id: RF_TX
protocol: !lambda 'return esphome::remote_base::RC_SWITCH_PROTOCOLS[protocol_number];'
code: !lambda 'return raw_data;'
repeat:
times: !lambda 'return repeat_times;'
wait_time: !lambda 'return wait_time;'
ota:
- platform: esphome
wifi:
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
password: ""
web_server:
port: 80
# Sets up the improv via serial client for Wi-Fi provisioning
improv_serial:
dashboard_import:
package_import_url: github://ale1800/ESP-360-REMOTE/ESPHome/esp360remote.yaml@main
import_full_config: true
captive_portal:
#i2c bus definition
i2c:
sda: 21
scl: 22
scan: true
id: bus_a
#Offsets have been added to the measurements taken.
#These are necessary due to the heat generated by the PCB, the second layer of the board, and the case.
#This way, sufficiently accurate values are obtained for automations
sensor:
- platform: shtcx
temperature:
name: "ESP360Remote Temperature"
filters:
- median:
window_size: 5
send_every: 1
- offset: -3.7
humidity:
name: "ESP360Remote Humidity"
filters:
- median:
window_size: 5
send_every: 1
- offset: +19.1
address: 0x70
update_interval: 300s
- platform: bh1750
name: "BH1750 Illuminance"
filters:
- multiply: 5
address: 0x23
update_interval: 1s
#Setting up IR and RF receivers
remote_receiver:
- id: RF_RX
pin:
number: GPIO5
inverted: True
dump:
# - raw #(delete # for raw data)
- rc_switch
tolerance: 35%
filter: 200us
idle: 4ms
buffer_size: 10kb
on_rc_switch:
- homeassistant.event:
event: esphome.rf_code_received_test
data:
protocol: !lambda 'return x.protocol;'
code: !lambda 'return x.code;'
- id: IR_RX
pin:
number: GPIO19
inverted: true
mode:
input: true
pullup: true
dump: all
on_raw:
- homeassistant.event:
event: esphome.ir_raw_code_received
data:
code: !lambda '
reverse(x.begin(), x.end());
std::string str = "";
for (auto it = x.begin(); it != x.end(); ++it)
{
str += to_string(*it);
str += ",";
if (it != x.end() - 1) str += " ";
}
if (str.size() > 0) str.erase( str.end() - 2);
return esphome::to_string("[" + str + "]");'
on_pronto:
- homeassistant.event:
event: esphome.ir_pronto_code_received
data:
code: !lambda 'return x.data;'
on_lg:
- homeassistant.event:
event: esphome.ir_lg_code_received
data:
data: !lambda 'return x.data;'
nbits: !lambda 'return x.nbits;'
on_panasonic:
- homeassistant.event:
event: esphome.ir_panasonic_code_received
data:
address: !lambda 'return x.address;'
command: !lambda 'return x.command;'
#Setting up IR and RF transmitters
remote_transmitter:
- id: RF_TX
pin: GPIO18
carrier_duty_percent: 100%
- id: IR_TX
pin: GPIO13
carrier_duty_percent: 50%
#Status LED
switch:
- platform: gpio
pin: 12
name: "Status Led"
restore_mode: ALWAYS_ON

Binary file not shown.
1 Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y Layer Rotation Comment
2 3.3V LED0603-R-RD_BLUE 193.8mm -46.99mm 193.8mm -46.99mm 193.2mm -46.39mm T 135 19-217/BHC-ZL1M2RY/3T
3 BOOT SW-SMD_L6.0-W3.5-P9.0 203.33mm -35.05mm 203.33mm -35.05mm 200.36mm -32.08mm T 315 TS-KG001T
4 C1 C0603 194.82mm -27.43mm 194.82mm -27.43mm 194.32mm -26.94mm T 315 22uF
5 C2 C0402 196.47mm -37.08mm 196.47mm -37.08mm 196.08mm -36.7mm T 315 10uF
6 C3 C0603 187.45mm -34.67mm 187.45mm -34.67mm 187.95mm -35.17mm T 135 22uF
7 C4 C0402 196.6mm -23.88mm 196.6mm -23.88mm 196.98mm -24.26mm T 135 100nF
8 C7 C0402 230.12mm -42.67mm 230.12mm -42.67mm 229.74mm -42.29mm T 315 100nF
9 C8 C0402 225.43mm -46.1mm 225.43mm -46.1mm 225.81mm -46.49mm T 135 100nF
10 C9 C0402 210.31mm -52.71mm 210.31mm -52.71mm 210.7mm -53.09mm T 135 100nF
11 C11 C0402 195.58mm -37.97mm 195.58mm -37.97mm 195.2mm -37.59mm T 315 100nF
12 C12 C0402 214.63mm -14.61mm 214.63mm -14.61mm 214.25mm -14.99mm T 45 100nF
13 C14 C0402 203.2mm -12.45mm 203.2mm -12.45mm 203.59mm -12.06mm T 225 100nF
14 C16 C0603 189.1mm -26.67mm 189.1mm -26.67mm 189.6mm -27.17mm T 135 22pF
15 C18 C0402 210.57mm -18.16mm 210.57mm -18.16mm 210.95mm -17.78mm T 225 100nF
16 CN2 CONN-SMD_4P-P1.00_SM04B-SRSS-TB-LF-SN 198.83mm -48.97mm 199.39mm -48.64mm 199.06mm -46.21mm T 330 SM04B-SRSS-TB (LF)(SN)
17 D1 SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BR 197.36mm -21.21mm 197.36mm -21.21mm 197.08mm -19.58mm T 135 USBLC6-2SC6
18 H1 HDR-TH_8P-P2.54-V-F-R2-C4-S2.54-1 226.31mm -38.1mm 226.31mm -38.1mm 224.52mm -41.69mm T 45 220S-2*4P H=8.5MM Ytype Gold-plated
19 J1 PIN_HEADER_STRAIGHT_1X04_PITCH2.54MM 210.95mm -42.42mm 210.95mm -42.42mm 213.64mm -45.11mm T 225 Header 1X4 pins
20 L2 IND-SMD_L3.0-W3.0 191.14mm -33.78mm 191.14mm -33.78mm 190.2mm -34.72mm T 225 2.2uH
21 Q4 SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR 212.01mm -14.05mm 212.34mm -13.72mm 210.97mm -13.75mm T 225 SS8050_C2150
22 Q5 SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR 209.47mm -11.51mm 209.8mm -11.18mm 208.43mm -11.21mm T 225 SS8050_C2150
23 R1 R0402 222.5mm -48.01mm 222.5mm -48.01mm 222.2mm -47.7mm T 315 5.1kΩ
24 R7 R0603 224.36mm -47.8mm 224.36mm -47.8mm 223.83mm -47.27mm T 315 1kΩ
25 R8 R0603 197.36mm -35.81mm 197.36mm -35.81mm 197.89mm -36.35mm T 135 10kΩ
26 R11 R0603 192.02mm -39.12mm 192.02mm -39.12mm 191.49mm -39.65mm T 45 1kΩ
27 R13 R0402 198.88mm -10.29mm 198.88mm -10.29mm 199.19mm -9.98mm T 225 5.1kΩ
28 R14 R0603 190.37mm -25.4mm 190.37mm -25.4mm 190.91mm -25.93mm T 135 180kΩ
29 R15 R0603 191.52mm -24.26mm 191.52mm -24.26mm 192.05mm -24.79mm T 135 180kΩ
30 R16 R0402 221.11mm -49.66mm 221.11mm -49.66mm 221.41mm -49.96mm T 135 5.1kΩ
31 R17 R0402 189.23mm -19.56mm 189.23mm -19.56mm 188.92mm -19.86mm T 45 5.1kΩ
32 R22 R0603 210.57mm -15.49mm 210.57mm -15.49mm 210.03mm -14.96mm T 315 10kΩ
33 R23 R0603 208.03mm -12.95mm 208.03mm -12.95mm 208.56mm -13.49mm T 135 10kΩ
34 R24 R0603 193.68mm -25.27mm 193.68mm -25.27mm 194.21mm -24.74mm T 225 10kΩ
35 R25 R0603 195.96mm -26.29mm 195.96mm -26.29mm 196.49mm -26.82mm T 135 10kΩ
36 R26 R0603 198.5mm -34.67mm 198.5mm -34.67mm 199.03mm -35.2mm T 135 10kΩ
37 U2 TSOT-23-5_L2.9-W1.6-P0.95-LS2.8-BR 192.28mm -28.96mm 192.28mm -28.96mm 190.69mm -29.2mm T 225 MT3410LB
38 U3 DFN-4_L2.0-W2.0-P1.00-BL-EP 211.96mm -51.18mm 211.96mm -51.18mm 212.26mm -52.19mm T 45 SHTC3-10000
39 U7 WSOF-6_L2.6-W1.6-P0.50-TL-EP 228.22mm -44.83mm 228.22mm -44.83mm 229.58mm -44.18mm T 225 BH1750FVI-TR
40 U9 WIFI-SMD_ESP32-WROOM-32E 216.81mm -28.17mm 216.28mm -28.7mm 216.28mm -15.97mm T 225 ESP32-WROOM-32E(8MB)
41 U13 SOP-16_L10.0-W3.9-P1.27-LS6.0-BL 204.47mm -18.03mm 204.47mm -18.03mm 205.58mm -12.86mm T 225 CH340C
42 USBC1 USB-C_SMD-TYPE-C-31-M-12 194.8mm -15.09mm 195.07mm -15.37mm 199.34mm -13.51mm T 225 TYPE-C-31-M-12

Binary file not shown.

Binary file not shown.
1 Designator Footprint Mid X Mid Y Ref X Ref Y Pad X Pad Y Layer Rotation Comment
2 C5 C0603 10.83mm -3.05mm 10.83mm -3.05mm 11.44mm -2.7mm T 210 10uF
3 C6 C0402 14.89mm 23.24mm 14.89mm 23.24mm 15.44mm 23.24mm T 180 100nF
4 C10 C0402 -4.44mm 5.21mm -4.45mm 5.21mm -4.83mm 4.82mm T 45 100nF
5 H2 HDR-TH_8P-P2.54-V-M-R2-C4-S2.54 16.8mm 5.08mm 16.8mm 5.08mm 20.39mm 6.88mm B 225 PZ254V-12-8P
6 H3 HDR-TH_5P-P2.00-V-F -3.17mm 19.94mm -3.18mm 19.94mm -7.17mm 19.94mm T 0 HDR-TH_5P-P2.00-V-F
7 IR1 OPTO-TH_IRM-3638T 10.96mm -6.35mm 10.96mm -6.35mm 8.76mm -7.62mm T 30 IRM-3638T
8 Q1 SOT-23-3_L2.9-W1.6-P1.90-LS2.8-BR 8.37mm 12.87mm 8.03mm 13.21mm 8.24mm 11.66mm T 315 AO3400A
9 R2 R1206 14.26mm 30.61mm 14.26mm 30.61mm 13.21mm 31.65mm T 315 10Ω
10 R3 R0603 6.89mm -3.3mm 6.89mm -3.3mm 7.54mm -2.93mm T 210 220Ω
11 R4 R0603 10.19mm 11.18mm 10.19mm 11.18mm 9.66mm 10.64mm T 45 220Ω
12 R5 R0603 12.99mm 9.78mm 12.99mm 9.78mm 13.52mm 9.25mm T 135 10kΩ
13 R6 R0603 7.78mm -4.7mm 7.78mm -4.7mm 8.43mm -4.32mm T 210 10kΩ
14 R9 R1206 12.61mm 28.83mm 12.61mm 28.83mm 11.56mm 29.87mm T 315 10Ω
15 R18 R1206 0.54mm 36.07mm 0.54mm 36.07mm -0.94mm 36.07mm T 0 10Ω
16 R19 R1206 0.54mm 33.66mm 0.54mm 33.66mm -0.94mm 33.66mm T 0 10Ω
17 R20 R1206 -20.41mm 14.48mm -20.41mm 14.48mm -20.41mm 15.96mm T 270 10Ω
18 R21 R1206 -17.62mm 14.48mm -17.62mm 14.48mm -17.62mm 15.96mm T 270 10Ω
19 U1 LED-TH_BD5.9-P2.54-FD 10.07mm 6.1mm 10.07mm 6.1mm 10.96mm 6.99mm T 225 DY-IR333-A
20 U2 HDR-TH_4P-P2.54-V-F-3 11.05mm 19.94mm 11.05mm 19.94mm 7.24mm 19.94mm T 0 HDR-TH_4P-P2.54-V-F-3
21 U4 HDR-TH_3P-P2.54-V-F-3 -4.7mm 2.16mm -4.7mm 2.16mm -6.5mm 0.36mm T 45 HDR-TH_3P-P2.54-V-F-3
22 U5 LED-TH_BD5.9-P2.54-FD 13.72mm 14.35mm 13.72mm 14.35mm 13.72mm 15.62mm T 270 DY-IR333-A
23 U6 LED-TH_BD5.9-P2.54-FD 9.4mm 24mm 9.4mm 24mm 8.5mm 24.9mm T 315 DY-IR333-A
24 U14 LED-TH_BD5.9-P2.54-FD 1.27mm 26.16mm 1.27mm 26.16mm 0mm 26.16mm T 0 DY-IR333-A
25 U16 LED-TH_BD5.9-P2.54-FD -7.87mm 24mm -7.87mm 24mm -6.98mm 24.9mm T 225 DY-IR333-A
26 U17 LED-TH_BD5.9-P2.54-FD 1.18mm 14.61mm 1.18mm 14.61mm 1.18mm 15.88mm T 270 DY-IR333-A
27 U18 LED-TH_BD5.9-P2.54-FD -10.92mm 14.22mm -10.92mm 14.22mm -10.92mm 15.49mm T 270 DY-IR333-A
28 U19 LED-TH_BD5.9-P2.54-FD -7.87mm 6.48mm -7.87mm 6.48mm -8.77mm 7.38mm T 315 DY-IR333-A
29 U20 LED-TH_BD5.9-P2.54-FD 1.65mm 1.91mm 1.65mm 1.91mm 0.38mm 1.91mm T 0 DY-IR333-A
30 U21 HDR-TH_3P-P2.54-V-F-3 -14.35mm 19.94mm -14.35mm 19.94mm -16.89mm 19.94mm T 0 HDR-TH_3P-P2.54-V-F-3

Binary file not shown.

View File

@ -0,0 +1,10 @@
I suggest you to buy also the right angle pin I soldered on the RF modules.
- I used [these](https://www.lcsc.com/product-detail/_XFCN-_C781823.html) for the 3-pin transmitter module ([STX883Pro](https://www.nicerf.com/ask-modules/ask-transmitter-module-stx883pro.html)).
They have the standard pitch of 2.54 but they are thin enough to be inserted in the female connector on the board **You have to buy at least 4 (2x2)** and then cut one.
- For the receiver module ([SRX883Pro](https://www.nicerf.com/ask-modules/ask-receiver-module-srx883pro.html)), pins are [these](https://www.lcsc.com/product-detail/_HCTL-_C2905972.html). Also with these you have to cut one (I connected it to the board only with 5 pins out 6)
Pay attention if you need the RF modules in 433MHz or 315MHz version. And then buy the spring antenna accordingly, like [these ones](https://www.lcsc.com/products/Antennas_912.html).
If you let the manufacturer assemble the board, remember to ask them to bend the IR leds to 45°, otherwise the will solder them straight.

View File

@ -2,7 +2,8 @@
## An all-in-one remote based on the ESP32-WROOM-32E ## An all-in-one remote based on the ESP32-WROOM-32E
- ## ESP 360 Remote on [CrowdSupply](https://www.crowdsupply.com/aaelectronics/esp-360-remote) - ## ~~ESP 360 Remote on [CrowdSupply](https://www.crowdsupply.com/aaelectronics/esp-360-remote)~~ (Out of stock)
- ## If you want, you can build it by yourself. Productions files are [here](https://github.com/ale1800/ESP-360-REMOTE/tree/main/Hardware/Production)
- ## ESP 360 Remote on [Discord](https://discord.gg/PsrK3KDkRy) - ## ESP 360 Remote on [Discord](https://discord.gg/PsrK3KDkRy)

View File

@ -0,0 +1,75 @@
# This provides IR buttons for controlling a Lasko fan.
#
# I think Lasko may use the same codes for different meanings, so your mileage may vary on the button names.
#
# I used the same technique documented at https://ryfow.com/articles/esp-360-remote-rc300/ to find these codes.
# The tricky part was figuring out that carrier_frequency: 38000 is required. I eventually guessed my way into that.
remote_receiver:
- id: IR_RX
pin:
number: GPIO19
inverted: true
idle: 100ms
dump: raw
remote_transmitter:
- id: IR_TX
pin: GPIO13
carrier_duty_percent: 50%
button:
- platform: template
name: "Fan Power"
on_press:
remote_transmitter.transmit_raw:
code: [1313, -383, 1312, -382, 460, -1234, 1313, -382, 1312, -382, 460, -1235, 466, -1229, 460, -1234, 462, -1233, 462, -1232, 461, -1233, 1314]
carrier_frequency: 38000
repeat:
times: 10
wait_time: 7200us
transmitter_id: IR_TX
- platform: template
name: "Fan Speed"
on_press:
remote_transmitter.transmit_raw:
code: [1282, -414, 1307, -387, 454, -1240, 1306, -389, 1279, -415, 454, -1240, 431, -1263, 456, -1238, 432, -1262, 457, -1238, 1308, -387, 430]
carrier_frequency: 38000
repeat:
times: 10
wait_time: 8000us
transmitter_id: IR_TX
- platform: template
name: "Fan Timer"
on_press:
remote_transmitter.transmit_raw:
code: [1325, -372, 1320, -374, 471, -1223, 1322, -372, 1325, -370, 471, -1223, 471, -1223, 472, -1222, 1323, -373, 471, -1222, 471, -1223, 470]
carrier_frequency: 38000
repeat:
times: 10
wait_time: 8000us
transmitter_id: IR_TX
- platform: template
name: "Fan Ion"
on_press:
remote_transmitter.transmit_raw:
code: [1325, -372, 1325, -369, 472, -1221, 1327, -369, 1324, -370, 474, -1219, 1326, -370, 473, -1221, 472, -1222, 499, -1195, 476, -1121, 572, -2133, 172]
carrier_frequency: 38000
repeat:
times: 10
wait_time: 8000us
transmitter_id: IR_TX
- platform: template
name: "Fan Oscillate"
on_press:
remote_transmitter.transmit_raw:
code: [1315, -382, 1313, -381, 462, -1231, 1314, -382, 1314, -380, 464, -1229, 465, -1230, 1287, -409, 463, -1230, 464, -1230, 466, -1229, 464]
carrier_frequency: 38000
repeat:
times: 10
wait_time: 8000us
transmitter_id: IR_TX