diff --git a/CHANGELOG.md b/CHANGELOG.md index b22dc11..6cd6c39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,12 @@ All notable changes to this library are written down here. The format is that of [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), the version numbers follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [2.0.0] - unreleased +## [2.0.0] - 2026-09-28 The library talks MQTT only, describes 28 interfaces and takes 22 KB less static RAM. The sketches of 1.x compile as they are; the readme says what changes for them (Migrating from 1.x). -While it was written this version was numbered 1.2.0, which was never released. `library.json`, -`library.properties` and `ALEX2ESP_VERSION` say 1.2.0 until the release. +While it was written this version was numbered 1.2.0, which was never released. ### Added diff --git a/examples/README.md b/examples/README.md index a644eec..cb659ad 100644 --- a/examples/README.md +++ b/examples/README.md @@ -98,10 +98,10 @@ Arduino IDE and have not run on a board yet. What each announces in discovery is checked by the host tests in `test/test_examples`. With this library on a Wemos D1 mini, a real Alexa account and other sketches (2026-09-28), Alexa discovered and -drove PowerController, BrightnessController, ColorTemperatureController and one instance each of ToggleController, -RangeController and ModeController. Not tried with Alexa from this library: ColorController, ThermostatController, -LockController and the deferred answer, SceneController, the ChangeReports and DoorbellPress. Voice commands have -not been tried. +drove PowerController, BrightnessController, ColorTemperatureController, one instance each of ToggleController, +RangeController and ModeController, a lock with its deferred answer and a scene, and took a ChangeReport, an +ErrorResponse and the press of a doorbell. Not tried with Alexa from this library: ColorController, +ThermostatController and the sensors. Voice commands have not been tried. ## Limits diff --git a/library.json b/library.json index 68451a2..106f1db 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "Alex2ESP", - "version": "1.2.0", + "version": "2.0.0", "description": "Companion library for the Alex2MQTT Alexa skill: exposes ESP8266 devices to Alexa through alex2mqtt.stormysdream.club over MQTT (discovery, directives, state reports).", "keywords": [ "alexa", diff --git a/library.properties b/library.properties index 3fafd52..6957f8b 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Alex2ESP -version=1.2.0 +version=2.0.0 author=David maintainer=David sentence=A companion library for the Alex2MQTT Alexa Skill (ESP8266). diff --git a/readme.md b/readme.md index f6462e6..3888346 100644 --- a/readme.md +++ b/readme.md @@ -411,7 +411,7 @@ The last column says whether Alexa discovered and drove the interface **from thi | `ThermostatController` | 3.2 | targetSetpoint, lowerSetpoint, upperSetpoint, thermostatMode | `addThermostatSetpointProp`, `addThermostatLowerSetpointProp`, `addThermostatUpperSetpointProp` (both: `addThermostatDualSetpointProp(lower, upper)`), `addThermostatModeProp` | Thermostat | no | | `TemperatureSensor` | 3 | temperature | `addTemperatureSensorProp(value, scale)` | TemperatureSensor | no | | `HumiditySensor` | 3 | relativeHumidity | `addHumiditySensorProp` | | no | -| `LockController` | 3 | lockState | `addLockControllerProp` | Lock | no | +| `LockController` | 3 | lockState | `addLockControllerProp` | Lock | yes | | `ContactSensor` | 3 | detectionState | `addContactSensorProp` | ContactSensor | no | | `MotionSensor` | 3 | detectionState | `addMotionSensorProp` | | no | | `TimeHoldController` | 3 | holdStartTime, holdEndTime | `addProperty` | | no | @@ -422,12 +422,12 @@ The last column says whether Alexa discovered and drove the interface **from thi | `InventoryLevelSensor` | 3 | level | `addProperty` | | no | | `PlaybackController` | 3 | `"properties": {}` | | | no | | `WakeOnLANController` | 3 | `"properties": {}` | | | no | -| `SceneController` | 3 | no `properties` object | | Scene | no | -| `DoorbellEventSource` | 3 | no `properties` object | | Doorbell | no | +| `SceneController` | 3 | no `properties` object | | Scene | yes | +| `DoorbellEventSource` | 3 | no `properties` object | | Doorbell | yes | | `StepSpeaker` | 3 | no `properties` object | | | no | | `SimpleEventSource` | 1.0 | no `properties` object | | | no | -The six interfaces with "yes" were driven with another sketch than the examples, which have not run on a board yet. The directives were answered within 0.2 to 0.4 s, and a directive that was delivered twice was answered once. Voice commands have not been tried. +The interfaces with "yes" were driven on a Wemos D1 mini with other sketches than the examples, which have not run on a board yet. The directives were answered within 0.2 to 0.4 s, and a directive that was delivered twice was answered once. The lock answered after a DeferredResponse, nine seconds after the directive; the scene was started and stopped; the press of the doorbell was accepted by Alexa. A ChangeReport of a lamp and an ErrorResponse reached Alexa as well. Voice commands have not been tried. The Alex2MQTT service itself has carried more than that. With its Node.js client, alex2node 1.5.2, on the same day: Power, Brightness, Color, ColorTemperature, Percentage, PowerLevel, Thermostat, Range, Mode, Toggle, Lock and Scene, deferred responses, ErrorResponse, ReportState, and ChangeReports for contact, motion, lock, temperature and power. So the way from the broker to Alexa is tried for these; what this library sends for them is checked by the host tests only. @@ -683,7 +683,7 @@ What changes for a 1.x sketch that is compiled against 2.0: - ESP8266 only. The library has never been compiled for an ESP32. - The session is MQTT over TCP on port 1883, without TLS. - Reports are published with QoS 0 and sent once. An event or a change while there is no session with the broker is not sent later; `send()` returns `false` and the sketch decides. -- Tried with Alexa from this library: the six interfaces marked in [Interface Types](#interface-types). Not tried from this library: `ColorController`, `ThermostatController`, `LockController` and the deferred answer, `SceneController`, the ErrorResponse, the ChangeReports, `DoorbellPress` and every interface without an example. Voice commands have not been tried. +- Tried with Alexa from this library: the nine interfaces marked in [Interface Types](#interface-types), the deferred answer, the ErrorResponse, a ChangeReport and `DoorbellPress`. Not tried from this library: `ColorController`, `ThermostatController`, the sensors and every interface without an example. Voice commands have not been tried. - The examples are compiled, with 0 warnings, and what each announces in discovery is checked by the host tests. They have not run on a board and have not been built with the Arduino IDE. - The library keeps no state of the devices. What a device is set to is a variable of the sketch and starts from its initial value after a reset. - 28 of the interfaces of Alexa have a row. The others cannot be announced. diff --git a/src/AlexaUtils.h b/src/AlexaUtils.h index 60bcbbc..08522b5 100644 --- a/src/AlexaUtils.h +++ b/src/AlexaUtils.h @@ -4,7 +4,7 @@ #include // A 1.x name, kept for sketches that print the memory figures. The send and receive queues that lived here -// belonged to the HTTP fallback and went with it in 1.2.0; the library's own diagnostics are in AlexaLog.h. +// belonged to the HTTP fallback and went with it in 2.0.0; the library's own diagnostics are in AlexaLog.h. // printMemoryInfo() is a utility of the sketch and not a line of the log: the library never calls it, and it // prints on Serial whatever the log level and ALEX2ESP_LOG_MAX are, because the sketch asked for the figures. class AlexaUtils diff --git a/src/AlexaVersion.h b/src/AlexaVersion.h index 0788600..63d1ef2 100644 --- a/src/AlexaVersion.h +++ b/src/AlexaVersion.h @@ -3,6 +3,6 @@ #ifndef ALEXA_VERSION_H #define ALEXA_VERSION_H -#define ALEX2ESP_VERSION "1.2.0" +#define ALEX2ESP_VERSION "2.0.0" #endif // ALEXA_VERSION_H