Major version change
- Library size reduced ~20% by removing a lot of C++ overhead.
- Full configuration of library behaviours and features directly from sketch code. Makes codebender builds much easier and allows you to make configuration without editing MyConfig.h.
- No more MySensors constructor mess with radio drivers and signing backends. All setup and initialization is handled “behind-the-scene”.
- Calls to process() is handled in the background automatically.
- Structural change: Embedding of drivers and libraries in a structured way instead of using the weird arduino-build-system util-folder which includes everything when building.
- All gateway variants available as examples without any need for re-configuration (E.g. SOFT-SPI automatically enabled for W5100).
- Gateway just another sensor node! So now you can have wired ethernet sensors and wireless ESP8266 sensors without any radio attach if you want.
- AES encryption (RF24)
- Introducing a presentation() function in sketch - This allows controller to re-request presentation and do re-configuring node after startup.
- Optional receive() function in sketch replaces begin(callback).
- sendHeartbeat() - Allows node to send heartbeat and controller to ping nodes.
- Ethernet/ESP8266 gateway supports setting static ip and using dhcp
- Ethernet/ESP8266 gateway allowing communication using UDP.
- Ethernet/ESP8266 gateway can now act as a client which opens a socket to controller at startup. NOTE: This has to be supported by controller.
- MQTT client gateway on ESP8266 or Arduino+W5100 Ethernet adapter
- ESP8266 stability improvements
- Serial transport layer (RS232/RS485) with dePin management.
- Added variable V_CUSTOM - For sending/requesting custom data to/from controller and between nodes. Preferable using S_CUSTOM device. This variable-type is controller specific so use it with care in the officially provided examples.
- New sensors types and variables: S_INFO, S_GAS, S_GPS, V_TEXT, V_CUSTOM, V_POSITION, V_VAR, V_VA, V_POWER_FACTOR
- Deprecated sensors: S_LIGHT (use S_BINARY)
- Deprecated variables: V_DIMMER (use V_PERCENTAGE), V_HEATER (use V_HVAC_FLOW_STATE), V_LIGHT (use V_STATUS)
- New command I_DISCOVER - retrieve active nodes and topology.
- Detection of mis-wired RFM69 radios.
- MyMessage:getCommand()
- Cleanup Github Repo:
- Moved MYSBootloader to separate Github repository.
- Moved NodeJsController to separate Github repository.
- “Smart sleep” variants of all sleep methods that allows nodes to receive buffered messages/commands from controller that was issued while node was sleeping. When calling the smartSleep() variant, the goes to sleep and sends a heartbeat message after waking up (informing controller that node is awake) and waits MY_SMART_SLEEP_WAIT_DURATION to process any incoming buffered messages from the controller. NOTE: Controller must support this feature.
- Optional before() method in sketch - for initialisations that needs to take place before radio has been setup (using SPI).
- New conditional parameters to wait(unsigned long ms, uint8_t cmd, uint8_t msgtype) loops until time passed or specified command received.
- New RF24 driver by @tekka007. Stripped C++ code, 2-fold speed increase, Radio code reduced about 2kb, Eliminate non-essential register polling/writing, Uses 2 RX pipes
- Possible to re-assign/reallocate node ids by sending I_ID_RESPOSE to a node.
- AVR/SAMD hardware moded to separate GitHub repository and accessible using board manager by adding https://raw.githubusercontent.com/mysensors/ArduinoBoards/master/package_mysensors.org_index.json
- Support SAMD architecture (Arduino Zero, MySensors Gateway Hardware)
- transportInit()-method used to reinitialize radio after full power-down of radio. Useful when using one of the GPIOs to power radio (or via MOSFET).
- Move OTA FW update code to MyOTAFirmwareUpdate
- Implement I_DEBUG to report various parameters such as CPU frequency, CPU voltage, free mem, routing info and function to do a “factory reset” by clearing the MySensors EEPROM area
- Added library status indication callback. User can install callback to handle status & error information from the library.
- Improved error LED feedback. A 'headless' sensor can report error codes by counting the number of blinks of the error led.
- Overhauled transport with focus on reliability and stability (most important changes/enhancements):
- state machine for transport-related tasks
- node checks connection to GW during transport initialisation
- parent node assignments are handled as preferred parent with fallback mechanism
- regular transport sanity checks for GW and repeater nodes
- repeater node checks uplink connection to GW before advertising as repeater during find parent state
- in case of transport failure (HW or link): power-down (PDT) for a defined time and re-initialisation
- Node registration: node has to register to the GW/controller in order to send sensor data (default state configurable)
- For maintenance reasons, examples depending on external libraries have been removed, to be placed in a separate repository (work in progress).