-
Notifications
You must be signed in to change notification settings - Fork 47
Rework of firmware upload #112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Implemented a new page for managing sensors in the frontend. - Created an EditSensor component for editing sensor details with validation. - Developed ControllerSettingsService to manage controller settings via HTTP endpoints. - Introduced FanController to handle fan control logic based on temperature readings. - Added OneWireESP32 library for interfacing with DS18B20 temperature sensors. - Implemented TempSensorsService to manage temperature sensors and their data acquisition. - Established persistence for sensor settings and states using file storage. - Enhanced error handling and logging throughout the services.
- Added FFCMqttConfig component for configuring MQTT settings. - Removed GatewayMQTTConfig component to streamline MQTT configuration. - Updated MQTT routing to use FFCMqttConfig. - Introduced new alarms page for managing alarm events. - Created backend services for alarm logging and MQTT settings. - Integrated alarm notifications via MQTT. - Enhanced temperature sensor service to publish alarms on sensor status changes. - Added utility functions for ISO 8601 date conversion. - Updated UI to include alarm log and relevant error handling.
… enhance temperature sensor discovery logging
- Changed to PCB v2.0 settings - Updated version string
# Conflicts: # .gitignore # README.md # factory_settings.ini # features.ini # interface/package-lock.json # interface/package.json # interface/src/app.css # interface/src/lib/DaisyUiHelper.ts # interface/src/lib/assets/logo.png # interface/src/lib/components/Collapsible.svelte # interface/src/lib/components/ConfirmDialog.svelte # interface/src/lib/components/InputPassword.svelte # interface/src/lib/components/SettingsCard.svelte # interface/src/lib/components/Spinner.svelte # interface/src/lib/components/UpdateIndicator.svelte # interface/src/lib/components/toasts/Toast.svelte # interface/src/lib/stores/analytics.ts # interface/src/lib/stores/socket.ts # interface/src/lib/types/models.ts # interface/src/routes/+layout.svelte # interface/src/routes/+layout.ts # interface/src/routes/+page.svelte # interface/src/routes/connections/mqtt/+page.svelte # interface/src/routes/connections/mqtt/MQTT.svelte # interface/src/routes/connections/ntp/NTP.svelte # interface/src/routes/login.svelte # interface/src/routes/menu.svelte # interface/src/routes/statusbar.svelte # interface/src/routes/system/metrics/BatteryMetrics.svelte # interface/src/routes/system/metrics/SystemMetrics.svelte # interface/src/routes/system/status/SystemStatus.svelte # interface/src/routes/system/update/GithubFirmwareManager.svelte # interface/src/routes/system/update/UploadFirmware.svelte # interface/src/routes/user/+page.svelte # interface/src/routes/user/EditUser.svelte # interface/src/routes/wifi/ap/Accesspoint.svelte # interface/src/routes/wifi/sta/Scan.svelte # interface/src/routes/wifi/sta/Wifi.svelte # interface/static/favicon.png # interface/static/manifest.json # interface/vite.config.ts # lib/PsychicHttp/src/PsychicCore.h # lib/PsychicHttp/src/PsychicEndpoint.cpp # lib/PsychicHttp/src/PsychicEndpoint.h # lib/PsychicHttp/src/PsychicHttp.h # lib/PsychicHttp/src/PsychicHttpServer.cpp # lib/PsychicHttp/src/PsychicStaticFileHander.cpp # lib/PsychicHttp/src/PsychicUploadHandler.cpp # lib/framework/APSettingsService.cpp # lib/framework/APSettingsService.h # lib/framework/APStatus.cpp # lib/framework/APStatus.h # lib/framework/AnalyticsService.h # lib/framework/ArduinoJsonJWT.cpp # lib/framework/ArduinoJsonJWT.h # lib/framework/AuthenticationService.cpp # lib/framework/AuthenticationService.h # lib/framework/BatteryService.cpp # lib/framework/BatteryService.h # lib/framework/DownloadFirmwareService.cpp # lib/framework/DownloadFirmwareService.h # lib/framework/ESP32SvelteKit.cpp # lib/framework/ESP32SvelteKit.h # lib/framework/ESPFS.h # lib/framework/EventEndpoint.h # lib/framework/EventSocket.cpp # lib/framework/EventSocket.h # lib/framework/FSPersistence.h # lib/framework/FactoryResetService.cpp # lib/framework/FactoryResetService.h # lib/framework/Features.h # lib/framework/FeaturesService.cpp # lib/framework/FeaturesService.h # lib/framework/HttpEndpoint.h # lib/framework/IPUtils.h # lib/framework/JsonUtils.h # lib/framework/MqttEndpoint.h # lib/framework/MqttSettingsService.cpp # lib/framework/MqttSettingsService.h # lib/framework/MqttStatus.cpp # lib/framework/MqttStatus.h # lib/framework/NTPSettingsService.cpp # lib/framework/NTPSettingsService.h # lib/framework/NTPStatus.cpp # lib/framework/NTPStatus.h # lib/framework/NotificationService.h # lib/framework/RestartService.cpp # lib/framework/RestartService.h # lib/framework/SecurityManager.h # lib/framework/SecuritySettingsService.cpp # lib/framework/SecuritySettingsService.h # lib/framework/SettingValue.cpp # lib/framework/SettingValue.h # lib/framework/SleepService.cpp # lib/framework/SleepService.h # lib/framework/StatefulService.cpp # lib/framework/StatefulService.h # lib/framework/SystemStatus.cpp # lib/framework/SystemStatus.h # lib/framework/UploadFirmwareService.cpp # lib/framework/UploadFirmwareService.h # lib/framework/WebSocketClient.bak # lib/framework/WebSocketServer.h # lib/framework/WiFiScanner.cpp # lib/framework/WiFiScanner.h # lib/framework/WiFiSettingsService.cpp # lib/framework/WiFiSettingsService.h # lib/framework/WiFiStatus.cpp # lib/framework/WiFiStatus.h # platformio.ini # scripts/build_interface.py # scripts/rename_fw.py # src/main.cpp
# Conflicts: # platformio.ini
# Conflicts: # interface/src/routes/gateway/smoke-detectors/+page.svelte # platformio.ini
# Conflicts: # interface/src/routes/gateway/smoke-detectors/+page.svelte
# Conflicts: # interface/src/lib/components/DraggableList.svelte
# Conflicts: # interface/src/routes/gateway/smoke-detectors/+page.svelte # src/GatewayDevicesService.cpp
# Conflicts: # scripts/generate_enums.py
…s in scripts # Conflicts: # scripts/generate_enums.py
Sync fork
Sync with 0.6.0
# Conflicts: # interface/src/routes/wifi/sta/Wifi.svelte
- Removed GithubUpdateDialog component and replaced it with FirmwareUpdateDialog for consistency. - Updated telemetry store to manage OTA status with additional fields: bytes_written and total_bytes. - Modified UpdateIndicator and UploadFirmware components to utilize the new FirmwareUpdateDialog and updated telemetry structure. - Enhanced UploadFirmwareService to emit detailed progress updates via WebSocket, including bytes written and total bytes. - Introduced validation for firmware chip type in UploadFirmwareService to ensure compatibility. - Improved error handling and user feedback during firmware upload processes. - Added new FirmwareUpdateEvents header for standardized WebSocket event names and structures.
- Removed GithubUpdateDialog component and replaced it with FirmwareUpdateDialog for consistency. - Updated telemetry store to manage OTA status with additional fields: bytes_written and total_bytes. - Modified UpdateIndicator and UploadFirmware components to utilize the new FirmwareUpdateDialog and updated telemetry structure. - Enhanced UploadFirmwareService to emit detailed progress updates via WebSocket, including bytes written and total bytes. - Introduced validation for firmware chip type in UploadFirmwareService to ensure compatibility. - Improved error handling and user feedback during firmware upload processes. - Added new FirmwareUpdateEvents header for standardized WebSocket event names and structures.
|
Closing pull request due to missed inconsistency. |
|
@hmbacher I hope you'll resubmit this once you solved your inconsistency. Just one remark, the binary size is not strictly limited to 2.3 MB. Could you make this more generic and check it against the available space on the OTA partition instead? I use >4MB controllers and most of my projects exceed the 2.3 MB binary size. |
|
@theelims, good idea. Unfortunately, the most elegant approach to leveraging PsychicHttp’s built‑in validation did not work, since internally I create PR #113. |
Hello! :)
The firmware upload user experience was quite basic, so I've enhanced it with better validation, progress tracking, and error handling.
Unified Firmware Update Dialog
WebSocket Event Enhancements
EVENT_OTA_UPDATE) for both upload and download flowsbytes_writtenandtotal_bytesfor accurate progress trackingClient-Side Validation
.binand.md5files acceptedServer-Side Validation
Enhanced Error Handling
Some Refactoring
request->_tempObject