Build and update from Visual Studio Code using PlatformIO
Pages 139
Getting started
- Backup the stock firmware
- Flash a pre-built binary image
- Flash a virgin Itead Sonoff device without opening
- Flash TUYA-based device without opening
- Flash Shelly device without opening
- Using PlatformIO
- from Visual Studio Code
- Using Arduino IDE
- Build the Web Interface
- Over-the-air updates
- Two-step updates
- ESPurna OTA Manager
- NoFUSS
- Troubleshooting
Supported hardware and options
Configuration
Integrations
- MQTT
- REST API
- Domoticz
- Home Assistant
- InfluxDB
- Prometheus metrics
- Thingspeak
- Alexa
- Google Home
Network
Developers
- Architecture
- 3rd Party Plugins
- Coding style
- Pull Requests
More around ESPurna
Clone this wiki locally
This page summarizes all you need to compile and deploy Espurna on Windows 10 with Visual Studio Code (VSCode). VSCode is a free, open source, light IDE from Microsoft.
Install main components
Git for Windows
Download it from https://git-scm.com/download/win (choose appropriate version).
Ensure that it modifies the path variable.
Visual Studio Code
Download it from https://code.visualstudio.com/docs/?dv=win
Ensure that it updates the PATH variable (default option).
Node.js and npm
Download it from https://nodejs.org/en/download/ (more convenient with the Windows Installer (.msi) version)
NPM gets installed with node.js
Restart your computer.
Launch Visual Studio Code. It should detect git (displaying a message in a git pane at the bottom of the window).
Gulp
From VSC, open a terminal (CTRL+SHIFT+` OR CTRL+SHIFT+P and search for Terminal: Create New Integrated Terminal
) and run
npm install --global gulp-cli
Install main extensions
From the extensions pane of Visual Studio Code install the following extensions.
Mandatory :
- Platformio IDE
Optionally :
- Python
- GitLens (to show modifications history)
Get the code
Clone https://github.com/xoseperez/espurna.git
For example into C:\Users\{user}\Documents\PlatformIO\Projects\xoseperez-espurna
With VSCode, open xoseperez-espurna\code
folder. PlatformIO IDE will start and detect platformio project.
Build and update
Now you can build espurna, including web files, directly from Visual Studio Code.
To build / upload firmware for a specific board, use "Tasks / Run Task..." (CTRL+ALT+T by default) and search for "Build (...)" / "Upload (...)" tasks.
PlatformIO: Build
and button on the bottom bar builds 'default' environment specified in 'code/platformio.ini' (wemos-d1mini-relayshield
at the time of writing this)
Environment variables for OTA uploads
OTA parameters are now picked up from environment variables.
You need to set them up for every Upload (...)
task you want to use. Here's how to do it:
- Press F1 (on Mac it's usually Fn+F1)
- Switch PlatformIO Project Environment from the bottom bar (Optional. Otherwise, default environment from the platformio.ini is used)
- Select
Tasks: Configure Task
(type a part of the name and click it when it appears) - Select
Upload (...)
task you need to use (type a part of the name and click it when it appears) - An editor for a JSON config opens. You'll see a section added with your task name, ex.:
"type": "PlatformIO",
"task": "Upload (itead-sonoff-th)",
"problemMatcher": [
"$platformio"
]
- Add the
options
section before theproblemMatcher
, so you have this:
"type": "PlatformIO",
"task": "Upload (itead-sonoff-th)",
"options": {
"env": {
"ESPURNA_IP": "192.168.4.1",
"ESPURNA_AUTH": "fibonacci"
}
},
"problemMatcher": [
"$platformio"
]
- If you have custom IP or password, put them here. Otherwise, use
192.168.4.1
andfibonacci
- If you have Zeroconf configured, you can use Zeroconf names here, ex:
sonoff-kitchen.local
- Save and close the file. Now you can OTA upload this target successfully
To reuse the same environment (like itead-sonoff-th
) you will need to manually specify platformio command as a "shell" task. The pro is you can seamlessly support several devices with different IPs and passwords right from the VSCode (ref: Platform.IO documentation).
The example below uses special hardware environment, however it is encouraged to use esp8266-<size>-base
environments instead and provide hardware flags via ESPURNA_FLAGS
environment variable (e.g. "ESPURNA_FLAGS": "-DITEAD_SONOFF_BASIC"
)
Here we are declaring "Arbol1" and "Light1" tasks that use the same itead-sonoff-basic
environment:
{
"label": "PlatformIO: Arbol1",
"type": "shell",
"command": "platformio run -e itead-sonoff-basic -t upload",
"options": {
"env": {
"ESPURNA_IP": "192.168.1.100",
"ESPURNA_AUTH": "---"
}
},
"problemMatcher": [
"$platformio"
]
},
{
"label": "PlatformIO: Light1",
"type": "shell",
"command": "platformio run -e itead-sonoff-basic -t upload",
"options": {
"env": {
"ESPURNA_IP": "192.168.1.200",
"ESPURNA_AUTH": "---"
}
},
"problemMatcher": [
"$platformio"
]
}
Source: @oscarsan1, xoseperez/espurna#1515
Support
If you're looking for support:
- Issues: this is the most dynamic channel at the moment, you might find an answer to your question by searching open or closed issues.
- Wiki pages: might not be as up-to-date as we all would like (hey, you can also contribute in the documentation!).
- Gitter channel: you have better chances to get fast answers from project contributors or other ESPurna users. (also available with any Matrix client!)
- Issue a question: as a last resort, you can open new question issue on GitHub. Just remember: the more info you provide the more chances you'll have to get an accurate answer.