ESPEasy
From Lolly's Wiki
This is about ESP32 and ESP8266 microcontrollers
Flash the firmware
Flash!
Ah-ah
Saviour of the universe!
$ sudo apt install --yes esptool
$ wget https://github.com/letscontrolit/ESPEasy/releases/download/mega-20200515/ESPEasy_mega-20200515.zip
$ esptool --port /dev/ttyUSB0 --baud 115200 write_flash 0 ESP_Easy_mega_20200516_test_beta_ESP8266_4M1M.bin
esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 3c:71:bf:2a:a6:0b
Enabling default SPI flash mode...
Configuring flash size...
Auto-detected Flash size: 4MB
Erasing flash...
Took 2.33s to erase flash block
Writing at 0x000dbc00... (87 %)
Connect via Serial
$ minicom -D /dev/ttyUSB0 --baudrate 115200
Welcome to minicom 2.8
OPTIONS: I18n
Port /dev/ttyUSB0, 10:28:08
Press CTRL-A Z for help on special keys
Posssible commands via serial connection
You do not see what you type until you hit enter, then you will see the command you have entered and the result, like:
>Save
OK
You can find all commands here: ESPEasy/docs/source/Plugin/P000_commands.repl.
This is just a subset:
Get the Allowed IP range
- AccessInfo
Get the build number
- Build
Clear allowed IP range for the web interface for the current session
- ClearAccessBlock
Clear the password of the unit
- ClearPassword
Get or set the date and time
- Datetime[,YYYY-MM-DD[,hh:mm:ss]]
Get or set DNS configuration
- DNS[,<IP address>]
Get or set serial port debug level
- Debug[,<1-4, default is 2>]
Get or set the gateway configuration
- Gateway[,<IP address>]
Run I2C scanner to find connected I2C chips. Output will be sent to the serial port
- I2Cscanner
Get or set IP address
- IP[,<IP address>]
Set the password of the unit
- Password <mypassword>
Reboot
- Reboot
Reset config to factory default. Caution, all settings will be lost!
Be careful! Do you want this? This deletes the whole configuration but not the Firmware.
- Reset
Save config to persistent flash memory
- Save
Show settings on serial terminal
- Settings
TimeZone
- TimeZone[,<minutes from UTC>]
Get or set the status of NTP (Network Time Protocol)
- UseNTP[,<0/1>]
Configure your local wifi credentials
- WifiSSID <myssid>
- WifiKey <mypassword>
- WifiConnect
MQTT
Controller
Configure MQTT connection to the broker like this:
- Click on Add
- Choose Type openHAB
- Enter your parameters like this where banana1.fritz.box in this example is the server your MQTT broker is running at.
Device
Now you need to listen on MQTT events. For that you need to configure a Generic - MQTT Import device:
- Click on Add
- Choose Type Generic MQTT Import
- Enter your parameters like this where MQTT is the event name for the #Rules and MQTT Topic n are the topics you listen at.
Rules
Switch relays based on MQTT events
On my relay board ESP12F_Relay_X4 I configured #MQTT and use rules to switch the 4 relays.
on system#boot do
let,1,15 // Relay 1 is GPIO15
let,2,14 // Relay 2 is GPIO14
let,3,12 // Relay 3 is GPIO12
let,4,13 // Relay 4 is GPIO13
endon
on MQTT#Relay* do
if %eventvalue1%<0
//
// Values below 0 sets timer to %eventvalue1%*-1 seconds
//
let,5,abs(%eventvalue1%)
logentry,"%eventname%: Turn on {substring:5:11:%eventname%} (GPIO%v{substring:10:11:%eventname%}%) for %v5% seconds."
timerSet,{substring:10:11:%eventname%},%v5%
gpio,%v{substring:10:11:%eventname%}%,1
elseif %eventvalue1%=1
//
// Value equal 1 turn on relay
//
logentry,"%eventname%: Turn on {substring:5:11:%eventname%} (GPIO%v{substring:10:11:%eventname%}%)."
gpio,%v{substring:10:11:%eventname%}%,1
elseif %eventvalue1%=0
//
// Value equal 0 turn off relay
//
logentry,"%eventname%: Turn off {substring:5:11:%eventname%} (GPIO%v{substring:10:11:%eventname%}%)."
timerSet,{substring:10:11:%eventname%},0
gpio,%v{substring:10:11:%eventname%}%,0
endif
endon
on Cron#Relay4 do
logentry,"%eventname%: Turn on Relay4."
gpio,%v4%,1
timerSet,4,30
endon
on Rules#Timer do
logentry,"%eventname%: %eventvalue1% GPIO%v%eventvalue1%%"
gpio,%v%eventvalue1%%,0
endon
Problems
interface 0 claimed by ch341 while 'brltty' sets config #1
Oct 9 14:40:06 lollybook kernel: [372389.769039] usb 3-1.4.3: ch341-uart converter now attached to ttyUSB0
Oct 9 14:40:07 lollybook kernel: [372390.769995] usb 3-1.4.3: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
Oct 9 14:40:07 lollybook kernel: [372390.771187] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
Oct 9 14:40:07 lollybook kernel: [372390.771258] ch341 3-1.4.3:1.0: device disconnected
I found this:
for f in /usr/lib/udev/rules.d/*brltty*.rules; do
sudo ln -s /dev/null "/etc/udev/rules.d/$(basename "$f")"
done
sudo udevadm control --reload-rules
But I also had to disable the brltty-udev.service
$ sudo systemctl stop brltty-udev.service
$ sudo systemctl mask brltty-udev.service
Created symlink /etc/systemd/system/brltty-udev.service → /dev/null.
After disabling brltty I finally got:
Oct 9 14:41:30 lollybook kernel: [372473.985072] ch341 3-1.4.3:1.0: ch341-uart converter detected
Oct 9 14:41:30 lollybook kernel: [372473.987063] usb 3-1.4.3: ch341-uart converter now attached to ttyUSB0