Update usermods: FixUnreachableNetServices and PIRsensorSwitch (#1448)

* Removed usermod Fix_unreachable_webserver

* Changed README. Added a compiler warning for ESP32

* Fix ESP32 compiling issue. Add instance ptr API.

* Updated usermods. Store config values. ESP32 fix.

* Store analog clock settings

* Rename JSON values

bring them visually more in line with the other settings

Co-authored-by: cschwinne <dev.aircoookie@gmail.com>
This commit is contained in:
gegu
2020-12-10 01:28:42 +01:00
committed by GitHub
parent 6b4bbe625b
commit 7a7f34746e
7 changed files with 502 additions and 380 deletions

View File

@@ -11,19 +11,21 @@ The LED strip is switched [using a relay](https://github.com/Aircoookie/WLED/wik
The info page in the web interface shows the items below
- the state of the sensor. By clicking on the state the sensor can be deactivated/activated.
**I recommend to deactivate the sensor before installing an OTA update**.
- the state of the sensor. By clicking on the state the sensor can be deactivated/activated. Changes persist after a reboot.
**I recommend to deactivate the sensor before an OTA update and activate it again afterwards**.
- the remaining time of the off timer.
## JSON API
The usermod supports the following state changes:
The usermod supports the following state changes:
| JSON key | Value range | Description |
|------------|-------------|---------------------------------|
| PIRenabled | bool | Deactivdate/activate the sensor |
| PIRoffSec | 60 to 43200 | Off timer seconds |
Changes also persist after a reboot.
## Sensor connection
My setup uses an HC-SR501 sensor, a HC-SR505 should also work.
@@ -55,7 +57,7 @@ Example **usermods_list.cpp**:
//#include "usermod_v2_example.h"
//#include "usermod_temperature.h"
//#include "usermod_v2_empty.h"
#include "usermod_PIR_sensor_switch.h"
#include "usermod_PIR_sensor_switch.h"
void registerUsermods()
{
@@ -72,26 +74,36 @@ void registerUsermods()
}
```
## Usermod installation (advanced mode)
## API to enable/disable the PIR sensor from outside. For example from another usermod.
In this mode IR sensor will disable PIR when light ON by remote controller and enable PIR when light OFF.
The class provides the static method `PIRsensorSwitch* PIRsensorSwitch::GetInstance()` to get a pointer to the usermod object.
1. Copy the file `usermod_PIR_sensor_switch.h` to the `wled00` directory.
2. Register the usermod by adding `#include "usermod_PIR_sensor_switch.h"` in the top and `registerUsermod(new PIRsensorSwitch());` in the bottom of `usermods_list.cpp`.
3. Add to the line 237, on `wled.h` in the `wled00` directory:
To query or change the PIR sensor state the methods `bool PIRsensorEnabled()` and `void EnablePIRsensor(bool enable)` are available.
`WLED_GLOBAL bool m_PIRenabled _INIT(true); // enable PIR sensor`
4. On `ir.cpp` in the `wled00` directory, add to the IR controller's mapping (beyond line 200):
- To the off button:
`m_PIRenabled = true;`
- To the on button:
`m_PIRenabled = false;`
5. Edit line 40, on `usermod_PIR_sensor_switch.h` in the `wled00` directory:
`\\bool m_PIRenabled = true;`
### There are two options to get access to the usermod instance:
1. Include `usermod_PIR_sensor_switch.h` **before** you include the other usermod in `usermods_list.cpp'
or
2. Use `#include "usermod_PIR_sensor_switch.h"` at the top of the `usermod.h` where you need it.
**Example usermod.h :**
```cpp
#include "wled.h"
#include "usermod_PIR_sensor_switch.h"
class MyUsermod : public Usermod {
//...
void togglePIRSensor() {
if (PIRsensorSwitch::GetInstance() != nullptr) {
PIRsensorSwitch::GetInstance()->EnablePIRsensor(!PIRsensorSwitch::GetInstance()->PIRsensorEnabled());
}
}
//...
};
```
Have fun - @gegu