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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user