Comments (3)
@MJDSys that would be a great contribution.
For the Zigbee sample I understand the OTA process is more standardized:
- The Zigbee Cluster Library specs define a OTA cluster and all state machinery (chap 11, cluster ID
0x0019
) - There's a Nordic example (Zigbee OTA Upgrade Client) that we can get inspiration from
Out of curiosity, I checked the available clusters on my Ikea push button on Home Assistant and indeed we can see the cluster 0x0019
for OTA:
For the BLE sample, IIUC the process is more ad hoc (as in: implementation-specific), and we need to think about these things (and I think we should):
- Currently the firmware just sleeps (fully radio off) for 10 minutes, so we need to either a. Keep the radio always on during sleep, advertising so it can be found for update or b. Come up with an "async" updater that you leave running in the background and eventually start an OTA upgrade within that 10m window. I believe Zigbee Cluster Lib has backed-in mechanic for this async style of OTA (i.e. our end device will poll its parent every minute or so, including checking for OTA requests I believe)
- We currently keep it very simple - just a few seconds of intense non-connectable broadcasting (read only) and then right back to sleep. The idea is to maximize the range during that short interval, so we're very aggressive there (meaning: very low adv. interval). If we want to broadcast a connectable OTA service, we may need to do so less aggressive and likely more frequently. One idea is to alternate these two modes, or spread out those intense TX more evenly across the 10m window (this may be actually better, or at least not worse anyway). This is less of a problem in Zigbee because we usually have more routers and can get away with less TX power when transmitting (having multiple ESPHome proxies may help here, but not as convenient)
- Security. While I don't mind too much broadcasting the soil moisture of my plants (given the short range, and we can have encryption (another nice TODO)), I would be against having a public OTA BLE service. Some ideas are: some static, user configured password; or having to press the button to put it in OTA mode (less convenient); or something else. Zigbee solves this trust via the initial pairing
Again, I think these are important points that are worth addressing, even if at the expense of battery life, for added convenience.
Either way, I think solving for the Zigbee sample is surprisingly easier, since the path is well paved. I would start there. Let me know if it all makes sense, and thanks for starting this discussion.
from b-parasite.
I would love to see a ZigBee OTA feature. A couple of months ago I already dug into the documentation and the implementation on the Zephyr zigbee side should be fairly easy.
The harder part is how to provide the firmware to the zigbee network via the coordinator. To my understanding this is specific to the used zigbee dongle or module and I did not find a definitive way to go.
For the raw b-parasite implementation, providing the actual firmware is optional and could be done separately. But it would be nice to know which way to go to at least verify, that the parasite OTA feature is actually doing what it promises. 😉
from b-parasite.
The harder part is how to provide the firmware to the zigbee network via the coordinator. To my understanding this is specific to the used zigbee dongle or module and I did not find a definitive way to go.
If it helps, Zigbee2MQTT uses Koenkk/zigbee-OTA collection of Zigbee firmware references to check and update devices.
from b-parasite.
Related Issues (20)
- Adding PAR-capable light sensor to the board? HOT 1
- Q4 orientation question from JLCPCD (I've read related docs and issues) HOT 2
- How to read raw data with soil_read_loop sample? HOT 2
- Identify BLE device HOT 3
- Bogus illuminance and moisture readings HOT 5
- Repeating measurement HOT 6
- Battery voltage drop after update HOT 2
- Not an issue - Integration of b-parasite with LTE(nrf9160 and nrf52840)
- Report battery percentage in ble HOT 9
- Unavailable measures in Home Assistant with ble firmware and BTHOME v2
- Building zigbee fails with FATAL ERROR HOT 3
- add soil conductivity & soil pH HOT 1
- Can not connect to the board. Target voltage too low? HOT 1
- Add a ducumentation on how to calibrate the sensor HOT 1
- Suggestion: Buy a ton of boards in bulk and sell them to us HOT 5
- Issue with zigbee version HOT 4
- Power-Consumption in deep-sleep mode HOT 8
- Coating instructions HOT 3
- Battery and soil sensor invalid readings (0mV) HOT 9
- Consumption strage behavior HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from b-parasite.