Skip to content

@tekka007 tekka007 released this Dec 9, 2019

Highlights in this release

Add support for RPI4 (#1364)

Transport and crypto HAL update (#1282)

Rename "soft ack" to echo (#1292)

Add log parser (#1138

RF24 improvements (#1316)

...and many other bug fixes and tweaks

Important information:

If you encounter compilation issues, update your board definitions:

  • AVR 1.8.2
  • ESP8266 2.6.2
  • ESP32 1.0.4
  • SAMD 1.8.4
  • nRF5 0.6.0 (Sandeep Mistry)
  • STM32F1 2019.12.8 (stm32duino)


Special thanks to the following people who have contributed code to this release:

  • Alfredo
  • desander
  • hannesweisbach
  • ltigges
  • Mikael Falkvidd
  • Patrick Fallberg
  • pragtich
  • Rik Jansen
  • tekka
  • Yveaux


MySensors 2.3.2 release

  • CI: Update Arduino IDE 1.8.8 (#1238)
  • Update test sketches (#1243)
  • Update CI scripts and ESP32 main (#1244)
  • Debug: Recursive wait() calls (#1249)
  • RPI: Fix compilation error (#1247)
  • Add MQTT Wifi connection status check (#1248)
  • MQTT GW: Subscribe topic concatenation refactored (#1240)
  • Allow definition of MY_OTA_RETRY and MY_OTA_RETRY_DELAY (#1241)
  • Add hwSPI to HAL (#1234)
  • Add unified HwDebugPrint() (#1251)
  • Maintenance: ethernet and MQTT code (#1250)
  • Update recursive wait() call warning (#1252)
  • Add Arduino IDE library badge to README (#1254)
  • Code maintenance (#1261)
  • Fix UDP transport and update GW examples (#1262)
  • Cleanup: Remove RFM69 listenmode references (#1263)
  • Code maintenance (#1264)
  • Rpi: flush log file (#1269)
  • CI: Update Arduino IDE 1.8.9 (#1274)
  • Enable heartbeat for GW-only mode (#1273)
  • Add CPU frequency to core debug info (#1275)
  • Code maintenance (#1279)
  • AVR: Fix frequency measurement (#1280)
  • Fix GW transport (#1281)
  • Added getSleepRemaining to core (#1286)
  • Transport and crypto HAL update (#1282)
  • Fix TransportHAL debug output (#1287)
  • Fix TransportHAL debug output (#1288)
  • Transport doc (#1291)
  • Add more checks for missing keywords (#1293)
  • Rename RadioSettingGrpPub to TransportSettingGrpPub (#1295)
  • Document esp8266 limitation for MY_RX_MESSAGE_BUFFER_FEATURE (#1296)
  • Rename "soft ack" to echo (#1292)
  • Update CI (#1298)
  • Fix serial protocol parser (#1301)
  • Update CI and SAMD board defs (#1302)
  • Append instead of overwrite CXXFLAGS (#1304)
  • Add CXXFLAGS to configure output (#1305)
  • Add info on ESP32, STM32, nRF5 and SoftSPI (#1307)
  • Fix issues after CPPcheck 1.88 update (#1308)
  • Energy meter pulse sensor itslav (#1306)
  • Revert "Energy meter pulse sensor itslav (#1306)" (#1310)
  • Code maintenance (#1309)
  • Revert the revert 1306 energy meter pulse sensor itslav (#1313)
  • RF24 improvements (#1316)
  • Fix protocol header (#1319)
  • Move noACK control to transportSendWrite() (#1317)
  • Fix inverted noACK flag (#1321)
  • Create FUNDING.yml (#1323)
  • Exclude items from the Arduino library package (#1324)
  • Initial commit (#1325)
  • MyTransport update (#1329)
  • Clarify MY_DEBUG_OTA define (#1331)
  • Add log parser (#1338)
  • Add id failed to logparser (#1339)
  • Delete logparser.js
  • Add a few improvements to the log parser (#1340)
  • ESP32/ESP8266: place ISR in IRAM (#1348)
  • Cumulative update (#1347)
  • Fix segmentation fault (#1346)
  • Update MyMessage.cpp (#1352)
  • Code maintenance (#1355)
  • CI: Update Arduino boards (#1356)
  • Make it clear when checks pass (#1360)
  • Update mystools/ for WSL (#1361)
  • Add MY_RS485_DE_INVERSE define to invert the device enable pin polarity (#1358)
  • Fix potential buffer overflow (#1365)
  • Fix double free (#1366)
  • ESP8266: Update to 2.6.1 (#1370)
  • Add fuse chapter to signing troubleshooting (#1369)
  • RPI: Add support for RPI4 (#1364)
  • Bumping version to 2.3.2-rc.1 (#1362)
Assets 2

@mfalkvidd mfalkvidd released this Dec 14, 2018

Highlights in this release

RF24: Add delay after power-up (#1193)

Update #1184, RFM69 frequency band support for India

Improve transport function & debug messages (#1191)

Allow flash strings in present() to save RAM (#1198)

Important information:

  • The NRF24 defines have been renamed to RF24 to use naming that's consistent with the other transport defines.
  • ESP8266 board definitions 2.4.2 or later are REQUIRED for use with this release. If you use ESP8266 board definitions 2.4.1 or earlier you will get an error saying fatal error: gdb_hooks.h: No such file or directory #include "gdb_hooks.h"


Special thanks to the following people who have contributed code to this release:

  • freynder
  • Jeeva Kandasamy
  • Lee Nelson
  • tekka
  • Yveaux
  • Marcelo Aquino
  • Mikael Falkvidd
  • Patrick Fallberg


MySensors 2.3.1 release

f4fd69eb131cd5d by Mikael Falkvidd at 2018-12-14 08:53:20


121648f34bb45ab by tekka at 2018-11-12 20:36:10

Update PubSubClient 2.7 (#1224)

4b14f5a7401e732 by tekka at 2018-11-11 14:06:37

Implement CPUTemperature() (#1225)

bde7dadca6c50d5 by tekka at 2018-11-04 12:27:28

Display release number (#1217)

06bdb991b6012c3 by tekka at 2018-11-03 09:04:32

MY_DEBUGDEVICE output (#1221)

4104cdbb980eb35 by tekka at 2018-10-23 21:26:16

Revert "Allow splash screen to redirect to MY_DEBUGDEVICE if defined (#1057) (#1210)" (#1220)

This reverts commit f5676a3.
d1805db3484e5e9 by tekka at 2018-10-23 19:38:13

Allow splash screen to redirect to MY_DEBUGDEVICE if defined (#1057) (#1210)

  • Allow splash screen to redirect to MY_DEBUGDEVICE if defined (#1057)
    f5676a362207b89 by Lee Nelson at 2018-10-22 18:55:39

Code updates & harmonization (#1201)

8e8f44b40252e9d by tekka at 2018-10-21 14:55:24

Jenkins:Update Arduino 1.8.7 (#1215)

b6ab7aaf03354bf by tekka at 2018-10-21 11:10:21

Add GatewayESP32OTA example (#1216)

5a7f3a4faee19e1 by tekka at 2018-10-21 11:10:07

Fix internal message forwarding (#1205)

5d159a6c57209e9 by tekka at 2018-09-12 09:27:12

Allow flash strings in present() to save RAM (#1198)

b346214b1988a57 by tekka at 2018-09-04 07:00:38

Fix SPIDEV on Armbian Stretch (#1200)

Fix #1195
1c33609556e10b1 by Marcelo Aquino at 2018-09-04 06:59:32

Update Jenkins to use Arduino 1.8.6 (#1199)

0b51d5c1476086f by tekka at 2018-08-31 09:17:02

RF24: Add delay after power-up (#1193)

7214b0d4577ba9b by tekka at 2018-08-30 19:14:29

Nrf24 lowlevel (#1192)

  • Implemented nRF24 constant carrier wave

For testing purposes only! Not used by regular MySensors stack.

  • Please Jenkins for unused functions

  • Add RPD retrieval
    966c5d70e12ba41 by Embedded Innovation at 2018-08-30 19:14:10

Inclusion mode: change pinmode to INPUT_PULLUP (#1197)

Issue 1196: #1196

According to arduino references we should instead use INPUT_PULLUP
as of Arduino 1.0.1
cff369679b96afb by freynder at 2018-08-30 19:13:44

Improve transport function & debug messages (#1191)

6d24ab1bb52ed44 by tekka at 2018-08-29 12:52:01

AVR: Fix variable scope in SHA256 ASM (#1188)

  • AVR: Disable SHA256 ASM implementation

  • AVR: Fix variable scope in SHA256 ASM
    ea7f7bec79573a5 by tekka at 2018-08-26 15:39:47

Add lowlevel nRF24 functions (#1190)

  • Implemented nRF24 constant carrier wave

For testing purposes only! Not used by regular MySensors stack.

  • Please Jenkins for unused functions
    5051d516dcb42cc by Embedded Innovation at 2018-08-26 15:38:46

RF24: Fix TX issue regarding PA+LNA modules (#1189)

46568ba14a6b6e6 by tekka at 2018-08-26 12:46:16

Code maintenance (#1186)

6ffe29cb5fcfa33 by tekka at 2018-08-22 18:50:16

Update #1184, RFM69 frequency band support for India (#1185)

c8d951d3df05a23 by Jeeva Kandasamy at 2018-08-21 17:31:10

Introduce CryptoHAL, optimize crypto functions (#1178)

2e406f51350f46c by tekka at 2018-08-21 17:30:11

Direct node2node traffic (#1174)

831e0e8cd232f7e by tekka at 2018-08-21 17:20:06

GW: Send discovery message after startup

4a94fcfd4fafaf7 by Olivier at 2018-08-15 12:32:08

Update library props and fix typo (#1173)

57e3294bcc82b8e by tekka at 2018-08-07 14:00:48

Add CPPFLAGS to configure output (#1168)

Printing the CPPFLAGS might help people notice when they are
not including all parameters on one line.
d0d0ee7e5ee6f30 by Mikael Falkvidd at 2018-08-06 17:15:47

ESP8266: Updates to support 2.4.2 board defs (#1169)

2badd59a71a096b by tekka at 2018-08-04 18:40:54

Prevent toggle ACTIVATE (#1164)

Fix issue #1163. Prevent toggling advanced features on nRF24L01 non-plus versions.
c6a970be8ba27ba by Embedded Innovation at 2018-07-30 11:14:36

Development version 2.3.1-alpha (#1154)

75538934955572c by Patrick Fallberg at 2018-06-25 07:21:45

Assets 2

@fallberg fallberg released this Jun 18, 2018

Highlights in this release

New gateways

  • TinyGSM based gateway support for ESP8266. Thanks @thucar.


  • Config files are used to store more settings (security keys, gateway settings, etc)
  • More security settings available


  • The simple password flag has been redesigned:
    • MY_SIGNING_SIMPLE_PASSWD only affects signing.
    • MY_ENCRYPTION_SIMPLE_PASSWD only affects encryption.
    • MY_SECURITY_SIMPLE_PASSWD enable both signing and encryption flags.
  • Software AES encryption now available for RFM85 radios


Pin changes

  • ESP8266 changes RFM69/95 default IRQ pin to D1.


MySensors 2.3.0 release

15351cdd5b92248 by Patrick Fallberg at 2018-06-18 14:15:50

Linux: Add rfm95 configure options (#1135)

b84cd6ac4ecacdd by Marcelo Aquino at 2018-06-16 17:19:32

Pre-register PR build statuses on GitHub (#1145)

This enables GitHub to show all statuses planned for execution.
88a0d70e4d66984 by Patrick Fallberg at 2018-06-16 14:41:37

Avoid data array overflow (#1142)

Occurs through packet collisions. Sometimes a wrong length is received.
a28b7036caa787f by seeers at 2018-06-16 11:32:10

Jenkins: Update CI scripts + Arduino IDE 1.8.5 (#1144)

f934d7c46f92f51 by tekka at 2018-06-10 11:05:47

Jenkins: Update ESP8266 board defs 2.4.1 (#1143)

fc99db60e0f870d by tekka at 2018-06-10 08:59:48

Remove redundant keyword identifiers (#1140)

The third field of keywords.txt is used to provide Arduino Language
Reference links, which are accessed from the Arduino IDE by
highlighting the keyword and then selecting "Find in Reference"
from the Help or right click menu. Adding values to this field that
do not match any existing reference pages results in a "Could not
open the URL" error.
9f987a98f951772 by per1234 at 2018-06-08 08:29:06

Add software AES encryption to RFM95 transport HAL (#1054)

Also clean up capabilities flags a bit and fix test-sketch
for rfm95 to use proper encryption flag.
bbaa9399d6e68f1 by Patrick Fallberg at 2018-05-29 22:09:24

Fix syntax error in MyGatewayTransportEthernet (#1132)

Code doesn't compile very well if statements are missing
a semicolon at the end.

This error snuck in in
59b15f5824bf060 by Mikael Falkvidd at 2018-05-18 13:46:12

Refine cppcheck analysis (#1133)

  • Details link on github for cppcheck now goes straight to the report
  • Removed umatched suppression from the cppcheck suppression file
    4e1d69dbb232bd8 by Patrick Fallberg at 2018-05-18 06:35:43

Add error message when HAL is undefined (#1131)

ba7027ce1d4ba81 by Avamander at 2018-05-16 08:34:14

Update cast in msg.set (#1130)

A while ago, MySensors changed to use int32_t
instead of long int (and similar for other data
types). This change was not applied to all examples,
causing some examples to fail compilation for
ESP8266 with the following message:

call of overloaded 'set(long int)' is ambiguous

This update changes the casts to match the new style.
This fixes
Thanks to for reporting.
0b9af6d713aaa17 by Mikael Falkvidd at 2018-05-14 19:32:11

Fixed some minor typos in comments (#1082)

  • Fixed typo in the username
    f5ed26c778c1810 by Marco Bakera at 2018-05-06 18:22:56

Remove use of titles by CI Butler (#1125)

c08b80cb90b434c by Martin Hjelmare at 2018-05-04 16:35:00

Kill Gitler and make way for The Butler (#1124)

The Butler is a more polite and helpful replacement to the
grumpy old Gitler.
The Butler will do his utmost to assist new (and old)
contributors to the MySensors cause.
d9e05eb39c387ce by Patrick Fallberg at 2018-05-04 07:38:24

Add transport sanity check before entering loop() (#1116)

153850de808023e by tekka at 2018-05-01 20:33:26

Fix RFMxx deadlock and minor optimization (#1099)

3c07390323fb104 by tekka at 2018-05-01 20:31:16

Add sleep forever by sleep(0); (#1113)

For battery powered sensors which wake up by the RST Pin its useful
to sleep the cpu forever. When using this command:
the code will be stripped down to hwSleep(0);.
But this will not sleep the cpu forever.
1c5853ce79fb62b by Tombula at 2018-05-01 14:59:04

Word corrections (#1114)

Consolidate WiFi defines (#1110)

Great work @tekka007
bb7766197c982eb by tekka at 2018-05-01 14:54:43

Add more missing keywords (#1111)

This fixes
and also adds Doxygen and syntax highlighting
for the following keywords:
e0988e6d9e368f1 by Mikael Falkvidd at 2018-04-10 18:22:39

Clarify default defines (#1106)

Moved example values after the @brief portion of Doxygen,
so the default (empty/undefined) values are visible
in Doxygen.
a8429868e770ce8 by Mikael Falkvidd at 2018-04-10 12:58:11

Add Doxygen for MQTT_USER and MQTT_PASSWORD (#1105)

This fixes
df1bb7fcc538a0c by Mikael Falkvidd at 2018-04-10 05:56:17

Fix spelling mistakes (#1104)

f2d9f72cf488b86 by Mikael Falkvidd at 2018-04-09 21:31:50

Add keywords that already have Doxygen (#1108)

Found some keywords that already have Doxygen comments
but were not present in keywords.txt
bb80732eada0443 by Mikael Falkvidd at 2018-04-09 21:27:19

ESP32: Support HW (#865)

This fixes #968
eaf1b9452bef48f by tekka at 2018-04-07 12:46:01

Remove faulty wiring instructions from ESP gateways (#1100)

This fixes
has been updated to include GPIOn instructions
(in addition to the existing Dn instructions).

Thanks to RWoerz for reporting this discrepancy.

Also, the "barebone" boot wiring has been moved to
d1aa419efe612bf by Mikael Falkvidd at 2018-04-07 08:42:52

Add missing keywords 2 (#1087)

  • Add missing keywords and blacklist

These keywords already exist in Doxygen and should be highlighted
in the Arduino IDE.

Some keywords should not be highlighed and are therefore added
to the blacklists at end of keywords.txt

  • Sort keywords in each section

  • Add blacklist of MY_MQTT_TOPIC_PREFIX
    9809eb6270ae6c9 by Mikael Falkvidd at 2018-04-05 20:25:05

RF24: Minor power optimization (#1069)

2994d83e53cda28 by tekka at 2018-04-04 18:48:36

Linux: Support keys in config file (#1093)

  • Signing and encryption keys are set through the configuration file.
  • SoftEeprom update.
    3c0b2727a569072 by Marcelo Aquino at 2018-04-04 18:43:13

MY_GATEWAY_TINYGSM support. GSM gateway using a modem module (#1097)

Added TinyGSM driver and GatewayGSMMQTTClient example
4d90c00f984e3af by thucar at 2018-04-04 14:40:11

Linux: RF24 interrupt trigger workaround (#1094)

Fix #870
b5a2fc226fe6475 by Marcelo Aquino at 2018-03-27 21:07:57

Linux: Minor log fix (#1092)

Use colored log messages only on the terminal.
fb95a84e6f6eaeb by Marcelo Aquino at 2018-03-25 18:51:41

Linux: Fix stability problem with ethernet (#1091)

  • Fix a problem where mysgw stops working and consumes a lot of cpu.
  • Fix bug with tcp sockets where socket descriptor wasn't being
    ea6d07cb79394d6 by Marcelo Aquino at 2018-03-24 07:16:44

Linux: Use config file for gateway settings (#1061)

  • The following settings can be use on the config file:
    • verbose=[debug,info,notice,warn,err] - Logging verbosity.
    • log_file[0|1] - Enable logging to a file.
    • log_filepath=(FILE) - Log file path.
    • log_pipe=[0|1] - Enable logging to a named pipe(aka fifo).
      Use this option to view your gateway's log messages from the
      log_pipe_file (defined below).
      To do so, run the following command on another terminal:
      • $ cat "log_pipe_file"
    • log_pipe_file=(FILE)
    • syslog=[0|1] - Enable logging to syslog.
    • eeprom_file=[/etc/mysensors.eeprom]
    • eeprom_size=[1024]
  • Change some mysgw parameters:
    • Added:
      • -q, --quiet: for quiet mode, disable log messages written to the
    • Removed:
      • -d, --debug: removed, log messages are now enabled by default.
    • Replaced:
      • -b, --background: replaced by --daemon
  • isatty() is no longer used, log messages by default are printed to
    stderr unless the gateway is started with --quiet (#1022)
  • MY_LINUX_CONFIG_FILE: no longer holds the path to the eeprom file,
    but to the configuration file
    2175c993ef81b78 by Marcelo Aquino at 2018-03-23 10:00:34

Add detection of missing keywords to gitler (#1085)

06f8d2b7e5dc3cc by Mikael Falkvidd at 2018-03-22 07:26:27

Add missing keywords (#1084)

A blacklist is available at the end of keywords.txt

I decided to blacklist all the LINUX keywords. I guess people
could use the Arduino IDE to edit the sketch for the raspberry
pi gateway, but I'm not sure we should encourage that.

I'll add gitler support for auto-detecting missing keywords
in a separate PR.
c9c461846a8ce77 by Mikael Falkvidd at 2018-03-21 14:08:02

Simplify doxygen for ./configure (#1080)

No need to grep when we have a command that outputs
exactly what we want.
7a33082eaf506c1 by Mikael Falkvidd at 2018-03-12 10:47:39

Fix default IRQ pins on ESP8266 that prevent MCU from boot (#1076)

  • Derive default interrupt from configured instead of default pin

Derive DEFAULT_RFM69_IRQ_NUM from MY_RFM69_IRQ_PIN instead of
DEFAULT_RFM69_IRQ_PIN so that _NUM does not have to be defined
if _PIN is redefined

  • Change default IRQ pin for RFM69/95 on ESP8266 to GPIO5=D1

The originally defined pin GPIO2 prevent ESP8266 from booting,
since it has to be pulled high for booting and DIO0 from the
RFM69 is defaul low.
For this reason, it is improbably that anyone is using the default
and would be affected by this change.
3d093e6beda34fe by kvoit at 2018-03-08 16:56:22

Add git commit message hook to the mystools bundle (#1067)

The message hook validates that the c ommit message follows
the MySensors requirements.
More specifically, it checks that

  • Commit message does not exceed a line length of 72 characters
  • Commit title start with an uppercase character
  • Commit title does not end with a period ('.')

Fixes #672
3f2d2921428ef2a by Patrick Fallberg at 2018-03-06 16:32:54

Development version 2.3.0-alpha (#1073)

eb839464b8e17f9 by Patrick Fallberg at 2018-03-04 16:49:51

AVR: Fix OTA logging (#1074)

c805f77f202cfc2 by tekka at 2018-03-01 19:27:07

Nvm fota (#1018)

  • New Firmware OTA for NVM/mcuboot (nRF5)
  • Support for mcuboot (nRF5)
  • Support for run length encoded data
  • Support for smaller FIRMWARE_BLOCK_SIZE, if required
  • Update NVM

  • New MY_LOCK_MCU for NRF5

  • Test with Sensebender GW + Sensebender Micro was successful
    fe42dbdcca4ced3 by d00616 at 2018-02-28 19:03:34

ESP8266 Gateway examples: clarify inclusion pin (#1065)

The comment for inclusion mode pin and the definition of

GPIO5 should be safe to use, while GPIO3 is used for the
UART which might result in conflict.

This fixes
599c0bada60089c by Mikael Falkvidd at 2018-02-22 11:04:03

Transport code harmonization (#1072)

57eca4f4afb3a26 by tekka at 2018-02-20 11:32:17

Fix MY_CORE_ONLY: Initialize HW (#1070)

b51981ab3d11454 by tekka at 2018-02-20 11:32:03

Fix variable names, minor updates (#1071)

345d6d7d119f5d2 by tekka at 2018-02-19 12:26:14

RFM69: Updates and optimizations (#1049)

  • RFM69: Updates and optimizations

  • RFM69: Updates and optimizations
    a0af38a0d8cd2cb by tekka at 2018-02-18 20:06:28

RFM95: Updates and optimizations (#1063)

0bc3ac9cb32e6f9 by tekka at 2018-02-18 20:05:25

Linux: Serial minor update (#1053)

  • The symlink name for the PTY device is set using --my-serial-port
    making --my-serial-pty deprecated
  • MY_DEBUGDEVICE can be used to print debug messages from MySensors
    (as it is currently in the other architectures)
  • Rename SerialSimulator class to StdInOutStream
  • Remove old deprecated option --my-radio
    54fb250ab278324 by Marcelo Aquino at 2018-02-13 12:22:27

Restructure transport HAL (#1062)

6794c72ecd8c35c by tekka at 2018-02-11 15:48:11

Revamp the simple password flag and rPi fixes (#1056)

MY_SIGNING_SIMPLE_PASSWD only affects signing,
only affects encryption.
MY_SECURITY_SIMPLE_PASSWD enable both these flags.

The rPi port has been improved to support more
security settings and it is now also possible to
enable encryption for RFM69 transport.

Documentation has been improved to provide a
"Security" section under "Library customisation"
which has a table that summarize all security
related configuration flags, and the corresponding
rPi configuration flags.

The signing personalization documentation has been
updated to include the procedure for rPi.

Fixes #1055
8a1f5f4cf9d4a5c by Patrick Fallberg at 2018-02-11 10:22:48

Various CI-pipeline fixes (#1042)

  • Let Gitler produce a changelog for release builds
  • Fix bug in publishing release documentation
  • Fix bug in labeling documentation
    (now uses tag data for better tracability)
  • Update copyright in documentation
    968b2daff731873 by Patrick Fallberg at 2018-02-10 19:43:18

AVR: Harmonize code (#1059)

72b71c8fc810c89 by tekka at 2018-02-10 17:58:20

Fix smartSleep() (#1060)

dea0fd50ca2a9c7 by tekka at 2018-02-10 17:49:31

RFM69 - add keyword MY_RFM69_IRQ_PIN (#1052)

  • Add MY_RFM69_IRQ_PIN keyword

Add MY_RFM69_IRQ_PIN into keywords.txt
7ed54423fbee959 by Miloslav Kazda at 2018-02-02 11:37:53

Add URL option for MQTT broker in example sketch (#1033)

14d8accf3716919 by Kartik Arora at 2018-01-30 20:04:37

Doxygenize MyMessage / Message manipulation (#1035)

  • Fix cppcheck issues

Fixes the following cppcheck issues:
305 variableScope 398 style
The scope of the variable 'timeDiff' can be reduced.

127 variableScope 398 style
The scope of the variable 'led_state' can be reduced.

  • Doxygenize MyMessage / Message manipulation

This should replace the static documentation at

I have enabled existing comments and added new comments where
necessary. Feedback on syntax and contents is welcome.
8fbdca445280ac4 by Mikael Falkvidd at 2018-01-30 19:47:11

RFM69: Fix compiler warning (#1046)

eff11367333162a by tekka at 2018-01-28 13:41:03

Fix cppcheck issues (#1036)

Fixes the following cppcheck issues:
305 variableScope 398 style
The scope of the variable 'timeDiff' can be reduced.

127 variableScope 398 style
The scope of the variable 'led_state' can be reduced.
06269dd94908c35 by Mikael Falkvidd at 2018-01-28 08:31:19

Development version 2.2.1-alpha (#1043)

52ac498edae9f22 by Patrick Fallberg at 2018-01-25 21:52:57

Assets 2

@mfalkvidd mfalkvidd released this Jan 25, 2018

Lots of new stuff

Note that the default DEFAULT_RF24_CS_PIN on Arduino Mega (and maybe others) has changed from 10 to SS.


MySensors 2.2.0 release

64be32a19a2bdfb by Mikael Falkvidd at 2018-01-24 19:56:53

Update for upcoming release (#994)

8d3d7ae6b8e9c04 by Patrick Fallberg at 2018-01-24 09:11:48


Thanks to @TokTias for this idea and a starting point for the code.

This PR replaces #1029
467b7e000ab22fb by Mikael Falkvidd at 2018-01-23 09:26:01

Relax Gitler on commit headline length (#1031)

The guide we are referring to
( )
shoot for 50 characters, but consider 72 the hard limit

so let Gitler consider 72 the hard limit (instead of 50).
d9059d7bd512d7b by Mikael Falkvidd at 2018-01-19 16:52:07

Correct misspells (#1028)

af3452f91c15b60 by tekka at 2018-01-11 21:26:08

SignalReport disabled by default (#1027)

1feae06d7f31d9c by tekka at 2018-01-11 06:46:43

Linux/SerialPort: Log success message (#1021)

This log message makes the Serial gateway print the serial port path,
similar to how the Ethernet gateway prints IP and port.

Example log output:
mysgw: Serial port /dev/MyCoolTTY (115200 baud) created
ca73ae20d6c078e by Mikael Falkvidd at 2018-01-07 13:52:08

Linux: Fix null ptr exception (#1025)

6434d2fa99f0915 by tekka at 2018-01-07 13:51:28

Update doxygen (#1024)

b51c77b2bf1e643 by tekka at 2018-01-01 11:55:06

Doxygenize MyGatewayTransport (#1023)

d557cb3d34976b6 by tekka at 2018-01-01 11:13:18

RFM69: Fix compiler warnings (#1020)

292dc849cca0ba4 by tekka at 2017-12-28 12:07:09

Add MY_RS485_SOH_COUNT option (#1014)

b148d828ad14979 by rejoe2 at 2017-12-18 15:57:53

Update reference to Code Contribution Guidelines (#1011)

As mentioned by per1234 in
we should make it easier to find the full code contribution

Since we have multiple git repos, we don't want to duplicate the
guidelines in each repo. Instead, we link to the canonical source
27b0177d2654adb by Mikael Falkvidd at 2017-12-09 09:08:43

MySensors 2.2.0-rc.2 (#1000)

26232da4d80d97b by tekka at 2017-12-06 22:04:22

Use correct separator in keywords.txt (#1008)

The Arduino IDE currently requires the use of a tab separator between
the name and identifier. Without this tab the keyword is not
6337b8bf71d5a32 by per1234 at 2017-12-06 22:03:39

Fix FOTA updates with smart sleep (#999)

a80879e056cd30c by tekka at 2017-12-06 22:02:57

Harmonize debug outputs (#1002)

a9c49f0210e6f74 by tekka at 2017-12-05 03:03:39

Add MY_DEBUGDEVICE to redirect debug output (#1006)

  • Add MY_DEBUGDEVICE to redirect debug output

MY_DEBUGDEVICE, if defined, will replace MY_SERIALDEVICE
for the purpose of printing debug messages. This only
applies to debugging.
bfcb125e72fb32f by Lee Nelson at 2017-12-03 18:34:58

Update board name MyNRF5Board -> MyBoardNRF5 (#997)

8d9af98a55d2262 by d00616 at 2017-11-20 18:55:30

NRF5 ESB fix two states (#996)

e39b2be7aff85da by d00616 at 2017-11-19 12:48:29

NRF5 ESB fix Errata #78,#102,#106 (#995)

aabddc841cd526f by d00616 at 2017-11-18 16:02:38

Update RelayActuator example (#973)

Based on feedback from skywatch,

We'll need to update the wiring instructions on as well.
506d23581daab75 by Mikael Falkvidd at 2017-11-17 20:18:15

BCM driver: include inttypes (#983)

This makes it possible to compile the Raspberry Pi gateway on
Raspbian 9 (stretch), even without adding
(as was suggested in
#955 but was
insufficient for remediating this problem)

The compile problem was inadvertently introduced in

This change fixes the problem discussed in
1e3305959e67cc9 by Mikael Falkvidd at 2017-11-17 20:16:01

Script documentation generation and UML support (#992)

Documentation is now generated by invoking a shell script
which takes care of all the plumbing.
There is now also support of inlineing PlantUML syntax with
Doxygen. This inlining takes the form of
'PlantUML specific syntax'
The inlineing can be made in C syntax comment blocks.
Doxygen will then include the generated UML diagram when
rendering the HTML documentation.
All generated images will be placed under Documentation/img
which is the default search path for Doxygen.
356b783e1906735 by Patrick Fallberg at 2017-11-16 21:21:01

Add documentation for MyCapabilities (#989)

Also fixed spelling error in the MySigning documentation.

Fixes #902
1f8d810ff46e5e3 by Patrick Fallberg at 2017-11-13 11:34:50

RF24: Fix logical operator (#990)

d44ecd95dd93f94 by tekka at 2017-11-12 10:12:06

RFM69: Add missing SPI namespace (#987)

3830c5dde06bafa by tekka at 2017-11-11 17:26:14

Provide link to Gitler report for gitler asserts (#986)

This will help "offending" contributors to find what
is wrong.
809663e6480e96f by Patrick Fallberg at 2017-11-11 16:56:56

Use dedicated namespace for radio SPI (#985)

4f0a4ee021c658a by tekka at 2017-11-11 14:59:54

Clarify TSM:ID:FAIL message (#984)

As discussed in
and numerous other forum threads, many people don't understand
that id generation is done by the controller.

Many new users start out their first MySensors network with a
gateway, a single sensor node and no controller. Since MySensors
defaults to AUTO node id, the node gets stuck on TSM:ID:FAIL,
like this:

This change adds a clarifying note about the controller in the
doxygen documentation.
a23ab14494d28f9 by Mikael Falkvidd at 2017-11-11 09:41:09

Fix RFM95 reset (#982)

I've verified that the datasheet says to go low, and checked that the commit history does not indicate a reason for doing otherwise.
d43c755508203a7 by tekka at 2017-11-10 17:23:36

NVM: consideration of SoftDevice memory layout (#977)

0042cd4beea19e9 by d00616 at 2017-11-07 20:54:00

CppCheck cleanup (#975)

  • Add support for inline cppcheck suppressions
  • Clean out all known cppcheck issues
  • Terminate toll-gate on found cppcheck issues
    2d5404de979498f by Patrick Fallberg at 2017-11-07 19:37:36

Reshuffle arch files (#974)

e2ac85afbbb9f4d by tekka at 2017-11-06 20:24:38

Jenkins: Add STM32F1 support (#972)

b892aef6c31cfcf by tekka at 2017-11-05 13:19:42

Harmonize type definitions (#970)

9663d4c6b7e8968 by tekka at 2017-11-04 13:38:33

Jenkins: Drop redundant targets (#969)

30516cf87e24e79 by tekka at 2017-11-02 22:03:52

Update debug message table (#965)

1f07d7eafec5d69 by tekka at 2017-10-30 19:22:50

Revert attempt to build Arduino jobs in parallel (#966)

2d5c4a0e9ad6fcc by Patrick Fallberg at 2017-10-30 04:49:51

Pipeline improvements (#964)

  • Fix bug with toll-gate validation against master
  • Change cppcheck to not attempt to validate headers directly and
    to run on the entire codebase in the pipeline.
  • Support running Arduino test and examples build in parallel
    9b630f7d46945e2 by Patrick Fallberg at 2017-10-29 20:48:39

Implement RFM95 sanity check (#963)

e6cef8ba631bc30 by tekka at 2017-10-29 14:08:39

Update Debug message tables (#962)

a00857a8c2b9c96 by tekka at 2017-10-29 09:19:09

Update repo info (#961)

e685aa10e1feea0 by Olivier at 2017-10-28 20:46:22

Update library properties for RC1 (#960)

682a6b0798c718d by Olivier at 2017-10-28 13:20:52

MySensors 2.2.0-rc.1 (#959)

a190034305d0abd by Olivier at 2017-10-28 12:35:06

Minor splash screen tweak (#958)

571947ced9b43fd by Olivier at 2017-10-28 11:19:49

Add MY_ESP8266_BSSID parameter (#953)

To use this feature, add the following to a sketch, for example
const uint8_t bssid[] = {0x00, 0xDE, 0xAD, 0xBE, 0xEF, 0x00};
#define MY_ESP8266_BSSID bssid

This feature was requested in
3ebeb4fea15ee74 by Mikael Falkvidd at 2017-10-27 16:52:21

Generate Doxygen from configure (#952)

  • Generate Doxygen from configure

Use case: view the ./configure help text on the web.
This has been requested in

Manually putting the help text in the forum or on
would lead to diverging documentation, no version management and
extra maintenance burden. This commit attempts to auto-generate
the documentation and use existing Doxygen infrastructure to
add the help text to the rest of the MySensors documentation.
adfd9f36f1ec82d by Mikael Falkvidd at 2017-10-27 16:39:25

Implement Jenkins pipelines as code (#948)

Jenkins has been updated with new jobs that scan and execute
Jenkinsfiles. These Jenkinsfiles encapsulates all logic for building
and validating the commits in both pull requests and merged pull

Filestructure is as follows:
.ci/Jenkinsfile - This is the main Jenkinsfile that handles normal
pull request builds as well as merged pull request
Any repository in the MySensors GitHub organization
can implement this file and Jenkins will pick up
and execute it automatically.
.ci/Jenkinsfile-nightly - This perform merged pull request
post-validation using the nightly builds of
the Arduino IDE to provide early compliancy
status of the MySensors library for
upcoming releases of the Arduino IDE
.ci/ - This folder contain all the auxiliary scripts executed by the
Jenkinsfiles as well

Fixes #934
901258f16598ff7 by Patrick Fallberg at 2017-10-13 18:55:02

NRF24 disable DYN_ACK support (#940)

8cb9b2692098b66 by d00616 at 2017-10-01 20:39:09

NRF5 fix 8 bit inttype handling (#943)

f8e132fdb8a0726 by d00616 at 2017-10-01 18:40:32

Fix uninitialized state handling (#939)

3ca9b5638096726 by d00616 at 2017-10-01 07:41:36

Nrf5 improvements (#938)

  • Fix NRF5_ESB_readMessage, allways enable radio

  • NRF5: fixes and improvements

  • Compiles with arduino core for nRF52 (primo)
    MY_RADIO_NRF5_ESB stays unsupported with primo!

  • Split ACK negation flag into

  • MY_RADIO_NRF5_ESB changes to act more than NRF24

  • MY_RADIO_NRF5_ESB better support for powerdown/standby

  • Moved initialization from MyMainNRF5 to hwInit()
    1b1cf8ff9c1bba0 by d00616 at 2017-09-30 20:55:55

MyCapabilities: Add missing arch identifiers (#936)

9ee837199ef1c11 by Olivier at 2017-09-22 08:55:25

ESP8266: Fix example compilation error (#932)

5164af7edc1cb7a by Olivier at 2017-09-19 20:48:54

Disable splash screen on GW (#931)

f5dce5b61bfb601 by Olivier at 2017-09-19 12:33:55

New OTA debugging and logging feature (#913) (#913)

8412a3d360ef686 by d00616 at 2017-09-18 18:58:44

Make debug prints portable (#929)

0ed558f1d077e68 by Olivier at 2017-09-17 18:54:20

Correct NRF24 PA levels docs (#924)

Fixes #907
9e5a1e32cbef8b4 by Patrick Fallberg at 2017-09-14 08:49:58

Fix sanity check option (#923)

067519c500d4e1c by Olivier at 2017-09-07 16:10:55

Fix compiler warning (#922)

973b4b842315d7c by Olivier at 2017-09-05 17:35:13

Update hwUniqueID() function (#921)

a9ef29fa673c4c9 by Olivier at 2017-09-04 21:37:11

Autogenerate release versions (#920)

d74e9bd2123f08c by Olivier at 2017-09-04 20:37:50

NRF5: Fix sleep()

Fixes commit 5776d2b
NRF5: Fix and improve sleep(0) (#909)
46557d129ebcbb8 by Frank Holtz at 2017-08-29 16:43:49

Skip check personalization with simple passwd flag (#915)

Personalization does not need validation if the simple password
security flag is set.

Fixes #914
df34c0011818e7b by Patrick Fallberg at 2017-08-29 07:32:23

NRF5: Fix and improve sleep(0) (#909)

5776d2b650573e7 by d00616 at 2017-08-29 07:29:03

Update STM32 support (#908)

463358209da0f2b by Olivier at 2017-08-13 06:11:14

RPi: Fix GPIO Layout detection (#895) (#906)

d291a3661be1193 by Marcelo Aquino at 2017-08-12 11:58:02

Added posibility to use non standard SPI Flash (#899)

Added possibility to tune flash commands and parameters
in case off use non standard SPI flash for OTA
d17b9dd6f1ad9e0 by bilbolodz at 2017-08-03 07:01:05

Revert VER removal from CP string (#905)

b10cf85eb00706d by Olivier at 2017-08-01 06:13:06

Refactor the Doxygen structure (#880)

f3ab329ad38b97a by Patrick Fallberg at 2017-07-31 16:42:26

Update radio defines in examples (#901)

1cd2c6df0507cd7 by d00616 at 2017-07-31 16:37:01

MySensors splash screen (#889)

10ef62307b914c8 by Olivier at 2017-07-24 19:42:44

Prepend debug message only on serial gateway (#882)

90793e734cad280 by Marcelo Aquino at 2017-07-24 19:40:46

Keep Serial from being linked when disabled (#877)

Even with MY_DISABLED_SERIAL defined, the linker is still adding the
Serial object to the binary.

That's because a) the MySensors *.cpp files are actually included
into the sketch and compiled as part of it (and not compiled
separately and then linked) and b) due the the default(?) behavior of
the linker (
6f10745f0ac3d57 by Rainer Clasen at 2017-07-24 19:33:46

I2C EEPROM support for OTA using dual Optiboot #802 (#834)

  • Added support for I2C EEPROM OTA

  • EEPROM OTA now uses extEEPROM as driver

  • Compiler warning fix

  • Style check fixes

  • Fix doxygen warnings of I2CEeprom

  • Use bool instead of boolean in I2CEeprom shim

  • Fix re-merged style problem
    8f58b18e1a93069 by Krister W at 2017-07-24 19:32:47

Move pubsubclient files to PubSubClient (case sensitive)

b85c11c383f291f by Mikael Falkvidd at 2017-07-24 13:01:20

Fixed indentations using astyle (#890)

3e75b52c33b06c7 by Patrick Fallberg at 2017-07-07 12:36:14

Use bool instead of boolean in drivers (#888)

In the Arduino IDE, boolean is an alias for bool.
The Arduino IDE might deprecate boolean in the future. See
arduino/Arduino#4673 for details.

find drivers -type f | xargs sed -i 's/boolean/bool/g'
a941827157664ac by Mikael Falkvidd at 2017-07-05 14:23:27

Rewrite security personalization data validation (#885)

  • Data is not validated on Linux systems
  • If encryption is enabled, data is also validated even if signing
    is disabled.
    4ea0c88ac8e91aa by Patrick Fallberg at 2017-07-04 13:49:57

Add progmem support for String messages (#875)

added variant of MyMessage::set and sendSketchInfo that accept a
string that's stored in PROGMEM.

This avoids the need to (temporarily) store strings in memory to get
them into a message.
ff0953dd05b4f5e by Rainer Clasen at 2017-06-21 21:41:48

Fix keywords.txt (#883)

Replace spaces with tabs.
e5221689afbc917 by Marcelo Aquino at 2017-06-21 18:04:12

Fix UDP on Ethernet gateway (#858)

  • Fix UDP send
  • Add a default value for MY_IP_GATEWAY_ADDRESS and
    MY_IP_SUBNET_ADDRESS, making them optional when using MY_IP_ADDRESS
    95d7c003cbe8fe6 by Marcelo Aquino at 2017-06-13 20:59:01

NRF5: Enable critical section (#879)

4820475e5ccf245 by Olivier at 2017-06-13 16:49:14

Memory optimizations in signing (#874)

  • Sha256 driver cosmetics

cosmetic cleanups:

  • use actual define that was used to allocate the array
  • remove unused file globals
  • Save memory by eliminating sha256_hash array

eliminated sha256_hash array to save memory. Instead pass the
Sha256Class result pointer.

There seems to be no use for the extra sha256_hash array as it was
zeroed exactly at the same time, the Sha256Class result was invalidated
(by calling signerSha256Init)

If the result needs to stay around while another sha is calculated,
it's better to have the user taking care of this.

  • Moved hmac methods and buffers to separate class

This allows saving the buffer memory if no hmac is needed ... eg. with
the public Signing API.
59337b19fe2280e by Rainer Clasen at 2017-06-07 06:25:56

Let signing backend validate personalization (#873)

For soft signing, let backend handle checksum verification of
personalization data. This ensures that the backends sha256 library is
used and avoids an unnecessary instanitation of the public library.
For atsha204 signing, no checksum verification is made, just chip
locking flags.

Fixes #872
29fd6d6345497bd by Patrick Fallberg at 2017-06-06 07:51:37

Update more usage of hwGetentropy() (#869)

  • Update more usage of hwGetentropy()

  • Add hwGetentropy() to Teensy 3.5/3.6
    e6925f69e8a0d8c by d00616 at 2017-06-03 19:58:40

Signing improvements package (#871)

  • Signing support with MAX_PAYLOAD>32

Support in the signing backends to handle configurations
where MAX_PAYLOAD is more than 32 bytes.

Fixes #748

  • Support big message signatures

Support for signing messages larger than 32 bytes.
This is not fully testable with the current version of
the library but the change would add theoretical support
for signing any sized messages.

Fixes #749

  • Have gw properly indicate whitelisting preferences

If the gateway hold a signing whitelist, inform all
nodes of this requirement and not just nodes that hold
whitelists themselves.

Fixes #806

  • Harden security

has been removed. Gateway will now request signatures
from everyone by default.
In addition to this, no nodes in the network will allow
clearing of signing/whitelisting preferences by OTA
commands by default.
If the old behaviour is needed (suitable for gradual
signing roll out and development purposes) a new flag,

Fixes #807

  • Signing debug messages rewritten

All signing related debug has been rewritten to
better match other core debug printouts.
Also, backends are updated to have a smaller
implementation delta.

  • Simplified signing option implemented

Enable by MY_SIGNING_SIMPLE_PASSWD. Signing, and signing requirements
will be enabled, as will encryption. Whitelisting is optional.
The value provided to MY_SIGNING_SIMPLE_PASSWD is used as HMAC and AES
key. Whitelists use the first 8 bytes of the password and the ninth
byte from the node ID as serial.
Password is required to be at least 8 characters wide. It is zero
padded if it is not long enough to cover the AES (16 bytes) and HMAC
(32 bytes) keys. It is not recommended to have a password shorter than
32 bytes, and there is no need for a password longer than 32 bytes.

  • Add documentation section for signing debug

  • Add nRF5 encryption to simple signing option

  • Restructure MySigning documentation

  • Minor fixes for Linux
    28c4f3f19e7026f by Marcelo Aquino at 2017-05-31 15:13:29

Fix NRF5 radio encryption (#868)

4c0661e4108b906 by d00616 at 2017-05-29 20:25:43

Fix ext. EEPROM update() (#866)

60aab1b87bd6dc5 by Olivier at 2017-05-27 19:13:30

Linux: Fix hwRandomNumberInit() (#861)

Fix #860.
Makes hwRandomNumberInit() independent of hwInit().
53d485828ce4c00 by Marcelo Aquino at 2017-05-23 23:34:59

Fix rasperry pi hwGetentropy() (#856)

aeceb0b683aacdc by d00616 at 2017-05-23 19:41:46

Teensy3.5/3.6: Use TRNG for random seed (#859)

97ed21ef3b2b5e7 by Olivier at 2017-05-23 18:37:12

Teensy3: Define default radio pins (#857)

b5595e870d9b580 by Olivier at 2017-05-21 20:22:01

Fix RFM69 driver (#855)

b74805251e36779 by Olivier at 2017-05-21 19:39:44

Teensy: Update hwCPUVoltage() (#853)

00a4deddd69a32d by Olivier at 2017-05-21 14:12:36

Linux: Binds to MY_IP_ADDRESS in client mode (#849)

fb3d936d4c19cb2 by Marcelo Aquino at 2017-05-21 12:27:22

Minor updates STM32F1 support (#851)

abba1ec3771948a by Olivier at 2017-05-21 12:20:07

Enhance randomness (AVR, ESP8266, Linux, NRF5) (#845)

This commit changes the way random numbers are available
with MySensors.

The AVR platform uses a 32 Bit random seed build from a floating
analog pin. The way of the generation of this seed is FIPS 140-2

For support MCU with a fast way to generate random data, the
hwGetentropy() command is now available to allow rapid generation
of random data.

The ESP8266 platform uses the internal random source for randomness
for hwGetentropy() and Arduino's random() function.

The NRF5 platform initializes the pseudo random number generator
from internal hardware number generator. The internal AES-ECB unit
generates random data after filling with HWRNG data by AES-CBC.

On Linux getrandom() is implemented via syscall().

signerAtsha204SoftGetNonce speed:
AVR = ~14000us (sha204Soft)
NRF51 = ~152us (AES-CBC), 1739us (old sha204Soft)
NRF52 = ~31us (AES-CBC), 183us (old sha204Soft)
ESP8266 = ~20us (RANDOM_REG32), 380us (old sha204Soft)

All Nonce results tested for FIPS 140-2 compliance successfully.
6c12dddf5aa1759 by d00616 at 2017-05-21 12:12:09

Support for Teensy3 boards (#850)

b479a0cf3fa24f8 by Olivier at 2017-05-21 06:43:26

NRF5: Updates for Jenkins verifier (#852)

e041bf4d74035d0 by Olivier at 2017-05-21 06:41:11

Linux: Fix compilation error for rfm69 (#848)

6e648f58da0ee47 by Marcelo Aquino at 2017-05-16 06:00:47

Linux: Default SPI driver set to SPIDEV (#847)

14766382d35c387 by Marcelo Aquino at 2017-05-16 06:00:24

Linux: Fix compilation error for rfm95 (#846)

Fix #843
34444a48b3430ed by Marcelo Aquino at 2017-05-16 05:59:49

Fix cppcheck includes.cfg (#842)

582c653a19c1107 by Marcelo Aquino at 2017-05-15 05:30:15

Linux: Add inclusion mode to gateway example (#841)

Fix #770
2a7145cc153dedb by Marcelo Aquino at 2017-05-15 05:29:28

Linux: Give an error if UDP is selected (#840)

UDP isn't implemented in Linux.
4c52c566050a39c by Marcelo Aquino at 2017-05-15 05:28:49

Add nrf5 platform (#830)

  • Add NVRAM support

This is an EEPROM replacement based on MCU's internal Flash memory.
The NVRAM class is designed to be stateless. Each operation is
written to flash immediately.

The last 16k(nRF51)/32k(nRF52) of Flash memory are managed by the
VirtualPage class. This class allows writing a single emulated 4k
page up 40,000 times.

The NVRAM class is a log based byte-wise storage allowing up to
40,000,000 writes depending on the number of used addresses. Each
four allocated addresses from the beginning of the NVRAM reduce the
write log by one.

When first 256 bytes of the emulated storage are used, there is an
average writing capacity of 145,000 cycles per byte.

When the write log is full, the NVRAM is compressed into a new flash
page. After a new page is ready, the old page is released. This
process can take up to 4500 ms and cannot be interrupted.

The NVRAM functionality can easily be ported to ESP8266 or SAMD by
providing a Flash interface.

  • Add NRF5 platform support

This is the support of the Nordic Semiconductor NRF51 (nrf51822,
nrf51422) and NRF52 (nrf52832) platform. Based on arduino-nRF5

The included radio driver is compatible with the NRF24 devices.
Using a SoftDevice (BLE)is not supported and must be removed before
flashing MySensors with a "mass_erase" operation.
726a20dad9696ed by d00616 at 2017-05-14 09:53:01

Linux: Fix Ethernet client and server (#836)

  • Fix documentation.
  • Add function close() to client class.
  • Function connected() now return true if the connection is in
    stablished state or there is still unread data.
  • Update hasClient() to check if any client has disconnected.
  • Fix _accept() to better handle the case of maximum clients reached.
  • Fix peek() to return the next byte of the read queue.
  • Simplifies write() of the server class.
  • Implements flush().
  • Updates read() to non-blocking type, the same way as in Arduino.
    a4c7b249c1aba81 by Marcelo Aquino at 2017-05-13 07:49:16

Linux: Fix interrupt handler (#835)

Minor fix to configure.
95f719b604a8d0d by Marcelo Aquino at 2017-05-11 13:20:57

Linux: Fix rfm69 power level build error (#829)

fa673bdb3e50590 by Marcelo Aquino at 2017-04-28 17:11:41

Linux: Add support for RFM69 (#823)

66ff5b2880ee72c by Marcelo Aquino at 2017-04-19 20:40:21

Restructure RPi files (#827)

  • Restructure SPi files for linux and RPi
  • Update RPi revision detection (#826)
    4c31e22d6ff45c3 by Marcelo Aquino at 2017-04-19 20:03:10

Restructure HAL files (arch) (#820)

26c237adadda9f7 by Olivier at 2017-04-17 18:33:08

Corrections for stm32f1 serial communication (#821)

  • use MY_SERIALDEVICE in hwInit
  • disable use of MY_SERIALDEVICE.flush() since the current STM32duino
    implementation performs a reset instead of an actual flush.
    b4b5eb52e8ffc25 by freynder at 2017-04-10 21:11:21

Fix clear pending ints for AVR (#816)

Support full AVR range
bffc87fe93739f2 by Embedded Innovation at 2017-04-03 19:08:10

Clear interrupt flag based on the interrupt used (#815)

The previous code would clear the proper interrupt flag assuming
interrupt1 was INT0 and interrupt2 was INT1. If interrupt1 was INT1 or
interrupt2 was INT0, the sleep bug would be triggered.
aac4562ab0a0094 by Dustin at 2017-04-03 06:53:05

Polishing code (#803)

818f887926e419a by Olivier at 2017-04-02 18:03:59

Fix watchdog sleep calculation (#814)

Round requested sleep time up to next multiple of 16ms, to sleep at
least requested time.
Sleep time of 0 will return immediately.
Fixed watchdog sleep time calculation. AVR libc watchdog time
implementation is inconsistent, and requires larger flash/ram usage.
f84960dc284b1ab by Embedded Innovation at 2017-04-02 17:49:57

Security personalizer rewritten (#794)

  • Removed ability to lock data section
  • Introduced "guided mode" to simplify process
  • Refactored the sketch to be less monolithic
  • Print details and instructions in tables
  • Use device unique ID as serial when
  • Calculate and store personalization checksum
  • Print serial in a copy+paste friendly manner (fixes #804)
  • Clarify meaning of UART confirmation (fixes #805)
    7e6db413c7a9efe by Patrick Fallberg at 2017-04-02 13:37:21

AVR sleep with external interrupts fixes (#813)

Fixing #812, #811, #809
3350d79fe6b879a by Embedded Innovation at 2017-04-01 13:05:57

Transport update (#722)

  • Major transport rework

  • Adjust signal report calculations

  • Minor driver optimizations

  • Implement sanity check in legacy RFM69 driver

  • Additional RFM69 rework

  • RFM95 encryption

  • Polishing
    b132a8a81e2ba6c by Olivier at 2017-03-28 18:31:08

Fix RFM95 driver (RPi) (#800)

63b8d935c8d3156 by Olivier at 2017-03-26 09:30:54

Add STM32F1 HW support (#795)

cde5d8f7c3e56e5 by Olivier at 2017-03-25 19:01:31

Linux: Configure script update (#797)

Incorporates #756

  • Documentation improvements.
  • Fix bash warning.
    72926527be81a3b by Marcelo Aquino at 2017-03-21 18:42:58

MQTT Client Retain Feature (#793)

Optionally allow MQTT client to publish specific messages with
the retain flag set.

default/current behavior should not be impacted.
ef42b3b53483630 by Dustin at 2017-03-21 13:47:07

Code cleanup (#787)

  • Cleanup Core

  • SAMD adjustments
    61a415c42281090 by Olivier at 2017-03-15 18:05:17

Add function to retrieve unique ID (if present) (#780)

481bd367f3dcb5a by Olivier at 2017-03-14 17:54:32

UDP/TCP client mode repaired (#766)

e7ae5d144e9a335 by Soef at 2017-03-07 17:55:40

I2C eeprom write fix for SAMD (#786)

  • I2C eeprom write fix for samd

  • Implement extEEPROM library for SAMD
    7824e12823e25e0 by Olivier at 2017-03-06 15:45:58

Fix typo in README (#778)

735852156652bd6 by Frédéric FRANCE at 2017-03-01 19:04:17

Calling WiFi.config() before WiFi.begin() (#772)

9ecb78598b491af by Olivier at 2017-02-13 06:17:43

Added pin setup for RFM69 reset / dio5 (#768)

a34f2e518eae0dd by Thomas Mørch at 2017-02-07 14:59:55

Update doxygen (#767)

fd417b66b25d66f by Olivier at 2017-02-03 20:32:53

Fix doxygen problem in SPI.h

91cb61b19ebe0b0 by Patrick Fallberg at 2017-02-02 09:00:29

Workaround for AVR-specific compiler issue (#759)

4380d6618fe818a by Olivier at 2017-02-01 19:45:42

Revert "Reduce memory footprint" (#763)

b69bba485fd093f by Olivier at 2017-01-31 21:31:00

Reduce memory footprint (#762)

Allows to run this sketch on an AVR 328 with
all sensors enabled.


  • use F() macro
  • use msg_generic instead of individual variables
    09de6d8075ed42e by FotoFieber at 2017-01-30 15:48:47

Bump version to 2.2.0-beta (#754)

eeb880957cb8b6d by Olivier at 2017-01-19 18:13:09

MySensors 2.1.1 release (#746)

c90ff65b53b105a by Olivier at 2017-01-17 22:58:02

Revert "Bump version to 2.2.0-beta" (#744)

c2dfedc1a9527df by Olivier at 2017-01-17 21:44:11

Consolidate open PRs for bugfix release (#741)

6bad2c721b94391 by Olivier at 2017-01-16 19:36:15

Fix signing presentation bug (#740)

e66989138b94a10 by Olivier at 2017-01-16 18:49:12

AVR: Restrict fast pin function use (#739)

815084b4faba3fc by Olivier at 2017-01-15 19:10:15

Rename MyHwATmega328 to MyHwAVR (#738)

952edf7ed761517 by Olivier at 2017-01-15 17:10:15

Fix getControllerConfig() (#737)

9041c8ba3d89648 by Olivier at 2017-01-15 15:27:49

Linux: Add support for SPIDEV (#734)

RPi and Linux refactor.

Add GPIO Sysfs for GPIO operations.

Update configure script.

Fix some cppcheck warnings.

Add serial emulation that prints to stdout.

Fix some file headers.
2e0f6b62295dbe8 by Marcelo Aquino at 2017-01-14 22:50:21

OTA: Add incoming FW block check (#718)

aa5cecfca1767d9 by Olivier at 2017-01-03 19:19:00

Bump version to 2.2.0-beta (#713)

570b6079b65e0aa by Olivier at 2016-12-31 09:48:38

Assets 2

@tekka007 tekka007 released this Jan 18, 2017

Bugfix release


  • OTA: Add incoming FW block check
  • Add support for SPIDEV
  • Fix getControllerConfig()
  • Rename MyHwATmega328 to MyHwAVR
  • AVR: Restrict fast pin function use
  • Fix signing presentation bug
Assets 2

@tekka007 tekka007 released this Dec 30, 2016

Major changes:

  • Bug fixes and lots of improvements under the hood
  • Added support for Raspberry Pi
  • New transport layer: RFM95 (LoRa mode)
  • Improved debug messages, see here.
  • RAM-based routing tables (for supported HWs)
  • Improved message handling, additional checks for incoming messages
Assets 2

@fallberg fallberg released this Jul 9, 2016

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
  • 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).
Assets 2

@fallberg fallberg released this Feb 7, 2016

Maintenance release to resolve issue with "getters"

  • Received payloads will have a NULL char appended
    if the message targets "this" node so that the
    "getters" work as expected.
Assets 2

@fallberg fallberg released this Jan 20, 2016

Maintenance release to fix signing compilation

  • _doSign variable renamed to doSign
Assets 2

@fallberg fallberg released this Jan 19, 2016

Security maintenance release

  • Backport of bugfix (#259) in repeaters when forwarding signed messages
  • Prevent SecureActuator from accepting ACKs as commands
  • Make sure nodes not supporting signing informs gateway
  • Fixes addressing bug in _doSign bitfield
  • Stabilizes Jenkins
Assets 2