Table of Contents |
---|
Flashing
Connect RX -> TX | 3.3 -> 3.3 | TX -> RX | GND -> GND and connect TP16 to GND
...
.
Press and hold the button while connecting to power.
This is an ESP 8285 in the iFan2.
Download and compile the Tasmota firmware:
git clone https://github.com/arendst/Tasmota.git
cd ./Tasmota/lib/
vi deployLibs.sh
Code Block |
---|
#!/bin/sh
rm -rf ~/Documents/Arduino/libraries/*
cp -R ./default/* ~/Documents/Arduino/libraries/.
cp -R ./lib_audio/* ~/Documents/Arduino/libraries/.
cp -R ./lib_basic/* ~/Documents/Arduino/libraries/.
cp -R ./lib_display/* ~/Documents/Arduino/libraries/.
cp -R ./lib_div/* ~/Documents/Arduino/libraries/.
cp -R ./lib_i2c/* ~/Documents/Arduino/libraries/.
cp -R ./lib_rf/* ~/Documents/Arduino/libraries/.
cp -R ./lib_ssl/* ~/Documents/Arduino/libraries/.
cp -R ./lib_ssl/* ~/Documents/Arduino/libraries/. |
chmod +x deployLibs.sh
./deployLibs.sh
Open Arduino IDE
Open tasmota project
Set board to ESP8285 and other settings, see below:
With the iFan in flash mode, click Upload.
Tasmota Commands
Cmd | Cmnd | Value | URL |
---|---|---|---|
Light Off | Power | 0 | http://xxx/cm?cmnd=Power 0 |
Light On | Power | 1 | http://xxx/cm?cmnd=Power 1 |
Fan Off | FanSpeed | 0 | http://xxx/cm?cmnd=FanSpeed 0 |
Low Speed | FanSpeed | 1 | http://xxx/cm?cmnd=FanSpeed 1 |
Med Speed | FanSpeed | 2 | http://xxx/cm?cmnd=FanSpeed 2 |
High Speed | FanSpeed | 3 | http://xxx/cm?cmnd=FanSpeed 3 |
Integration with Homebridge
Configure MQTT
Using the mqttthing homebridge plugin, we configure our fan using the following:
Code Block |
---|
{
"accessory": "mqttthing",
"type": "fan",
"name": "fireplace-fan",
"url": "http://192.168.1.50:1883",
"username": "homebridge",
"password": "pass",
"topics": {
"getOn": {
"topic": "stat/fireplace-fan/RESULT",
"apply": "return JSON.parse(message).FanSpeed > 0 ? true : false;"
},
"setOn": {
"topic": "cmnd/fireplace-fan/FanSpeed",
"apply": "return message ? '' : '0';"
},
"getRotationSpeed": {
"topic": "stat/fireplace-fan/RESULT",
"apply": "return Math.round(JSON.parse(message).FanSpeed * 33.3);"
},
"setRotationSpeed": {
"topic": "cmnd/fireplace-fan/FanSpeed",
"apply": "return Math.round(message / 33.3);"
}
},
"confirmationPeriodms": 1000
},
|
Order of Operations when Setting Rotation Speed
If we add some console.log statments in our apply function, we see that setting the rotation speed makes 2 calls. The first to setRotationSpeed and then to setOn.
Code Block |
---|
setRotationSpeed - mesage=73
setOn - mesage=true |
After installing the iFan for use with my fireplace, I concluded that the fan level 1 was too low and decided to bypass it. This new configuration changes the fan such that it operates at 0% (off), 50%(fan level2) and 100%(fan level 3).
Code Block |
---|
{
"accessory": "mqttthing",
"type": "fan",
"name": "fireplace-fan",
"url": "http://192.168.1.50:1883",
"username": "homebridge",
"password": "pass",
"topics": {
"getOn": {
"topic": "stat/fireplace-fan/RESULT",
"apply": "return JSON.parse(message).FanSpeed > 0 ? true : false;"
},
"setOn": {
"topic": "cmnd/fireplace-fan/FanSpeed",
"apply": "return message ? '' : '0';"
},
"getRotationSpeed": {
"topic": "stat/fireplace-fan/RESULT",
"apply": "val=JSON.parse(message).FanSpeed; if(val==0)return '0'; if(val=='2') return '50'; if(val==3) return '100';"
},
"setRotationSpeed": {
"topic": "cmnd/fireplace-fan/FanSpeed",
"apply": "if(message >50) return 3; if(messag=e=0) return 0; return 2;"
}
},
"confirmationPeriodms": 1000
}, |
References
Reference | URL |
---|---|
Flashing Tasmota | https://tasmota.github.io/docs/devices/Sonoff-iFan02/ |
Tasmota Commands | https://tasmota.github.io/docs/Commands/ |
Issue | https://github.com/arachnetech/homebridge-mqttthing/issues/78 |