mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-22 13:26:10 +02:00
0.8.119
* added script and [instructions](../manual/factory_firmware.md) how to generate factory firmware which includes predefined settings
This commit is contained in:
parent
290bc91a62
commit
16b57416df
5 changed files with 117 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -7,6 +7,7 @@
|
||||||
src/config/config_override.h
|
src/config/config_override.h
|
||||||
src/web/html/h/*
|
src/web/html/h/*
|
||||||
src/web/html/tmp/*
|
src/web/html/tmp/*
|
||||||
|
src/data/*
|
||||||
/**/Debug
|
/**/Debug
|
||||||
/**/v16/*
|
/**/v16/*
|
||||||
*.db
|
*.db
|
||||||
|
|
59
manual/factory_firmware.md
Normal file
59
manual/factory_firmware.md
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
# Generate factory firmware
|
||||||
|
|
||||||
|
If the firmware should already contain predefined settings this guide will help you to compile these into a single binary file.
|
||||||
|
|
||||||
|
## Generate default settings
|
||||||
|
|
||||||
|
First install on the requested platform the standard firmware and configure everything to your needs. Once you did all changes store them and export them to a `json` file.
|
||||||
|
|
||||||
|
## Further prepare default settings
|
||||||
|
|
||||||
|
First create a directory `data` inside the following project path: `src/`.
|
||||||
|
|
||||||
|
As the export removes all your password you need to add them again to the `json` file. Open the `json` file with a text editor and search for all the `"pwd": ""`. Between the second bunch of quotation marks you have to place the password.
|
||||||
|
|
||||||
|
*Note: It's recommended to keep all information in one line to save space on the ESP littlefs partition*
|
||||||
|
|
||||||
|
Next rename your export file to `settings.json` and move it to the new created directory. It should be look similar to this:
|
||||||
|
|
||||||
|
```
|
||||||
|
ahoy
|
||||||
|
|-- src
|
||||||
|
|-- data
|
||||||
|
|-- settings.json
|
||||||
|
|-- config
|
||||||
|
|-- network
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
## modify platform.ini to build factory binary
|
||||||
|
|
||||||
|
Open the file `src/platformio.ini` and uncomment the following line `#post:../scripts/add_littlefs_binary.py` (remove the `#`)
|
||||||
|
|
||||||
|
## build firmware
|
||||||
|
|
||||||
|
Choose your prefered environment and build firmware as usual. Once the process is finished you should find along with the standard `firmware.bin` an additional file called `firmware.factory.bin`. Both files are located here: `src/.pio/build/[ENVIRONMENT]/`
|
||||||
|
|
||||||
|
## Upload to device
|
||||||
|
|
||||||
|
Python:
|
||||||
|
`esptool.py -b 921600 write_flash --flash_mode dio --flash_size detect 0x10000 firmware.factory.bin`
|
||||||
|
|
||||||
|
Windows:
|
||||||
|
`esptool.exe -b 921600 write_flash --flash_mode dio --flash_size detect 0x10000 firmware.factory.bin`
|
||||||
|
|
||||||
|
For a 4MB flash size the upload should be finished within 22 seconds.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Reboot your ESP an check if all your settings are present.
|
||||||
|
|
||||||
|
## Keep updated with 'Mainline'
|
||||||
|
|
||||||
|
From time to time a new version of AhoyDTU will be published. To get this changes into your alread prepared factory binary generation environment you have to do only a few steps:
|
||||||
|
|
||||||
|
1. revert the changes of `platformio.ini` by executing from repository root: `git checkout src/platformio.ini`
|
||||||
|
2. pull new changes from remote: `git pull`
|
||||||
|
3. modify the `platformio.ini` again as you can read above (remove comment)
|
||||||
|
4. build and upload
|
||||||
|
5. enjoy
|
55
scripts/add_littlefs_binary.py
Normal file
55
scripts/add_littlefs_binary.py
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import shutil
|
||||||
|
Import("env")
|
||||||
|
|
||||||
|
|
||||||
|
def build_littlefs():
|
||||||
|
result = subprocess.run(["pio", "run", "--target", "buildfs", "--environment", env['PIOENV']])
|
||||||
|
if result.returncode != 0:
|
||||||
|
print("Error building LittleFS:")
|
||||||
|
exit(1)
|
||||||
|
else:
|
||||||
|
print("LittleFS build successful")
|
||||||
|
|
||||||
|
def merge_bins():
|
||||||
|
flash_size = int(env.get("BOARD_FLASH_SIZE", "4MB").replace("MB", ""))
|
||||||
|
app0_offset = 0x10000
|
||||||
|
if env['PIOENV'][:7] == "esp8266":
|
||||||
|
app0_offset = 0
|
||||||
|
elif env['PIOENV'][:7] == "esp8285":
|
||||||
|
app0_offset = 0
|
||||||
|
|
||||||
|
littlefs_offset = 0x290000
|
||||||
|
if flash_size == 8:
|
||||||
|
littlefs_offset = 0x670000
|
||||||
|
elif flash_size == 16:
|
||||||
|
littlefs_offset = 0xc90000
|
||||||
|
|
||||||
|
# save current wd
|
||||||
|
start = os.getcwd()
|
||||||
|
os.chdir('.pio/build/' + env['PIOENV'] + '/')
|
||||||
|
|
||||||
|
with open("firmware.bin", "rb") as firmware_file:
|
||||||
|
firmware_data = firmware_file.read()
|
||||||
|
|
||||||
|
with open("littlefs.bin", "rb") as littlefs_file:
|
||||||
|
littlefs_data = littlefs_file.read()
|
||||||
|
|
||||||
|
with open("firmware.factory.bin", "wb") as merged_file:
|
||||||
|
# fill gap with 0xff
|
||||||
|
merged_file.write(firmware_data)
|
||||||
|
if len(firmware_data) < (littlefs_offset - app0_offset):
|
||||||
|
merged_file.write(b'\xFF' * ((littlefs_offset - app0_offset) - len(firmware_data)))
|
||||||
|
|
||||||
|
merged_file.write(littlefs_data)
|
||||||
|
|
||||||
|
os.chdir(start)
|
||||||
|
|
||||||
|
def main(target, source, env):
|
||||||
|
build_littlefs()
|
||||||
|
merge_bins()
|
||||||
|
|
||||||
|
|
||||||
|
# ensure that script is called once firmeware was compiled
|
||||||
|
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", main)
|
|
@ -4,6 +4,7 @@
|
||||||
* fix reset values at midnight if WiFi isn't available #1620
|
* fix reset values at midnight if WiFi isn't available #1620
|
||||||
* fix typo in English versions
|
* fix typo in English versions
|
||||||
* add yield day to history graph #1614
|
* add yield day to history graph #1614
|
||||||
|
* added script and [instructions](../manual/factory_firmware.md) how to generate factory firmware which includes predefined settings
|
||||||
|
|
||||||
## 0.8.118 - 2024-05-10
|
## 0.8.118 - 2024-05-10
|
||||||
* possible fix reset max values #1609
|
* possible fix reset max values #1609
|
||||||
|
|
|
@ -23,6 +23,7 @@ extra_scripts =
|
||||||
pre:../scripts/convertHtml.py
|
pre:../scripts/convertHtml.py
|
||||||
pre:../scripts/applyPatches.py
|
pre:../scripts/applyPatches.py
|
||||||
pre:../scripts/reduceGxEPD2.py
|
pre:../scripts/reduceGxEPD2.py
|
||||||
|
#post:../scripts/add_littlefs_binary.py
|
||||||
|
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/esphome/ESPAsyncWebServer @ ^3.2.0
|
https://github.com/esphome/ESPAsyncWebServer @ ^3.2.0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue