platformio
This commit is contained in:
1572
.github/dist/package_esp32_index_2_0_4.json
vendored
1572
.github/dist/package_esp32_index_2_0_4.json
vendored
File diff suppressed because it is too large
Load Diff
112
.github/workflows/build.yml
vendored
112
.github/workflows/build.yml
vendored
@@ -1,53 +1,79 @@
|
||||
name: Build using Github Actions
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
build-source:
|
||||
build:
|
||||
name: Checkout source code and build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3-serial cmake
|
||||
- name: Install Arduino IDE
|
||||
run: |
|
||||
curl -L https://downloads.arduino.cc/arduino-1.8.19-linux64.tar.xz -o /tmp/arduino-ide.tar.xz
|
||||
tar -xf /tmp/arduino-ide.tar.xz --directory ~/
|
||||
cd ~/arduino*
|
||||
./install.sh
|
||||
./arduino --pref "boardsmanager.additional.urls=https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json" --save-prefs
|
||||
./arduino --install-boards esp32:esp32:2.0.15
|
||||
- name: Install Arduino CMake Toolchain
|
||||
uses: actions/checkout@v2
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
repository: technyon/Arduino-CMake-Toolchain
|
||||
path: arduino-toolchain
|
||||
- name: Build
|
||||
run: |
|
||||
mkdir -p build
|
||||
cd build
|
||||
touch file_opts
|
||||
cmake -D CMAKE_TOOLCHAIN_FILE=../arduino-toolchain/Arduino-toolchain.cmake ..
|
||||
echo "# Espressif ESP32 Partition Table" > partitions.csv
|
||||
echo "# Name, Type, SubType, Offset, Size, Flags" >> partitions.csv
|
||||
echo "nvs, data, nvs, 0x9000, 0x5000," >> partitions.csv
|
||||
echo "otadata, data, ota, 0xe000, 0x2000," >> partitions.csv
|
||||
echo "app0, app, ota_0, 0x10000, 0x1E0000," >> partitions.csv
|
||||
echo "app1, app, ota_1, 0x1F0000,0x1E0000," >> partitions.csv
|
||||
echo "spiffs, data, spiffs, 0x3D0000,0x30000," >> partitions.csv
|
||||
make
|
||||
- name: Upload artifacts
|
||||
run: |
|
||||
mkdir release
|
||||
cp build/nuki_hub.bin release/
|
||||
cp build/nuki_hub.partitions.bin release/
|
||||
cp $(find ~/.arduino15/packages/esp32/ | grep boot_app0.bin) release/
|
||||
echo "esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader_dio_80m.bin 0x10000 nuki_hub.bin 0x8000 nuki_hub.partitions.bin" > release/flash.sh
|
||||
- uses: actions/upload-artifact@v3
|
||||
path: |
|
||||
~/.cache/pip
|
||||
~/.platformio/.cache
|
||||
key: ${{ runner.os }}-pio
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
name: release-assets
|
||||
path: release/
|
||||
|
||||
python-version: '3.9'
|
||||
- name: Install PlatformIO Core
|
||||
run: pip install --upgrade platformio
|
||||
- name: Install ESPTool
|
||||
run: pip install --upgrade esptool
|
||||
- name: Build PlatformIO Project esp32dev
|
||||
run: |
|
||||
pio run --environment esp32dev
|
||||
mkdir -p release/esp32dev
|
||||
cp .pio/build/esp32dev/firmware.bin release/esp32dev/nuki_hub.bin
|
||||
cp .pio/build/esp32dev/partitions.bin release/esp32dev/nuki_hub.partitions.bin
|
||||
cp .pio/build/esp32dev/bootloader.bin release/esp32dev/bootloader.bin
|
||||
esptool.py --chip esp32 merge_bin -o release/esp32dev/nuki_hub_esp32.bin --flash_mode dio --flash_freq keep --flash_size keep 0x1000 release/esp32dev/bootloader.bin 0x10000 release/esp32dev/nuki_hub.bin 0x8000 release/esp32dev/nuki_hub.partitions.bin
|
||||
echo "esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0x1000 bootloader.bin 0x10000 nuki_hub.bin 0x8000 nuki_hub.partitions.bin" > release/esp32dev/flash.sh
|
||||
- name: Build PlatformIO Project esp32-s3
|
||||
run: |
|
||||
pio run --environment esp32-s3
|
||||
mkdir -p release/esp32-s3
|
||||
cp .pio/build/esp32-s3/firmware.bin release/esp32-s3/nuki_hub.bin
|
||||
cp .pio/build/esp32-s3/partitions.bin release/esp32-s3/nuki_hub.partitions.bin
|
||||
cp .pio/build/esp32-s3/bootloader.bin release/esp32-s3/bootloader.bin
|
||||
esptool.py --chip esp32s3 merge_bin -o release/esp32-s3/nuki_hub_esp32s3.bin --flash_mode dio --flash_freq keep --flash_size keep 0x0 release/esp32-s3/bootloader.bin 0x10000 release/esp32-s3/nuki_hub.bin 0x8000 release/esp32-s3/nuki_hub.partitions.bin
|
||||
echo "esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0x0 bootloader.bin 0x10000 nuki_hub.bin 0x8000 nuki_hub.partitions.bin" > release/esp32-s3/flash.sh
|
||||
- name: Build PlatformIO Project esp32-c3
|
||||
run: |
|
||||
pio run --environment esp32-c3
|
||||
mkdir -p release/esp32-c3
|
||||
cp .pio/build/esp32-c3/firmware.bin release/esp32-c3/nuki_hub.bin
|
||||
cp .pio/build/esp32-c3/partitions.bin release/esp32-c3/nuki_hub.partitions.bin
|
||||
cp .pio/build/esp32-c3/bootloader.bin release/esp32-c3/bootloader.bin
|
||||
esptool.py --chip esp32c3 merge_bin -o release/esp32-c3/nuki_hub_esp32c3.bin --flash_mode dio --flash_freq keep --flash_size keep 0x0 release/esp32-c3/bootloader.bin 0x10000 release/esp32-c3/nuki_hub.bin 0x8000 release/esp32-c3/nuki_hub.partitions.bin
|
||||
echo "esptool.py --chip esp32c3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0x0 bootloader.bin 0x10000 nuki_hub.bin 0x8000 nuki_hub.partitions.bin" > release/esp32-c3/flash.sh
|
||||
- name: Build PlatformIO Project esp32solo1
|
||||
run: |
|
||||
pio run --environment esp32solo1
|
||||
mkdir -p release/esp32solo1
|
||||
cp .pio/build/esp32solo1/firmware.bin release/esp32solo1/nuki_hub.bin
|
||||
cp .pio/build/esp32solo1/partitions.bin release/esp32solo1/nuki_hub.partitions.bin
|
||||
cp .pio/build/esp32solo1/bootloader.bin release/esp32solo1/bootloader.bin
|
||||
esptool.py --chip esp32 merge_bin -o release/esp32solo1/nuki_hub_esp32solo1.bin --flash_mode dio --flash_freq keep --flash_size keep 0x1000 release/esp32solo1/bootloader.bin 0x10000 release/esp32solo1/nuki_hub.bin 0x8000 release/esp32solo1/nuki_hub.partitions.bin
|
||||
echo "esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0x1000 bootloader.bin 0x10000 nuki_hub.bin 0x8000 nuki_hub.partitions.bin" > release/esp32solo1/flash.sh
|
||||
- name: Upload Artifact esp32dev
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: esp32dev-assets
|
||||
path: release/esp32dev
|
||||
- name: Upload Artifact esp32-s3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: esp32-s3-assets
|
||||
path: release/esp32-s3
|
||||
- name: Upload Artifact esp32-c3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: esp32-c3-assets
|
||||
path: release/esp32-c3
|
||||
- name: Upload Artifact esp32solo1
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: esp32solo1-assets
|
||||
path: release/esp32solo1
|
||||
@@ -131,56 +131,56 @@ private:
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getChar(key)) : String(preferences->getChar(key)));
|
||||
s.concat(isRedacted(key) ? redact((const int32_t)preferences->getChar(key)) : String(preferences->getChar(key)));
|
||||
s.concat("\n");
|
||||
}
|
||||
const void appendPreferenceUInt8(Preferences *preferences, String& s, const char* description, const char* key)
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getUChar(key)) : String(preferences->getUChar(key)));
|
||||
s.concat(isRedacted(key) ? redact((const uint32_t)preferences->getUChar(key)) : String(preferences->getUChar(key)));
|
||||
s.concat("\n");
|
||||
}
|
||||
const void appendPreferenceInt16(Preferences *preferences, String& s, const char* description, const char* key)
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getShort(key)) : String(preferences->getShort(key)));
|
||||
s.concat(isRedacted(key) ? redact((const int32_t)preferences->getShort(key)) : String(preferences->getShort(key)));
|
||||
s.concat("\n");
|
||||
}
|
||||
const void appendPreferenceUInt16(Preferences *preferences, String& s, const char* description, const char* key)
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getUShort(key)) : String(preferences->getUShort(key)));
|
||||
s.concat(isRedacted(key) ? redact((const uint32_t)preferences->getUShort(key)) : String(preferences->getUShort(key)));
|
||||
s.concat("\n");
|
||||
}
|
||||
const void appendPreferenceInt32(Preferences *preferences, String& s, const char* description, const char* key)
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getInt(key)) : String(preferences->getInt(key)));
|
||||
s.concat(isRedacted(key) ? redact((const int32_t)preferences->getInt(key)) : String(preferences->getInt(key)));
|
||||
s.concat("\n");
|
||||
}
|
||||
const void appendPreferenceUInt32(Preferences *preferences, String& s, const char* description, const char* key)
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getUInt(key)) : String(preferences->getUInt(key)));
|
||||
s.concat(isRedacted(key) ? redact((const uint32_t)preferences->getUInt(key)) : String(preferences->getUInt(key)));
|
||||
s.concat("\n");
|
||||
}
|
||||
const void appendPreferenceInt64(Preferences *preferences, String& s, const char* description, const char* key)
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getLong64(key)) : String(preferences->getLong64(key)));
|
||||
s.concat(isRedacted(key) ? redact((const int64_t)preferences->getLong64(key)) : String(preferences->getLong64(key)));
|
||||
s.concat("\n");
|
||||
}
|
||||
const void appendPreferenceUInt64(Preferences *preferences, String& s, const char* description, const char* key)
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getULong64(key)) : String(preferences->getULong64(key)));
|
||||
s.concat(isRedacted(key) ? redact((const uint64_t)preferences->getULong64(key)) : String(preferences->getULong64(key)));
|
||||
s.concat("\n");
|
||||
}
|
||||
const void appendPreferenceBool(Preferences *preferences, String& s, const char* description, const char* key)
|
||||
@@ -194,7 +194,7 @@ private:
|
||||
{
|
||||
s.concat(description);
|
||||
s.concat(": ");
|
||||
s.concat(isRedacted(key) ? redact(preferences->getString(key)) : preferences->getString(key));
|
||||
s.concat(isRedacted(key) ? redact((const String)preferences->getString(key)) : preferences->getString(key));
|
||||
s.concat("\n");
|
||||
}
|
||||
|
||||
@@ -254,4 +254,4 @@ public:
|
||||
return s;
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
@@ -15,7 +15,8 @@ Feel free to join us on Discord: https://discord.gg/feB9FnMY
|
||||
## Supported devices
|
||||
|
||||
<b>Supported ESP32 devices:</b>
|
||||
- All dual-core ESP32 models with WIFI and BLE which are supported by Arduino Core 2.0.15 should work, but builds are currently only provided for the ESP32 and not for the ESP32-S3 or ESP32-C3.
|
||||
- All dual-core ESP32 models with WIFI and BLE which are supported by Arduino Core 2.0.15 should work. Tested builds are provided for the ESP32 and ESP32-S3.
|
||||
- Single-core ESP32 models with WIFI and BLE which are supported by Arduino Core 2.0.15 might work. Untested builds are provided for the ESP32-C3 and ESP32-Solo1.
|
||||
- The ESP32-S2 has no BLE and as such can't run Nuki Hub.
|
||||
- The ESP32-C6 and ESP32-H2 are not supported by Arduino Core 2.0.15 as such can't run Nuki Hub (at this time).
|
||||
|
||||
@@ -46,8 +47,9 @@ Please go to "MQTT and Network Configuration" and select "Wi-Fi only" as the net
|
||||
|
||||
Flash the firmware to an ESP32. The easiest way to install is to use the web installer using a compatible browser like Chrome/Opera/Edge:<br>
|
||||
https://technyon.github.io/nuki_hub/<br>
|
||||
NOTE: Webflash is not available for the ESP32-Solo1<br>
|
||||
<br>
|
||||
Alternatively download the latest release from https://github.com/technyon/nuki_hub/releases<br>
|
||||
Alternatively download the latest release for your ESP32 model from https://github.com/technyon/nuki_hub/releases<br>
|
||||
Unpack the 7z archive and read the included readme.txt for installation instructions for either "Espressif Flash Download Tools" or "esptool".
|
||||
|
||||
## Initial setup (Network and MQTT)
|
||||
@@ -455,6 +457,7 @@ Reported as working are:
|
||||
- [M5Stack ATOM Lite](https://shop.m5stack.com/products/atom-lite-esp32-development-kit)
|
||||
- ESP32-WROOM-32D (DEVKIT V4)
|
||||
- ESP32-WROOM-32E
|
||||
- ESP32-S3-WROOM-1
|
||||
|
||||
For more information check the related issue: https://github.com/technyon/nuki_hub/issues/39
|
||||
|
||||
|
||||
@@ -332,7 +332,7 @@ void setup() {
|
||||
Serial.begin(9600);
|
||||
// start the Ethernet connection:
|
||||
if (Ethernet.begin(mac) == 0) {
|
||||
Serial.println("Failure to configure Ethernet using DHCP");
|
||||
Serial.println("Failed to configure Ethernet using DHCP");
|
||||
// no point in carrying on, so do nothing forevermore:
|
||||
for(;;)
|
||||
;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name=Ethernet
|
||||
version=2.0.0
|
||||
version=2.0.2
|
||||
author=Various (see AUTHORS file for details)
|
||||
maintainer=Arduino <info@arduino.cc>
|
||||
sentence=Enables network connection (local and Internet) using the Arduino Ethernet Board or Shield.
|
||||
@@ -7,4 +7,4 @@ paragraph=With this library you can use the Arduino Ethernet (shield or board) t
|
||||
category=Communication
|
||||
url=https://www.arduino.cc/en/Reference/Ethernet
|
||||
architectures=*
|
||||
includes=Ethernet.h
|
||||
includes=Ethernet.h
|
||||
@@ -32,6 +32,7 @@ void DhcpClass::reset_DHCP_lease()
|
||||
memset(_dhcpDhcpServerIp, 0, sizeof(_dhcpDhcpServerIp));
|
||||
memset(_dhcpDnsServerIp, 0, sizeof(_dhcpDnsServerIp));
|
||||
}
|
||||
|
||||
//return:0 on error, 1 if request is sent and response is received
|
||||
int DhcpClass::request_DHCP_lease()
|
||||
{
|
||||
@@ -433,4 +434,4 @@ void DhcpClass::printByte(char * buf, uint8_t n )
|
||||
char c = m - 16 * n;
|
||||
*str-- = c < 10 ? c + '0' : c + 'A' - 10;
|
||||
} while(n);
|
||||
}
|
||||
}
|
||||
@@ -87,14 +87,10 @@ void EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress g
|
||||
W5100.setIPAddress(&ip[0]);
|
||||
W5100.setGatewayIp(&gateway[0]);
|
||||
W5100.setSubnetMask(&subnet[0]);
|
||||
#elif ARDUINO > 106 || TEENSYDUINO > 121
|
||||
W5100.setIPAddress(ip._address.bytes);
|
||||
W5100.setGatewayIp(gateway._address.bytes);
|
||||
W5100.setSubnetMask(subnet._address.bytes);
|
||||
#else
|
||||
W5100.setIPAddress(ip._address);
|
||||
W5100.setGatewayIp(gateway._address);
|
||||
W5100.setSubnetMask(subnet._address);
|
||||
W5100.setIPAddress(ip.raw_address());
|
||||
W5100.setGatewayIp(gateway.raw_address());
|
||||
W5100.setSubnetMask(subnet.raw_address());
|
||||
#endif
|
||||
SPI.endTransaction();
|
||||
_dnsServerAddress = dns;
|
||||
@@ -244,4 +240,4 @@ void EthernetClass::setRetransmissionCount(uint8_t num)
|
||||
|
||||
|
||||
|
||||
EthernetClass Ethernet;
|
||||
EthernetClass Ethernet;
|
||||
1
partitions.csv
Normal file
1
partitions.csv
Normal file
@@ -0,0 +1 @@
|
||||
# Espressif ESP32 Partition Table
|
||||
|
64
platformio.ini
Normal file
64
platformio.ini
Normal file
@@ -0,0 +1,64 @@
|
||||
; PlatformIO Project Configuration File
|
||||
;
|
||||
; Build options: build flags, source filter
|
||||
; Upload options: custom upload port, speed and extra flags
|
||||
; Library options: dependencies, extra library storages
|
||||
; Advanced options: extra scripting
|
||||
;
|
||||
; Please visit documentation for the other options and examples
|
||||
; https://docs.platformio.org/page/projectconf.html
|
||||
|
||||
[platformio]
|
||||
default_envs = esp32dev
|
||||
src_dir = .
|
||||
|
||||
[env]
|
||||
platform = espressif32
|
||||
framework = arduino
|
||||
build_type = release
|
||||
board_build.partitions = partitions.csv
|
||||
build_flags =
|
||||
-fexceptions
|
||||
-DTLS_CA_MAX_SIZE=2200
|
||||
-DTLS_CERT_MAX_SIZE=1500
|
||||
-DTLS_KEY_MAX_SIZE=1800
|
||||
-DESP_PLATFORM
|
||||
-DESP32
|
||||
-DARDUINO_ARCH_ESP32
|
||||
-DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_NONE
|
||||
-DCONFIG_NIMBLE_CPP_LOG_LEVEL=0
|
||||
; -DDEBUG_SENSE_NUKI
|
||||
; -DDEBUG_NUKI_COMMAND
|
||||
; -DDEBUG_NUKI_CONNECT
|
||||
; -DDEBUG_NUKI_COMMUNICATION
|
||||
; -DDEBUG_NUKI_HEX_DATA
|
||||
; -DDEBUG_NUKI_READABLE_DATA
|
||||
lib_deps =
|
||||
https://github.com/technyon/nuki_ble.git
|
||||
bertmelis/espMqttClient@1.6.0
|
||||
bblanchon/ArduinoJson@7.0.4
|
||||
monitor_speed = 115200
|
||||
monitor_filters =
|
||||
esp32_exception_decoder
|
||||
time
|
||||
build_src_filter =
|
||||
-<*>
|
||||
+<*.cpp>
|
||||
+<*.h>
|
||||
+<networkDevices>
|
||||
|
||||
[env:esp32dev]
|
||||
board = esp32dev
|
||||
|
||||
[env:esp32-c3]
|
||||
board = esp32-c3-devkitc-02
|
||||
|
||||
[env:esp32solo1]
|
||||
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.10.03/platform-espressif32-2023.10.03.zip
|
||||
board = esp32-solo1
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
-DFRAMEWORK_ARDUINO_SOLO1
|
||||
|
||||
[env:esp32-s3]
|
||||
board = esp32-s3-devkitc-1
|
||||
@@ -10,6 +10,18 @@
|
||||
{ "path": "nuki_hub.bin", "offset": 65536 },
|
||||
{ "path": "nuki_hub.partitions.bin", "offset": 32768 }
|
||||
]
|
||||
},
|
||||
{
|
||||
"chipFamily": "ESP32-S3",
|
||||
"parts": [
|
||||
{ "path": "nuki_hub_esp32s3.bin", "offset": 0 },
|
||||
]
|
||||
},
|
||||
{
|
||||
"chipFamily": "ESP32-C3",
|
||||
"parts": [
|
||||
{ "path": "nuki_hub_esp32c3.bin", "offset": 0 },
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
BIN
webflash/nuki_hub_esp32c3.bin
Normal file
BIN
webflash/nuki_hub_esp32c3.bin
Normal file
Binary file not shown.
BIN
webflash/nuki_hub_esp32s3.bin
Normal file
BIN
webflash/nuki_hub_esp32s3.bin
Normal file
Binary file not shown.
Reference in New Issue
Block a user