@fallberg fallberg released this Jul 9, 2016 · 496 commits to development since this release

Assets 2

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).