Skip to content

Releases: gmag11/EnigmaIOT

Home Assistant autodiscovery

05 Aug 12:42
Compare
Choose a tag to compare
  • Nodes may register themselves on Home Assistant. Notice that EnigmaIoT gateway must be updated to this version to support this feature
  • Added queue for ESP-NOW receiving messages
  • Implement new features into "controller" examples
  • Fix ESP32 wifi configuration to keep compatibility with esp8266 nodes. Force using 20MHz wifi channel.
  • Added RSSI information for ESP-NOW packets
  • Support for newer esp32 and esp8266 Arduino core

Fixed memory leak

04 Feb 22:48
Compare
Choose a tag to compare
  • Bugfix: There was an important heap memory leak when more than two nodes were connected. All message queues use static memory now.
  • Improvement: Clock time is now managed by internal SDK time subsystem
  • New Feature: Change default filesystem to LittleFS on ESP8266 platform. Notice that in case of a filesystem change device will lose its configuration. You can reconfigure normally using its web UI by connecting to its AP
  • New feature: Add method to reboot gateway from REST API
  • Bugfix: There was a bug in case a node is programmed to sleep forever
  • Bugfix: JSON strings use double quotes now
  • Compilation improvements for Platformio
  • Some bugfixes and code clean up

Add Gateway REST API

13 Dec 11:03
Compare
Choose a tag to compare
  • REST API may be activated to have more control on Gateway internals
  • Refresh examples code to latest version
  • Add FailSafeMode library to controller examples to avoid device brick in nodes where OTA is the only way of flashing or physical flashing is difficult
  • Added GitHub action to check that code has no compilation errors
  • Some bugfixes

Broadcast messages implemented

30 Oct 13:11
Compare
Choose a tag to compare

This release adds a couple useful new features.

  • Big new feature: First implementation of broadcast messages. Now any message can be sent to all nodes that are listening (those that do not sleep). Any control or data message may be sent. Using MQTT Gateway you can send, for instance, a message to ask all nodes their version: <network_name>/broadcast/get/version. All MQTT messages which node name is broadcast are send to broadcast address.
    Broadcast messages are sent encrypted transparently.
  • New feature: On sleepy nodes, context can be forced to be stored on flash instead of RTC memory. So, context data survives a hard reboot so a node may send data without a new registration intermediately. This may be useful to maximise battery duration. But, if message rate is high, this may damage flash memory in the medium term. Check #13
  • New feature: Key validity and node persistence may be configured as infinite so that a node never expires. Useful for nodes that send messages every long time. Check #13
  • New feature: A new control command is included to restart any node. If using MQTT gateway it may be triggered with <network_name>/<node_came or address>/set/restart
  • Enhancement: Sleep time in node is node is calculated so processing time is taken into account. Now if you configure 10 seconds, messages are sent every 10 seconds.
  • Enhancement: MQTT Gateway sends its status every 5 minutes for better gateway redundancy management.
  • Bugfix: If your WiFi router was restarted MQTT Gateway kept disconnected until restarted. Fixed now.
  • Bugfix: There was a bug while processing configuration portal data in ESP8266 platform that made it crash after setting data.
  • Some additional bugfixes here and there :)

Fix security issue

06 Aug 17:45
Compare
Choose a tag to compare
  • Older versions were vulnerable to reply attacks on some message types (download and control messages). Thank you G4lile0 for advising.
    Now this is fixed. This change makes this version incompatible with older ones. Update all your nodes before updating gateway.
  • Add new examples using EnigmaIOT JSON Controller Template. I've added some short description on each example directory.
  • Added parameter to EnigmaIOTNode.setSleepTime () to allow infinite sleep duration, until device is reset. This may be useful to develop devices like door sensor or DashButton like things.

Bugfix

15 Jul 21:16
Compare
Choose a tag to compare

Regex is not completely implemented on ESP8266 framework. It produces crashes, probably due to lack of memory.

So I've disabled regex for 8266 code. I've added a kind of basic input check. This should work now.

Node implemented on ESP32 too

15 Jul 10:47
Compare
Choose a tag to compare
  • Node may be loaded in any ESP32 board. Useful if you need to build advanced nodes that connect to EnigmaIOT network.
  • Needed configuration data is reduced by reusing WiFi gateway AP as EnigmaIOT network name and key.
  • Configuration reset pin is disabled by default. You will need to change it according your setup.
  • Configuration data is checked using regular expressions during input to avoid wrong or malicious format.
  • DS18B20 temperature sensor can be installed on Gateway to check its own temperature. Disabled by default.
  • Disable brownout detector on ESP32. Many cheap boards include bulky regulators that cannot cope with current requirements. Having brownout detector disabled the number of sporadic reboots is highly reduced if it is your case.
  • Improve debug output on ESP8266 to show filename.
  • Several minor bugfixes.

Friendly Node Names

01 Jul 09:28
Compare
Choose a tag to compare

This version includes two big usability new features:

  • A DNS like human friendly name may be assigned to each node to get messages with readable data instead of HEX address. This may be assigned during initial setup or from gateway. This is stored in configuration file in flash memory
  • Non sleepy nodes get real world time and date when their clocks get synchronised if Gateway has NTP time in sync. Use of this feature is up to Node designers.
  • Custom WiFiManager parameters may be triggered from Node user code
  • JSONController Node interface is added to help to design custom nodes fast and easily. Check examples and EnigmaIOT-Blind-Controller repository.
  • Improve OTA in Gateway and nodes
  • Bugfixes and code cleanup

Arduino OTA enabled on MQTT Gateway

30 May 23:00
Compare
Choose a tag to compare

MQTT gateway example implements OTA update using Arduino mechanism. Now a gateway that uses that firmware (both ESP8266 and ESP32) is shown in Arduino IDE as a OTA enabled sink. Notice that network password will be used for OTA too.

Bugfix: Control commands code mismatch fixed
Bugfix: Control commands were treated as CayenneLPP by mistake
Bugfix: Fixed Arduino.h case for Linux machines
New feature: Nodes resend last data message after an invalidate message if reason is not key expired
New feature: Arduino OTA implemented on MQTT gateway example

Downlink data (big) improvement

20 May 16:27
Compare
Choose a tag to compare

In this version I've added MessagePack encoding support for both uplink and downlink data. Encoding format is indicated on messages so this version breaks compatibility with older ones. So please, UPDATE ALL YOUR NETWORK NODES TO THIS VERSION or you may suffer inconsistencies.

This is a big improvement as it makes gateway transparent not only for uplink but for downlink too.

All messages addressed to nodes that use JSON formatting are now automatically converted to MessagePack.

Nodes do the opposite conversion so they get the complete JSON object. Try to make JSON objects as small as possible to keep messages short.

These are the release notes:

  • BugFix: Downlink was broken on 0.8.3. This is fixed now.
  • Add payload encoding field to data messages
  • Add support to MessagePack