Commit Graph

1159 Commits

Author SHA1 Message Date
Gregg 46d7ade046 Re-doing Pixel class once again
This time using customized interrupts to fill RMT memory on-the-fly.

* Added getChannel() to RFControl
* Add 3rd, optional, boolean argument to RFControl(int pin, bool refTick, bool defaultDrive) to that RMT can be initialized but without the default driver (allows for use of custom interrupt code instead)
2022-01-16 14:16:52 -06:00
Gregg 1f9c8bfd48 Merge branch 'dev' of https://github.com/HomeSpan/HomeSpan into dev 2022-01-11 06:41:19 -06:00
Gregg 3e1c676f90 Update Pixel.ino 2022-01-11 06:41:17 -06:00
HomeSpan 184cd3d82f
Update Reference.md 2022-01-11 06:01:19 -06:00
Gregg 6f4cea1b4d Updated version number to 1.4.3
Also updated Pixel example.
2022-01-10 22:52:08 -06:00
Gregg aefa737675 Completed "optimization"
Pixels now lets you reserve memory for pixels so that the call to start the RF transmission can be done for multiple pixels at once.  However, gain is not as much as expected.  May need to revisit if driving a large matrix of pixels is needed.
2022-01-08 17:28:43 -06:00
Gregg ee6c270de3 optimizing to allow for pulse train batching 2022-01-08 16:18:37 -06:00
Gregg 9d0c56799c Update extras.ino 2022-01-07 06:58:40 -06:00
Gregg 1b402b5ebc changed range of S and V to be 0-100 instead of 0-1
But still use float so that values of 50.3, 99.5, etc. are still distinguishable.
2022-01-07 06:25:11 -06:00
Gregg 3020b800a6 testing 2022-01-06 21:43:54 -06:00
Gregg f10f5cffcd Normalized and optimized Pixel methods
created color_t typedef and use as basis for all RGB and HSV methods
2022-01-06 21:15:03 -06:00
Gregg d5b27d6e14 Added ability to set same color on multiple pixels
Added 4th, optional argument, nPixels, to setRGB() and setHSV().
2022-01-06 18:09:22 -06:00
HomeSpan 738dce3ad3
Update Reference.md 2022-01-05 17:25:28 -06:00
HomeSpan 22de894f92
Update Reference.md 2022-01-02 17:06:15 -06:00
Gregg e8c7afae00 Increased default max number of connections to 14!
Reflects increase in max number of LWIP sockets from 10 (Arduino-ESP32 v2.0.0) to 16 (Arduino-ESP32 v2.0.1).  Since HomeSpan needs at least 2 (one for Server and 1 free for new connections), this leaves 14 connections for controllers.  A big improvement over only having 8!
2022-01-02 15:36:54 -06:00
Gregg 5d3a4bfc38 Added simple Pixel example to Other Examples 2022-01-01 08:14:32 -06:00
Gregg 12c283e8c3 Update Pixel.h 2022-01-01 07:14:30 -06:00
Gregg 368a06301a renamed sk68xx class to Pixel and made it generic
Constructor now allows you to specify high/low timings for 1-bit and 0-bit, as well as timing for reset delay.  Default parameters are included if none are specified.
2021-12-31 18:10:51 -06:00
Gregg 3b6bc13b1c Added setHSV() to sk68xx class 2021-12-31 15:34:20 -06:00
Gregg facba4c02a Added Pixel.h and Pixel.cpp and implemented SK68XX Addressable LED Class
Also add getPin() to RFControl (which is used by SK68XX Class) as well as boolean operator overrides for both RFControl and PwmPin/ServoPin so that instances can be checked for validity.
2021-12-31 14:51:42 -06:00
HomeSpan ec4312e2f6
Update Reference.md 2021-12-27 15:41:41 -06:00
Gregg d667f5e81d Added homeSpan.setStatusAutoOff(uint16_t duration)
Optional method to automatically turn off Status LED after a *duration* seconds.  LED will resume normal operation any time it is re-triggered with a new pattern.  This also resets the elapsed time used to check for autoOff.
2021-12-26 23:07:37 -06:00
HomeSpan 81776f3366
Update Reference.md 2021-12-23 22:58:52 -06:00
Gregg 8737efea14 Added setUnit(char *) as method to SpanCharacteristic
Optional method to add or override the units for a Characteristic (i.e., "percentage", or "celsius") as per HAP-R2 Table 6-6.
2021-12-23 22:28:26 -06:00
Gregg 3cc14c3a8d Addressed automation issue by extending true/false parsing
Added true/false parsing to all integer-based Characteristics.  Previously true/false was only parsed for BOOL Characteristics.  For integer-based on/off Characteristics, the Home App would send a 0 for off, and a 1 for on, consistent with HAP-R2.  BUT...when using Home App AUTOMATIONS, the Home App would send true/false for integer-based Characteristics, which is inconsistent with HAP-R2.  This meant automations worked with lights (that use the boolean ON Characteristic) but not with fans (that use the uint8 ACTIVE Characteristic).

With this "fix", true/false will be recognized all the time (except for float- and string-based Characteristics.  Confirmed that fans now work with Home App Automations.
2021-12-23 15:37:26 -06:00
HomeSpan 8dd9a40f77
Update Reference.md 2021-12-18 15:26:33 -06:00
Gregg 715adf44f1 Added setDescription(const char *) method to SpanCharacteristic
This allows you to add an optional "description" to a Characteristic.  This is not the same as the name of a Service and is generally not used by the Home App.  However, it appears to be consumed by the Eve app, which can be helpful in some circumstances when developing custom characteristics.
2021-12-17 06:44:27 -06:00
HomeSpan 0aba248888
Update Reference.md 2021-12-03 07:18:39 -06:00
Gregg a872111743 Fixed bug in CUSTOM_CHAR() when applied to STRING Characteristic
Created a new CUSTOM_CHAR_STRING(NAME,UUID,PERMISISONS,DEFVAL) macro specifically for STRING Characteristics
2021-12-03 07:02:25 -06:00
HomeSpan b63945b6dc
Merge pull request #196 from HomeSpan/master
Update dev branch to match final master for 1.4.2
2021-11-27 10:31:22 -06:00
HomeSpan 7b461f3108
Update README.md 2021-11-27 10:24:56 -06:00
HomeSpan 84cff6e877
Merge pull request #195 from HomeSpan/dev
Update to version 1.4.2
2021-11-27 10:18:41 -06:00
HomeSpan d902408b08
Update README.md 2021-11-27 10:15:28 -06:00
HomeSpan c492f51604
Update README.md 2021-11-27 10:14:34 -06:00
HomeSpan 6aff9bfa75
Update README.md 2021-11-27 10:14:11 -06:00
Gregg bc5299cf57 Updated version number to 1.4.2
Ready for release!
2021-11-27 09:48:07 -06:00
Gregg 83170306f5 Updated Blinker class for compatibility with Arduino-ESP32 v2.0.1
The update from Arduino-ESP32 2.0.0 to 2.0.1 contained significant changes to the structures used by the IDF for generic timers.  This broke the Blinker code (would not compile for ESP32-S2 and C3 chips).

The solution: Modified Blinker::isrTimer() to use a *generic* interrupt-clearing function when available (IDF version >= 4.0.0).  Below 4.0.0 the code continues to manually clear the interrupt flag by resetting specific structure variables, though the logic is simpler since this is only needed for the ESP32 chip (the S2 and C3 are not supported in earlier versions of Arduino-ESP32).

This provides for full compatibility with Arduino-ESP32 versions 2.0.1, 2.0.0, and 1.0.6.  The use of a generic interrupt clearing function when IDF>=4.0.0 will hopefully make this future-proof to any further changes by Espressif to the underlying timer structures.
2021-11-25 10:03:57 -06:00
Gregg d8bb51902f Fixed Bug in TimedWrites
The loop over TimedWrites incorrectly erased iterators inside a for-loop.  For some reason this never caused an issue on the ESP32, but crashed on the ESP32-C3.  Solution is to change the for-loop to a while-loop with proper handling of the iterator when an element is deleted.  This appears to fix the problem.
2021-11-24 18:27:55 -06:00
HomeSpan a8e6e643f9
Update Reference.md 2021-11-12 18:40:21 -06:00
HomeSpan 07eaef9523
Update Reference.md 2021-11-12 18:30:45 -06:00
Gregg 48b21df329 Created method setPairingCode(const char *s)
Allows for programmatic creation of Pairing Setup Code.  Not recommended, but added for a convenience - should use 'S' from CLI instead.
2021-11-12 18:01:27 -06:00
HomeSpan 8c93ac2e35
Update Reference.md 2021-11-12 06:58:06 -06:00
HomeSpan 8ffb62715e
Update Reference.md 2021-11-11 21:12:47 -06:00
HomeSpan 6801dfe4c8
Update Reference.md 2021-11-11 20:57:02 -06:00
Gregg b5f4592b29 Removed Characteristic::ConfiguredNameStatic() end updated Television Example
Characteristic::ConfiguredNameStatic() is no longer needed since you can now change permissions on ConfiguredStatic to remove PW with removePerms(PW).  Updated Television Example accordingly.

To Do:  Add getLinks() and setPerms/addPerms/removePerms to API Reference Documentation
2021-11-10 05:54:19 -06:00
HomeSpan fcf715d874 Added getLinks() method to SpanServices
This returns a vector of linked Services that can be used in a for-each loop as such:

for(auto services : getLinks()){ ... }

Must cast services into specific Service type to access anything not generic to the SpanService   class
2021-11-09 21:18:34 -06:00
HomeSpan 3f833beb74 Added ability to change permissions for Characteristics
New methods for Characteristics:

setPerms(uint8_t perms);
addPerms(uint8_t dPerms);
removePerms(uint8_t dPerms);

where perms and dPerms = PR|PW|EV...
2021-11-09 21:08:52 -06:00
HomeSpan 9de26715f0
Update Reference.md 2021-11-08 05:50:30 -06:00
Gregg 6f765e8988 Added non-notify option to setVal()
Second optional argument to setVal() determines whether or not HomeSpan sends notification of new value to HomeKit.  Default if left blank is "true" for backwards compatibility.
2021-11-07 20:45:44 -06:00
HomeSpan 835d49adc5
Merge pull request #181 from HomeSpan/release-1.4.1
Release 1.4.1
2021-10-31 19:33:46 -05:00