A sketch for NodeMCU which allows controlling a Seville Classics UltraSlimline 40-inch Tower Fan
MIT License
A sketch for the NodeMCU/ESP8266 which allows controlling a Seville Classics UltraSlimline 40-inch Tower Fan via MQTT.
config.h.example
to config.h
.config.h
to match your settings.Name | Default State Topic | Default Command Topic | Defined as | Accepts | Description |
---|---|---|---|---|---|
Alive | esp8266/ac/status |
N/A | ALIVE_TOPIC |
N/A | Contains the current status of the board. alive if it's online, otherwise dead . |
Power | esp8266/ac/on/state |
esp8266/ac/on/set |
ON_STATE_TOPIC , ON_SET_TOPIC
|
Boolean | Turns the fan on/off |
Oscillate | esp8266/ac/oscillate/state |
esp8266/ac/oscillate/set |
OSCILLATE_STATE_TOPIC , OSCILLATE_SET_TOPIC
|
Boolean | Turns oscillation on/off |
Speed | esp8266/ac/speed/state |
esp8266/ac/speed/set |
SPEED_STATE_TOPIC , SPEED_SET_TOPIC
|
eco , low , medium , high
|
Sets the fan speed |
Timer | esp8266/ac/timer/state |
esp8266/ac/timer/set |
TIMER_STATE_TOPIC , TIMER_SET_TOPIC
|
00:30 to 07:30 (hh:mm) |
Sets the timer |
Wind Mode | esp8266/ac/wind/state |
esp8266/ac/wind/set |
WIND_STATE_TOPIC , WIND_SET_TOPIC
|
normal , sleeping , natural
|
Sets the "wind mode" |
mqtt:
host: 192.168.1.2
username: username
password: password
discovery: true
fan:
- platform: mqtt
name: "Seville Fan"
availability_topic: "esp8266/fan/status"
command_topic: "esp8266/fan/on/set"
json_attributes_topic: "esp8266/fan/attributes"
oscillation_command_topic: "esp8266/fan/oscillate/set"
oscillation_state_topic: "esp8266/fan/oscillate/state"
speeds:
- 'off'
- eco
- low
- medium
- high
speed_command_topic: "esp8266/fan/speed/set"
speed_state_topic: "esp8266/fan/speed/state"
state_topic: "esp8266/fan/on/state"
input_select:
seville_fan_timer:
name: "Seville Fan - Timer"
icon: mdi:timer
initial: '0:00'
options:
- '0:00'
- '0:30'
- '1:00'
- '1:30'
- '2:00'
- '2:30'
- '3:00'
- '3:30'
- '4:00'
- '4:30'
- '5:00'
- '5:30'
- '6:00'
- '6:30'
- '7:00'
- '7:30'
seville_fan_wind:
name: "Seville Fan - Wind Mode"
icon: mdi:weather-windy
initial: 'Normal'
options:
- 'Normal'
- 'Sleeping'
- 'Natural'
automation:
- alias: Set Fan Wind Mode
hide_entity: True
trigger:
platform: state
entity_id: input_select.seville_fan_wind
action:
- service: mqtt.publish
data_template:
topic: "esp8266/fan/wind/set"
payload_template: '{{ states.input_select.seville_fan_wind.state }}'
- alias: Set Fan Timer
hide_entity: True
trigger:
platform: state
entity_id: input_select.seville_fan_timer
action:
- service: mqtt.publish
data_template:
topic: "esp8266/fan/timer/set"
payload_template: '{{ states.input_select.seville_fan_timer.state }}'
Serial outputs at 115200 baud. You can view the output in the Arduino IDE Serial Monitor.
Fork, modify, pull request.
MIT
The IRemoteESP8266 library thinks that the Seville remote is sending NEC codes but whenever I attempted to send NEC codes back they wouldn't work.
The only way I could get this working was to send "raw" IR codes. Quite annoying, since the sketch gets quite a bit bigger with the raw data.
The below notes are from when I was initially documenting the NEC code structure.
@scruss's IRTowerFanExample has already defined most of these codes, but his work was dated so I need to reconfirm.
You can view a full list of his codes (more complete then what I have below) here.
1st digit - Prefix bit (1)
2nd digit - Power Off/On (0/1)
3rd digit - Always 2?
4th digit - Timer in 0.5 hour increments from 0.5 to 7.5 (1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)
5th digit - Always 3?
6th digit - Oscillate Off/On (0/1)
7th digit - Always 4?
8th digit - Speed (Eco: 3, Low: 0, Medium: 1, High: 2)
Wind is supposedly sending the same speed command twice.
10203043 - Off, eco, no wind, no timer, no oscillate
11203043 - On, eco, no wind, no timer, no oscillate
11203040 - On, low, no wind, no timer, no oscillate
11203041 - On, med, no wind, no timer, no oscillate
11203042 - On, hih, no wind, no timer, no oscillate
11203143 - On, eco, no wind, no timer, oscillate
11203140 - On, low, no wind, no timer, oscillate
11203141 - On, med, no wind, no timer, oscillate
11203142 - On, hih, no wind, no timer, oscillate
11213043 - On, eco, no wind, 0.5 timer, no oscillate
11223043 - On, eco, no wind, 1.0 timer, no oscillate
11233043 - On, eco, no wind, 1.5 timer, no oscillate
11243043 - On, eco, no wind, 2.0 timer, no oscillate
11253043 - On, eco, no wind, 2.5 timer, no oscillate
11263043 - On, eco, no wind, 3.0 timer, no oscillate
11273043 - On, eco, no wind, 3.5 timer, no oscillate
11283043 - On, eco, no wind, 4.0 timer, no oscillate
11293043 - On, eco, no wind, 4.5 timer, no oscillate
112A3043 - On, eco, no wind, 5.0 timer, no oscillate
112B3043 - On, eco, no wind, 5.5 timer, no oscillate
112C3043 - On, eco, no wind, 6.0 timer, no oscillate
112D3043 - On, eco, no wind, 6.5 timer, no oscillate
112E3043 - On, eco, no wind, 7.0 timer, no oscillate
112F3043 - On, eco, no wind, 7.5 timer, no oscillate