Commit Graph

314 Commits

Author SHA1 Message Date
Gregg 0a5cf52569 Modified Service::update() to return boolean instead of StatusCode
Also moved StatusCode definitions from Settings.h to HAPConstants.h.  There was no reason to have the user return a StatusCode of OK or UNABLE from update() since the only other choice was BUSY and HomeKit does not seem to distinguish errors.  Either it's okay or not okay, which can more easily be represented by a simply return of TRUE or FALSE from update().

The user now needs to know nothing about StatusCodes.   All Examples were modified to change StatusCode update() to boolean update() and return(StatusCode:OK) to return (true).

Much simpler.
2020-10-01 21:41:26 -05:00
Gregg fbd33bb29d Created homeSpan::setMaxConnections() to make number of HAP connections dynamic
This completes all changes to Settings.h.  User will not need to ever access this files or change any settings.
2020-09-30 10:00:10 -05:00
Gregg c51396a170 Moved MAX_SSID and MAX_PWD from Settings.h to Network.h 2020-09-30 07:24:15 -05:00
Gregg ba66c6f01a Normalized all #includes
Convention is that every *.cpp references, in this order:

1) Any required core librries
2) Its own *.h  (i.e. Foo.cpp -> Foo.h)
3) All other *.h files needed by the cpp, UNLESS those *.h files are already in its own *.h file.  Must include all *.h files that are not in its own *.h file even if it is others that are referenced.
2020-09-29 07:28:27 -05:00
Gregg 606601f447 Add 'L' command to change Log Level 2020-09-28 19:59:03 -05:00
Gregg 301c7dc652 Updated Example 9
Change VERBOSITY to new setLogLevel() framework.
2020-09-28 18:47:09 -05:00
Gregg dee954d5bd Converted VERBOSE macros to LogLevel macros that use real-time if-statements.
This change allows the user to set the log-level with homeSpan.setLogLevel() instead of needing to change in Settings.h.  Next up:  Update Example that introduces VERBOSE to instead use setLogLevel().  Consider adding an interactive 'L' command to change this during run-time.

Also, added "#pragma once" to every *.h file to prevent duplication of definitions.  TO DO:  Review all #include to ensure sanity across all files.
2020-09-28 18:04:59 -05:00
Gregg 381b25860a Moved default parameters for homeSpan.begin() to Settings.h 2020-09-27 22:52:03 -05:00
Gregg 2d8f36e735 Created HomeSpan::setApPassword() and setAPTimeout()
Moved default values into Settings.h
2020-09-27 22:31:11 -05:00
Gregg 7d8a91f13b Updated prior Examples and eliminated ServiceType 2020-09-27 17:42:56 -05:00
Gregg fa8c5934ea Eliminated ServiceType from Library and Example 11
Next up - update Examples 12+ to delete ServiceType
2020-09-27 15:56:48 -05:00
Gregg 814d751e71 Created SpanService::setPrimary() and setHidden()
These optional methods can be "chained" when instantiating a new SpanService to configure the Service as Primary or Hidden (or both).  This alleviates the need to ServiceType to be propogated through the Service constructor.

Next Up:  Eliminate ServiceType construct and update Examples to use setPrimary instead.
2020-09-27 14:51:31 -05:00
Gregg 538a3a9531 Added PushButton::primed()
Allows you to determine if short-press has occured but button not yet released.
2020-09-27 14:33:38 -05:00
Gregg a40447b8f8 Created methods to set Control and Status Pins
Created separate init() methods for PushButton and Blinker.  Created HomeSpan:setControlPin and HomeSpan:setStatusPin that can be called from main setup() to modify the defaults.  All default settings being migrated to Settings.h
2020-09-27 13:41:02 -05:00
Gregg ac25b94b67 Fully implemented Generic PushButton
Generic PushButton now used for all device control functions.
2020-09-26 17:13:17 -05:00
Gregg b7de0cf710 Created Generic PushButton
Wll be used for control button.  Nothing to do with buttons that control Accessories, which are handled by SpanButton.
2020-09-26 16:23:44 -05:00
Gregg 6a2d0741aa Finished 'U' unparing routines
Next Up:  Add method to break out of WiFi connection loop by using push button in case WiFi SSID/PWD has changed but there is no desire to unpair controllers.  To Do:  Move blinking status light setting to named macros.
2020-09-24 09:29:52 -05:00
Gregg 69c7d939b8 Update HomeSpan.cpp
Setup Code now saved after serialConfig() or apConfig().

Next up: Create 'U' command to unpair controller.  Change function of control button so it unpairs (short press) or resets WiFi (long press).

To do:  Revisit statusLED blinking paterns to make sure they are clear and consistent - save them as macros in settings.h
2020-09-23 08:51:13 -05:00
Gregg 7d19df3f69 Added 'S' command to change setup code
Verified all functionality works as expected.  Next Up:  Add this code to both serial and AP network configurations.  To Do: alter 'H' command so it removes controllers (unpairs) but retains HAP ID and other data. - perhaps make this 'U' command?
2020-09-22 08:14:02 -05:00
Gregg c9a661573d Made NVS Handles static variables of HAPClient
Now have nvs_handle hapNVS, wifiNVS, and srpNVS.  All three are opened once in HAPClient::init()
2020-09-22 07:28:02 -05:00
Gregg 49b1aa277d Create SRP6A:loadVerifyCode()
And updated other SRP routines to complete implementation of use of stored verification code instead of live setup code.

Next up: Add method to change setup code in serial interface and implement similar code after network configuration routines.
2020-09-21 07:10:23 -05:00
Gregg 446679abab Created SRP6A:createVerifyCode()
This generates an SRP verification code from a setupCode and randomly-generated salt.  Function creates the salt internally and returns both the resulting verification code and salt that was used.  These are stored in NVS permanently.

Next Step: create SRP6A:loadVerifycode()
2020-09-20 22:00:01 -05:00
Gregg b0307c9ab0 Completed WiFi credentials code
WiFi data now set/resest/saved as needed.  Next up: saving/resetting Setup Code.
2020-09-20 08:25:16 -05:00
Gregg d93c45c0bc Updated Network:apConfigure
Improved Robustness - all functionality now completed.
2020-09-19 08:39:27 -05:00
Gregg dd6c8d904a Completed Network::apConfig() 2020-09-15 07:00:31 -05:00
Gregg 123e2924a5 Completed Network::serialConfigure()
Next up: update and complete Network::apConfigure()
2020-09-12 10:06:44 -05:00
Gregg 4a6c737c72 Moving serial wifi update into Network.cpp 2020-09-07 11:02:44 -05:00
Gregg fd68164917 continued to build out Network() 2020-09-06 14:38:02 -05:00
Gregg 3da2b9a311 Change Config.cpp to Network.cpp
Move all configuration code into Network.cpp, eliminating any calls or connection to HAP.cpp.  Network.cpp is now standalone for HomeSpan.cpp to call directly to handle ALL apects of WiFI and Setup Code initialization.

Also move TempBuffer from HAP.h to Utils.h so it can be used by Network.h
2020-09-06 08:24:13 -05:00
Gregg af3c093cdc updated configure() 2020-09-04 22:19:14 -05:00
Gregg de897557eb updating 2020-09-04 19:51:12 -05:00
Gregg a5e0b1c0ad cleaning up Configure()
TO DO: Add max length to other form inputs;  try limiting number of connections to exactly 1.  Next:  parse form data and initiate wifi connection.
2020-09-04 07:27:50 -05:00
Gregg 4e2c28bcf8 Update Configure.cpp 2020-09-03 21:56:52 -05:00
Gregg 9a80b8fa41 Moved all captive code into Configure.cpp 2020-09-03 21:48:08 -05:00
Gregg b957b540c0 created struct Configure 2020-09-03 21:24:27 -05:00
Gregg fd3b00ecd5 created get wifi-status 2020-09-03 07:07:07 -05:00
Gregg b64bd3a230 continued updates to captive access functionality 2020-09-02 21:10:56 -05:00
Gregg efe33fcdb9 Created captiveAccessURL()
Developing captive AP routines inside HAP.cpp
2020-09-01 22:08:51 -05:00
Gregg cd5b3115f5 Further updates to Captive AP Mode 2020-09-01 08:34:59 -05:00
Gregg 705a0922e1 Started work on CaptiveAP
Added span::config(hostName) to provide CaptiveAP at start-up.
2020-08-30 22:07:16 -05:00
Gregg 8c8168fe34 Update ZephyrHood3.ino
Switched pins for fan<->light
2020-08-26 17:45:00 -05:00
Gregg 30905c4ade Completed Zephyr3
Logic simplified and more robust, but brightness is NOT tracked.  Good compromise.
2020-08-24 12:15:03 -05:00
Gregg 7987cdaf48 FInal Version of Zephyr2
Includes abilty to change brightness of light through HomeKit as well as with button.  However, the vent light is too unstable to do this perfectly, and increasing brightness by stepping through multiple decreases is annoying.   To do:  Create Zephyr3 without brightness control and test to see how it works in practice.
2020-08-24 07:42:50 -05:00
Gregg e5fd2a200f Update DEV_Zephyr.h 2020-08-23 20:37:11 -05:00
Gregg 35280ccf53 Created Zephyr2
Create logic to track whether fan and light is on, withouth needing to rely on emulated pushbuttons.
2020-08-23 18:57:11 -05:00
Gregg 054d4dbf64 Completed Zephyr Vent Hood Example 2020-08-23 13:03:14 -05:00
Gregg 9f7e9a51e5 Created Zephyr Vent Hood Example 2020-08-23 08:21:56 -05:00
Gregg b42dd9dfba Implemented Reset Button
Allows for reset of HAP (press for 5 seconds, but less than 10) or Factory reset (press for 10 second).  Use  setResetPin to change from default of pint 21.
2020-08-23 08:14:31 -05:00
Gregg 2172ac1ce6 Implemented Blinker statusLED
Replaced manual blinking with automated Blinker statusLED
2020-08-22 21:52:25 -05:00
Gregg 9952b48950 Created Blinker Class
Generic blinking class for LEDs that uses Alarm Timer interrupts that work in background.  Will be used to replace and extend HAP blinking of Builtin_LED to convey status of HomeSpan at varioud points in the code.
2020-08-22 13:22:19 -05:00