Skip to content

Releases: homieiot/homie-esp8266

Fix compilation with platformio

29 Oct 20:13
d08ba72
Compare
Choose a tag to compare

There was an incompatible change in the ArduinoJson library, so Homie-ESP8266 fails to build.

This releases fixes this by setting the dependency to ArduinoJson-library to minor version 6.11.x.

Please note that this may result in a downgrade of the used ArduinoJson library - and you may perform this downgrade manually in your platformio directory.

Support of Homie convention v3.0.1

03 Jan 11:46
Compare
Choose a tag to compare

Banner

Long time awaited Version 3.0 which supports Homie convention v.3.0.1.

Many thanks to all contributors and people who reported issues and asked for features.

Upgrade Guide

To support new features and changes in the Homie convention 3.x some signatures have changed.

HomieNode

Constructor:

HomieNode(const char* id, const char* name, const char* type, bool range = false, uint16_t lower = 0, uint16_t upper = 0, const HomieInternals::NodeInputHandler& nodeInputHandler = [](const HomieRange& range, const String& property, const String& value) { return false; });

instead of

HomieNode(const char* id, const char* type, const HomieInternals::NodeInputHandler& nodeInputHandler = [](const String& property, const HomieRange& range, const String& value) { return false; });

So, you need to insert a new parameter on second place that gives a descriptive name of your node.

Also, ranges are now on Node level in the v3.x convention. So if you use ranges, then you need to enable them and give lower and upper range limit in the HomieNode constructor.

handleInput()

virtual bool handleInput(const HomieRange& range, const String& property, const String& value);

instead of

virtual bool handleInput(const String& property, const HomieRange& range, const String& value);

So, the HomieRange& is now on first place. This changes was done intentionally to reflect the change how ranges are handled in convention 3.x . However, in many case you can just change the signature of your own handleInput() method and you are fine.

PropertyInterface

The PropertyInterface now offers methods to advertise more details about the property as specified in the convention 3.x:

  PropertyInterface& setName(const char* name);
  PropertyInterface& setUnit(const char* unit);
  PropertyInterface& setDatatype(const char* datatype);
  PropertyInterface& setFormat(const char* format);
  PropertyInterface& setRetained(const bool retained = true);

homie-esp8266 does not enforce the correct usage of these methods. So it is your own responsibility to comply with the convention, especially the rules defined in https://homieiot.github.io/specification/spec-core-v3_0_1/#payload . (Note that the v4.x convention is compatible regarding these rules and gives some more recommendations in https://homieiot.github.io/specification/spec-core-v4_0_0/#property-attributes)

New features

Since the v2.0.1 release some new features have been added.

Note: Most of them were also available in the v2-development branch, but not released yet.

  • Disable Config mode or MDNS support
  • Run loop also if disconnected:
    • Any HomieNode can set a flag, to run its own loop() also, if not connected to MQTT.
    • This can be useful if the node performs some tasks that is not only visible on MQTT. For example controlling effects on an LED strip.
    • Use setRunLoopDisconnected(bool) to set it. (defaults to false)
  • [...some more...]

Move to homieiot, convention 2.0.1 and Bugfix

28 Jan 22:45
Compare
Choose a tag to compare

v2.0.0: The final big, big release

26 Mar 21:07
bfba03d
Compare
Choose a tag to compare

Banner

After more than 6 months of development + 6 months of testing and perfecting, the long awaited v2.0.0 Homie for ESP82666 is finally ready for a beta release! There are a lot of new features that should take your IoT ESP8266 devices to a whole new level. Before going into the details, I would like to thanks all the awesome contributors who made this release possible. In particular:

The v2 is obviously a breaking release. Sketches are indeed not backward compatible with the v1. The v2 also conforms to the new Homie convention v2.0.1.

📝 Documentation

The documentation was moved to https://github.com/homieiot/homie-esp8266/. I recommend you read it all, even if you come from Homie for ESP8266 v1, because a lot of things changed.

The new documentation script will allow you to access the documentation of every release released from now on, including the old v1.5.0 version, with the very same link.

✨ Features

  • Static IP, custom BSSID and channel support
  • MQTT is now provided by the AsyncMqttClient library, which is asynchronous, and this is actually the biggest change in the v2. Change that you won't notice... What this means is that the network code is not blocking anymore, everything is handled in another "thread", so your code cannot be blocked (in v1, if the MQTT server was unavailable, your code blocked for ~7 seconds) and can handle way more messages without crashing. In other words: the v2 is more bulletproof.
  • Custom settings! 🎉 In configuration mode, you're now able to provide custom settings, booleans, numbers, strings... That you can also change in normal mode through a special MQTT topic.
  • OTA is now done over MQTT. No need for an HTTP server serving the firmwares anymore, the only requirements for Homie for ESP8266 are a Wi-Fi connection, and an MQTT broker.
  • Standalone mode. It was a requested feature (#125) to allow the device to operate without being configured first. It was already possible with the v1, but the device would still boot into configuration mode and spawn an AP, which was insecure.
  • Broadcast channel allows you to receive broadcasts, so that a controller can trigger anything on every Homie devices.
  • Range properties allows you to define a property with multiple endpoints. Useful for a LED strip for example, where you would have a range property led ranging from 1 to 10, for example.
  • Optimized for battery-powered sensors. The Wi-Fi and MQTT connection are way faster than on the v1, and a new Homie.prepareToSleep() function allows to cleanly disconnect from the broker in order to deep sleep safely.
  • And a lot more...

🌐 Setup UI

The setup UI sources are now available on its own repo, marvinroger/homie-esp8266-setup. It makes use of Vue.js instead of, previously, React. The new online address is http://setup.homie-esp8266.marvinroger.fr/.

🔧 Homie v2.1.0

Dont forget Homie ESP8266 v2.1.0 is also on its way

v2.0.0-beta.3: fix compilation issue

05 Dec 08:32
Compare
Choose a tag to compare
Pre-release

@timpur

This beta fixes a compilation issue from the previous beta.

Some refactoring has been done on the codebase, see #432

v2.0.0-beta.2: latest working version

28 Nov 16:08
Compare
Choose a tag to compare
Pre-release

@euphi:

Due to recent progress with the webserver, but also with arduiono platform etc. projects need to be changed to compile

This is the latest version that compiles, until further stabilization.

v2.0.0-beta.1: A big, big release

30 May 18:13
Compare
Choose a tag to compare
Pre-release

Warning
Be aware that this is a beta release!

Banner

After more than 6 months of development, the long awaited v2.0.0 Homie for ESP82666 is finally ready for a beta release! There are a lot of new features that should take your IoT ESP8266 devices to a whole new level. Before going into the details, I would like to thanks all the awesome contributors who made this release possible. In particular:

The v2 is obviously a breaking release. Sketches are indeed not backward compatible with the v1. The v2 also conforms to the new Homie convention v2.

📝 Documentation

The documentation was moved to http://marvinroger.github.io/homie-esp8266/. I recommend you read it all, even if you come from Homie for ESP8266 v1, because a lot of things changed.

The new documentation script will allow you to access the documentation of every release released from now on, including the old v1.5.0 version, with the very same link.

✨ Features

  • Static IP, custom BSSID and channel support
  • MQTT is now provided by the AsyncMqttClient library, which is asynchronous, and this is actually the biggest change in the v2. Change that you won't notice... What this means is that the network code is not blocking anymore, everything is handled in another "thread", so your code cannot be blocked (in v1, if the MQTT server was unavailable, your code blocked for ~7 seconds) and can handle way more messages without crashing. In other words: the v2 is more bulletproof.
  • Custom settings! 🎉 In configuration mode, you're now able to provide custom settings, booleans, numbers, strings... That you can also change in normal mode through a special MQTT topic.
  • OTA is now done over MQTT. No need for an HTTP server serving the firmwares anymore, the only requirements for Homie for ESP8266 are a Wi-Fi connection, and an MQTT broker.
  • Standalone mode. It was a requested feature (#125) to allow the device to operate without being configured first. It was already possible with the v1, but the device would still boot into configuration mode and spawn an AP, which was insecure.
  • Broadcast channel allows you to receive broadcasts, so that a controller can trigger anything on every Homie devices.
  • Range properties allows you to define a property with multiple endpoints. Useful for a LED strip for example, where you would have a range property led ranging from 1 to 10, for example.
  • Optimized for battery-powered sensors. The Wi-Fi and MQTT connection are way faster than on the v1, and a new Homie.prepareToSleep() function allows to cleanly disconnect from the broker in order to deep sleep safely.
  • And a lot more...

🌐 Setup UI

The setup UI sources are now available on its own repo, marvinroger/homie-esp8266-setup. It makes use of Vue.js instead of, previously, React. The new online address is http://setup.homie-esp8266.marvinroger.fr/.

🐛 Report bugs!

This new release brings a lot of new stuff, so there's probably something broken somewhere. Let's work on making this v2 stable!

v1.5.0: mDNS querying

23 Apr 20:08
Compare
Choose a tag to compare

Thanks to everyone involved.

New features

  • BREAKING - require Arduino for ESP8266 >= 2.2.0: mDNS querying available instead of having to explicitely specify MQTT / OTA servers host / port (#28)
  • Add error reason to the JSON configuration API response

Fixes

  • The MQTT connection fail reason was always UNKNOWN, this is fixed
  • Fix an issue with the configuration API, happening most often in the new 2.2.0 release of Arduino for ESP8266 (#69)

Web UI

The v1.x.x Web setup is not hosted anymore. You can download it as homie-esp8266-v1-setup.zip below.

v1.4.1: hotfix for configuration mode JSON API

17 Apr 10:55
Compare
Choose a tag to compare

Fixes

  • Fix an issue where the configuration API would never accept a request

v1.4.0: $uptime device property and ability to subscribe to all properties of a node

17 Apr 09:09
Compare
Choose a tag to compare

Thanks to everyone involved.

New features

  • Implement the $uptime device property, refreshed by default every two minutes (#52)
  • The ability to subscribe a node to every properties. This is useful for a led strip for example: you will not want to do node.subscribe("1"); node.subscribe("2"); ... if you have a thousand LED. So now, with a fourth parameter to the HomieNode constructor, you can subscribe to everything. See the LedStrip example for a concrete use case (#62)

Fixes

  • Fix an issue where reconnecting to the MQTT with SSL enabled would crash (#54)

Web UI

  • The default hardware device ID was not used if the device ID was not set in the Web UI. This is fixed (#63)

Misc

  • The AP IP is now configurable from the Constants.hpp file (#56)
  • Callbacks are now std::function - thanks to @rschaten (#59)
  • More dynamic allocations avoided when logging