💡 ESP8266 framework for Homie, a lightweight MQTT convention for the IoT
MIT License
Bot releases are hidden (Show)
Published by euphi almost 4 years ago
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.
Published by stritti almost 5 years ago
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.
To support new features and changes in the Homie convention 3.x some signatures have changed.
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)
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.
HomieNode
can set a flag, to run its own loop()
also, if not connected to MQTT.setRunLoopDisconnected(bool)
to set it. (defaults to false
)Published by euphi over 5 years ago
Fix #545
Published by timpur over 6 years ago
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.
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.
led
ranging from 1
to 10
, for example.Homie.prepareToSleep()
function allows to cleanly disconnect from the broker in order to deep sleep safely.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/.
Dont forget Homie ESP8266 v2.1.0 is also on its way
Published by marvinroger almost 7 years ago
@timpur
This beta fixes a compilation issue from the previous beta.
Some refactoring has been done on the codebase, see https://github.com/marvinroger/homie-esp8266/pull/432
Published by marvinroger almost 7 years ago
@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.
Published by marvinroger over 7 years ago
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.
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.
led
ranging from 1
to 10
, for example.Homie.prepareToSleep()
function allows to cleanly disconnect from the broker in order to deep sleep safely.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/.
This new release brings a lot of new stuff, so there's probably something broken somewhere. Let's work on making this v2 stable!
Published by marvinroger over 8 years ago
Thanks to everyone involved.
UNKNOWN
, this is fixedThe v1.x.x Web setup is not hosted anymore. You can download it as homie-esp8266-v1-setup.zip
below.
Published by marvinroger over 8 years ago
Published by marvinroger over 8 years ago
Thanks to everyone involved.
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)Constants.hpp
file (#56)std::function
- thanks to @rschaten (#59)Published by marvinroger over 8 years ago
This is kind of a big one. Thanks to everyone involved.
devices/
base topic (#44)device-id=firmware-name=current-device-version=version-advertised-by-$ota
(eg. da828fe0=sub2-relay=1.0.0=1.1.0
). This makes it easier to parse server-side (#50)Note: This required a lot of changes in the code, the most notable being most of the dynamic allocations were removed. In other words, there are now hard limits for things like the firmware name (see Limits.hpp and customize it if you need to).
Note: The way the verification is done is not very secure due to some limitations of PubSubClient. Consider it as more secure than no fingerprint at all, but not bulletproof.
Published by marvinroger over 8 years ago
Published by marvinroger over 8 years ago
Homie
text in the AP name, hostname and MQTT client ID to what you want. Thanks to @vixnsPublished by marvinroger over 8 years ago
The framework has been tested on real hardware for weeks, and everything is stable.