Releases: bluerange-io/bluerange-mesh
Release 1.2.250
BlueRange Mesh Changelog 1.2.250
BlueRange Mesh 1.2.250 introduces a trio of groundbreaking features that will revolutionize how you interact with your mesh network: AutoSense, AutoAct, and Generic Registers. These can be used in conjunction to provide a powerful decentralized automation experience.
BlueRange Mesh is formerly known as FruityMesh. We have decided to rename it to BlueRange Mesh (Community Edition) to better fit to the company behind it - BlueRange GmbH.
What does this mean for you? Basically nothing. The license model is the same and we continue to publish updates to GitHub. However, we can use the new name to better communicate with our customers and to create awareness of the different BlueRange Mesh editions, which are BlueRange Mesh Community Edition
and BlueRange Mesh
. The former has additional features such as DFU over Mesh or Modbus support.
New Features
- AutoSenseModule: A new module that allows for configurable, periodic polling of data from other modules or 3rd party controllers.
- AutoActModule: A new module that enables automated actions based on triggers from the AutoSenseModule or other sources.
- Register-Based Access: Modules and controllers can now be accessed and controlled through a generic register-based interface, simplifying integration and automation.
Changes
- Renamed FruityMesh to BlueRange Mesh Community Edition to better reflect the commercial offering relationship
- Updated license to version 1.1 with clarified naming conventions
- GPIO Handling in CherrySim: Added complete GPIO simulation support including pin state tracking and interrupt handling
- Virtual COM Port: Added buffer overflow protection to the virtual COM port driver
- Metrics Collection: Introduced error logs for mesh connections and packet transmission to monitor network performance
- Generic Registers: Refactored the IoModule and StatusReporterModule to use the new register-based access
- Added support for +8 dBm TX power setting
Bug Fixes
- Resolved a bug where the polarity of interrupts was not correctly handled in CherrySim
- Corrected a problem where featureset redirection could cause some tests to fail in CherrySim
- Fixed a bug in the virtual COM port driver where a buffer overflow could occur
- Fixed typo and therefore reduced maximum application size from 254000 to 245000 bytes for nRF52832
- Fixed an issue where acceleration interrupts were not properly queued in CherrySim when the LIS2DH12 accelerometer was in motion
Release 1.1.1640
We are excited to release the latest version of FruityMesh. This includes interesting new features such as dynamic groups, running CherrySim in the browser, reading GPIO pins from other nodes and more. The documentation design has also been refreshed in the mean time, making it easier to get search results.
Features
- CherrySim can now be compiled to WebAssembly using Emscripten. This means you can run simulated networks in the browser
- Adds the ability to dynamically and persistently assign a node to one or more dynamic groups
- Persistent time reporting: Nodes with the status reporter module can now be configured to report their local device time with a certain reporting interval. Settings are kept after node reset
- Extended RawData protocol "raw_data_start" and "raw_data_start_received" with an optional "metadata" field with up to 40 bytes
- Added
get_gw_status
andset_gw_status
terminal commands and module messages to improve transparency of the Gateway status to other mesh participants (e.g. no mesh connection, no serial connection) - Added pulse function to allow LED blink codes
- Added a
pinread
command to allow reading the level of any GPIO pin. Be careful as the previous GPIO configuration will be overwritten - Modules can listen to the
TimeSyncedHandler
inTimeManager
as a callback when time has been synced - Added emergency Mesh access to reduce the advertising interval to 2s while preserving battery
Fixes
- Changed enrollment behavior to doing a factory reset when enrolling and not only when unenrolling
- Fixed a bug where the power off button would sometimes boot into safe mode, causing a
WATCHDOG_REBOOT
- Action related messages originating from the
StatusReporterModule
can be sent through MeshAccessConnections - Fixes an issue where the wrong
RecordStorageEventHandler
might have been called after data was saved
Small Changes
- Added capability entry for Mesh firmware, softdevice and bootloader version
- Added endianness utility functions
- Added conversion methods for UART settings in FruityHal. This is useful when storing UART settings in module configurations
- Enabled CRC by default for nRF52840 sink node
- Optimized stack usage of nRF52832 sink node
Breaking Changes and Migration from 1.1.590
- Rename every occurence of
UartBaudrate
toUartBaudRate
- Rename every occurence of
GpioTransistion
toGpioTransition
- Parity even now has value 2 instead of 1. 1 is odd
Release 1.1.590
Hello,
here we are with our latest release of FruityMesh. It has been quiet for some time as we are internally working on many more features of our BlueRange platform and some rather big firmware changes have not made it into the open source version so far. The biggest addition to this release is certainly the full support of the nRF SDK 17.1 which you can use to build for nRF52840, nRF52833 and nRF52832 out of the box. We have refactored the CMake build to be more straightforward and so that it is easier to include other chipsets without much effort. You can still build against SDK14 and SDK15 if you want to, but our HAL makes it pretty easy to switch SDKs with little effort.
New Features:
- Added nRF SDK17.1 support and support for the nRF52833 chipset.
- Refactored the CMake structure so it is more easy to support different chipsets and configurations.
- ATTENTION: Use BUILD_TYPE "FIRMWARE" or "SIMULATOR" now instead of the deprecated "BUILD_FEATURESETS" option for configuring the build
- Added support for Immortal Records that will be persisted across Factory Resets (e.g. to be used for Device Configuration) (BR-2371)
- Adds the ability to query the current time of every node in the mesh network. (BR-4230)
- CherrySim now has support for Drag & Drop in the native renderer. Simply press Ctrl and drag around nodes during simulation. (BR-4604)
- CherrySim can now load its full configuration, floorplan, etc,.... from a directory by using "--configdir"
- Added the ability to test for messages that are not to be expected in CherrySimTester
Optimizations:
- Live Reports for Gatt Disconnect events will now include the partial BLE Address of the remote Node for better Debugging (BR-4510)
- Optimized CherrySim simulation performance (BR-4884)
- CherrySim can now display a floorplan as a background image
- The user can now configure web server and socket server port in CherrySim through the config to run multiple instances at once
- Added the ability to ignore non critical exceptions which is useful when running CherrySim against other systems during integration testing
- Optimized the TimeSync functionality
Fixes:
- Fixed an issue where CherrySim would incorrectly return wrong device capabilities (BR-4922)
- Fixes an issue where the chipId was incorrectly being reported with wrong data. (BR-4409)
- A lot of cleanup and small fixes, as always.
Release 1.1.230
Hello,
quite some time has passed since our last open source release of the latest FruityMesh version. We have been quite busy in that time and had postponed the release a number of time, but finally, here it is. The most noteworthy new feature in this release is the support for SDK17.1 (alpha). We have not yet integrated a dedicated featureset to build against SDK17 but will do so in the next release which we already have finished internally. Do not hesitate to report issues.
Also, we have now included the AppUartModule for connecting to a FruityMesh node terminal with a smartphone. This feature by @nishinohi had missed our last public release only by a few days.
Community:
- GitHub PR #180: Add an example module which allows sending and receiving terminal commands and output on a smartphone. (BR-2019) Thanks @nishinohi
- GitHub PR #183: Fixed undefined behavior bug and a possible pitfall for HAL developers (Looks like this might have been missing from the last release). Thanks @Brotcrunsher
New Features:
- SDK17 integration (alpha): Refactored the CMake build so that we can now build against SDK14/15/17. All builds do not support GCC 9.3.1 as well. The user is now able to specify SDK/Chipset and BLE Stack (SoftDevice) as part of the featureset. (BR-3739)
- Migrates all necessary changes to SDK17 that had to be done based on previous migrations. Includes migration that was determined based on the migration guides and release notes for all intermediate SDK and SoftDevice versions. (BR-3769)
- Integrated GCC9 into fruitymesh-buildbox-mini which allows SDK17 targets to be compiled and added two targets for nrf52832 and nrf52840 to our automated build pipeline. (BR-3772)
- Add a command line flag to cherrysim to set tester verbosity to true by default. (BR-2234)
- The simulator now utilizes Gaussian RSSI noise. Functions concerning RSSI computations are refactored into their own compilation unit. (BR-2309)
- Adds the ability to configure regularly distributed ceilings in the simulator. These attenuate the (simulated) signal strength between receivers and transmitters. (BR-2838)
- Increase the NodeId range for Tags to 25000 starting at 33000 (BR-2897)
- Unified and documented the LED blink codes for powering on/off our tracking and sensor tags. Take a look at https://www.bluerange.io/docs/bluerange-manual/AssetTracking/AssetTrackingTags.html for more information. (BR-3050)
- Add some documentation on how to use pre compiled binaries in github source relase distribution (BR-245)
- Enable stack overflow detector in hard fault handler. (BR-3178)
- Add an option to serial connect which enables better connection parameters if the BLE address is specified. (BR-3042)
- Adds some final preparation before the LicenseModule can be used with the upcoming version 1.1.0. (Licensing is not used for the Open Source variant on GitHub) (BR-3336)
- Adds the SoftDevice S132 and S140 headers to the simulator for better DFU Simulation. Includes FruityLoader simulation in CherrySim. (BR-3356)
- Increments version to 1.1.x which enables the LicenseModule so that all nodes can now report their license state. This does not affect any existing nodes and does not impose any restrictions. (Licensing is not used for the Open Source variant on GitHub) (BR-3338)
- Adds documentation for the sink routing. (BR-3595)
- Adds WIP support for the acnBuzz tag. Buzzer and Vibration motor are supported through the identify action. (BR-2961)
Fixes:
- CherrySim with gateway now uses terminalId instead of hardcoded value to select sink node (BR-2148)
- Fix build on MSVC / Visual Studio due to the pi-constant not being defined in the cmath standard header. (BR-2558)
- Fixed an issue where the reported ABSOLUTE_UPTIME for a BlueRange node was not properly reported through the error_log. (BR-3303)
- Fixes an issue where the Gateway could have missed a reboot of its Mesh Bridge under certain conditions. (BR-3179)
- Fixes an issue where under rare circumstances mesh access connections used for enrollment were never disconnected. (BR-3721)
Release 1.0.1940
Hello,
a few weeks have passed and we are not ready to release the next version of FruityMesh.
Community:
- Fixed undefined behavior bug and a possible pitfall for HAL developers (PR #183) Thanks @Brotcrunsher
New Features:
- Makes the Serial Number of the Node available for 3rd Party Applications using the BLE scan response message which allows the user to easily identify the nodes.
- Board Id and BoardName will be part of capabilities now
- Document all the json file used in cherrysim
- Adds guided instructions on how to implement sensors, actuators and capabilities in the firmware. Also adds steps on how to test and configure everything
- Enhance SimulateBroadcast method to scale better
- A new command
scanlog
was added to the DebugModule which makes it easier to scan for FruityMesh related messages and decode them
Small Changes:
- Adds the ability to CherrySim to specify the working directory (Normalized Path) using an environment variable (CHERRYSIM_WORKDIR)
- Refactors CMD and CMD_RSP so that CMD is now deprecated and WRITE/_ACK should be used instead and CMD_RSP was renamed to RESULT_RSP.
- Shaking a node in the simulator was added to wake it up if it has accelerometer support.
- VendorTemplateModule was extended and a lot of documentation was added.
Fixes:
- During the handshake for MeshAccessConnection, the Central, which is the node that initiates the connection now waits for MessageType::ENCRYPT_CUSTOM_DONE before changing to handshake state to to set HANDSHAKE_DONE
- VirtualComPort was fixed as it could get stuck if lots of messages were printed in a short time
Release 1.0.1700
Hello Everyone,
The new fruitymesh release is here.
New Features:
- Adds SocketTerm to CherrySim which allows multiple clients to connect to different terminals using TCP sockets e.g. by using Telnet or a gateway process. Also fixes a number of scalability issues so that the simulator will now support up to 1500 nodes. Improves the simulation performance so that (depending on your CPU) around 400+ nodes can be simulated in real time.
- Adds temporary enrollments and meshBridgeMode for our USB mesh bridge. This greatly enhances security and usability as the enrollment will be lost as soon as the mesh bridge dongle is removed from the gateway. As soon as it is inserted again it will be automatically enrolled and ready. Also, advertisements are only enabled as soon as the serial number of the gateway is known after bootup.
- Allow use of long vendor-specific module identifiers in configurations of sensors and actuators.
- Refactors some code used in the unit tests and the socket terminal implementation to use the (unique) node index instead of the potentially ambiguous node id. This allows simulating multiple networks simultaneously. Fixes a bug in the simulator resulting in irrelevant logs due to a mock being always instantiated regardless of being used. Fixes a bug in the simulators socket terminal which resulted in an unusable replay log. Ensures that z-coordinates are actually used by the simulator.
- Adds the ability to CherrySim to specify the working directory (Normalized Path) using an environment variable (CHERRYSIM_WORKDIR)
Small Changes:
- The error log is now sent over time instead of in one block. This reduces the number of dropped packets
- ErrorLogEntries will now be logged with either the relative time since node start in seconds or in the absolute UTC time if the time was synchronized.
- Add adaptive timeout to region estimation
Fixes:
- Fixes an issue in the virtual com port implementation which provides a serial port via the USB CDC ACM implementation provided by the Nordic SDK. The ability to write to the port from a computer was sporadically lost.
- Backwards compatibility of build-in module identifiers use for building automation so that existing policies take effect as is.
- Improves the USB read stability for BlueRange Connect (github_sink_usb_nrf52840)
- Fixes use of uninitialized memory under exceptional conditions. The firmware now triggers a reset under these circumstances.
Post Release Edit:
The previous tagges release version was missing a few files that were not correctly pushed to github. I have not added these and forced an update of the tagged version. Release should be buildable now.
Release 1.0.1220
Hello everybody, here is a new release of FruityMesh with a number of new features and bugfixes :-)
New Features:
- The native renderer is now actually part of the open source distribution and was enhanced with LEDs and some more diagnostic information (Thanks @Brotcrunsher)
- Adds a firmware action to identify devices in a generic and vendor independent way. Devices will either blink LEDs, or turn their lights on/off periodically.
- Adds a new module to switch a node on or off using a button to conserve the battery, e.g. when it is on its way out of the factory
Small Changes:
- Refactored SendMeshMessage/-Internal to return a proper result code
- Added test against packet dropping in CherrySim
- Added fastLaneToSimTime for better debugging in CherrySim
- Adds more diagnostic information to the error log in case of a watchdog reboot
- Refactored LiveReportingTypes
- Some more documentation
- Test against fake JOIN_ME packets was added
Fixes:
- Fixed MTU upgrade behavior and resulting SplitNotInMTUExcepctions
- Fixed connectionTimeoutProbabilityPerSec in CherrySim
- Fixes a bug where messages over mesh access connections were not correctly relayed between nodes
- Disconnect a mesh access connection during the handshake if a invalid node key is used, instead of progressing with the handshake and leading to a unusable connection which times out.
- Proactively fixes potential buffer overflow while copying the event buffer.
- Fix bug causing a simulator crash and error messages when sending a split messages gets interrupted by a disconnect / reconnect due to an error in packet queue processing.
- Lots of other small fixes
Release 1.0.830
Main features of this release:
- Integration of the BrotBoxEngine native renderer.
- Changes in how the build system handles available featuresets. Introduction of a per-featureset test-macros in order to protect against invalid include's.
- Basic support for dynamically changing the connection interval after the connection was established.
- Support for device identification via the
IoModule
using built-in LEDs. - Deprecation of unimplemented
LedMode
s. - Bugfixes for the
RuuviWeatherModule
andprod_ruuvi_weather_nrf52
featureset related to excessive power usage and Anomaly 87. - Summary of the available featuresets available in FruityMesh.
- Documentation refactoring of the error log and live error reporting.
- Bug fixes and small enhancements.
Release 1.0.520
Main features of this release:
- New featureset for using FruityMesh together with the nRF52840-DONGLE (
github_sink_usb_nrf52840
). - New board files for the RuuviTag and the nRF52840-DONGLE.
- Documentation on the QR-Code specification used for FruityMesh powered devices.
- New
RuuviWeatherModule
which makes it possible to use FruityMesh together with the Ruuvi Station app. - Basic support of the Timeslot API of the Nordic SDK / SoftDevice for cooperative scheduling of full control over the RADIO peripheral (used in the RuuviWeatherModule).
- Tutorial on how to use FruityMesh together with the RuuviTag and a corresponding precompiled firmware.
- Bug fixes and small enhancements.
Release 1.0.90
Who says that 2020 is only bringing bad stuff! We are finally ready to release FruityMesh 1.0 on GitHub as our latest stable release. We have added quite a few features while working in the cosiness of our homes. We feel quite confident to have reached a mostly stable API and code base. If you have some time during the upcoming holidays while not being allowed to meet your friends, feel free to play around a bit with FruityMesh and stay healthy :-)
As always, here's a list of the new features, make sure to check out our documentation which we have extended quite a bit for more details.
Major Features
- Quality of Service - Messages are now routed by 4 different priorities
- ConnectionQueueMemoryAllocator - Messages are now queued in a central place which increases the queue size a lot and optimizes the used space
- EasyDMA UART for the gateway node - This takes a lot of load from the gateway node when logging a lot of data
- Tons of new documentation - See for yourself, we documented a lot on the internal implementation details
- Tons of new tests - New tests make sure that most of our code is tested in the Simulator
- Automatic Discovery switching - Allows you to save battery power if you know how many nodes are part of your network
- Lots of fixes - As always ;-)
Small Stuff
- Stack Watcher - We are now tracking and reporting how much stack a node was using during runtime
- MessageLength type introduced - Message length checks are forced to be done on >= which makes them compatible with future versions
- Automatic terminal print with throughput calculation - Use the flood command from the DebugModule
- StatusReporterModule get_connections_verbose added to get more debug information
- More error logs added
- CRC skipping - Using "CRC: skip" for the gateway node allows easier manual debugging
- Automatic nodeId range check during enrollment according to our specification
- Default Network Key for the GitHub example featureset was changed to 22:22:.....22:22, so pay attention if you mix it with some previously flashed nodes that have the old key hardcoded.
- We have extended the number of example featuresets (see below)
How to use the precompiled binaries
This zip package contains a numer of precompiled featuresets that were built from the source code of this release. They can be used to easily test FruityMesh without setting up the toolchain for building the source code. They are already merged with a matching SoftDevice for the chipset.
You need to download the nRF Command Line Tools and then execute e.g. the following command:
nrfjprog --program github_dev_nrf52_merged.hex --chiperase --reset
This will flash the binary on a connected development kit. All nodes that you flash with one of these featuresets will be already enrolled in the same example network and will connect to each other.
The following precompiled binaries are currently available:
github_dev_nrf52_merged / github_dev_nrf52840_merged
Use the first one if you have an NRF52-DK or use the second one if you have an NRF-52840-DK. Use either a UART Terminal or a Segger RTT viewer to access the Terminal. Refer to our Quick Start guide for more info.
github_sink_nrf52
If you want to build a gateway that communicates with the mesh over UART, use this featureset. The UART terminal is active.
github_mesh_nrf52
You can flash this on a few nodes for a "production" test. Segger RTT and UART are disabled so you will need to interact with them over the mesh.