HomeSpan now includes both drivers as part of the "extras" functionality.
The StepperMotorControl Window Shade Example has been updated accordingly to use the built-in TB6612 driver.
Needed to support ESP-NOW on ESP-8266 chips, which seem to only work if connecting into softAP MAC Address once HomeSpan is connected to WiFi network (prior to connection ESP-8266 will properly connect to normal STA address as well as softAP address).
Noticed that the Arduino IDE 2.0 interface was not displaying Other Examples.
This is because Other Examples was not under the "examples" folder. Not sure why this was the case - I should have originally put it there (?) Regardless, once moved into the examples folder, Other Examples now properly shows up in both Arduino IDE version 1 and version 2.
The only reason to have used getAccessory(aid) is to delete it, so the delete command is now invoked automatically. Function returns 0 on success (matching aid found) or -1 on fail (aid not found)
All tutorial examples now updated and confirmed working s expected in ios15.4.1 except for Example 17 (Shower). DEV_Identify.h removed from all examples and optional AccessoryInformation() Characteristics deleted to make examples easier to use and understand.
To Do: Review and update "Other Examples" and add link to Example 19 in Tutorials.md
This appears to be a Home App problem. The problem cannot be fixed by adding in ServiceLabel and ServiceIndex (no impact), nor adding in isConfigured(), nor adding Name() Characteristics. The Home App refuses to render the valves regardless of what valve type. They will sometimes appear, and then disappear from the interface for no reason.
Testing with the Apple's HomeKit Simulator yields the same symptoms.
Completely replaced Example 11, which showed how to use setPrimary() since this no longer seems to have any impact on HomeKit. Changed sketch name from ServiceOptions to ServiceNames.
Also updated SpanWebLog::addLog() so that the log message is also output to the Serial Monitor if the HomeSpan Log Level is set to 1 or greater.
To do: DOCUMENT ALL THIS!
If LOG1() or LOG2() is only provided with a SINGLE argument, then Serial.print() is called. This allows you to continue using LOG1() and LOG2() to directly print any variable or object that is handled by Serial.print(), such as an int, double, or even an IPAddress.
If LOG1() or LOG2() is provided with multiple arguments, the first is considered the format and Serial.printf(format...) is called. This allows you to use printf-like functionality within LOG1() and LOG2().
Gets IP address (as char *) of last client to send a request. Useful as part of web log messages. Will return 0.0.0.0 if used outside of any code that is responding to a client request.
Greatly simplifies use interface. No need to specify or save channels. And no need to even save pin number since that can be found using LedPin->getPin() method whenever needed.