Fix for not honouring enabled state for PIR usermod. (#2090)

This commit is contained in:
Blaž Kristan 2021-07-22 14:41:11 +02:00 committed by GitHub
parent 02b6d53544
commit 9ba7e5d567
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -193,16 +193,16 @@ public:
*/ */
void setup() void setup()
{ {
if (enabled) {
// pin retrieved from cfg.json (readFromConfig()) prior to running setup() // pin retrieved from cfg.json (readFromConfig()) prior to running setup()
if (!pinManager.allocatePin(PIRsensorPin,false)) { if (PIRsensorPin >= 0 && pinManager.allocatePin(PIRsensorPin,false)) {
PIRsensorPin = -1; // allocation failed
enabled = false;
DEBUG_PRINTLN(F("PIRSensorSwitch pin allocation failed."));
} else {
// PIR Sensor mode INPUT_PULLUP // PIR Sensor mode INPUT_PULLUP
pinMode(PIRsensorPin, INPUT_PULLUP); pinMode(PIRsensorPin, INPUT_PULLUP);
if (enabled) {
sensorPinState = digitalRead(PIRsensorPin); sensorPinState = digitalRead(PIRsensorPin);
} else {
if (PIRsensorPin >= 0) DEBUG_PRINTLN(F("PIRSensorSwitch pin allocation failed."));
PIRsensorPin = -1; // allocation failed
enabled = false;
} }
} }
initDone = true; initDone = true;
@ -221,8 +221,8 @@ public:
*/ */
void loop() void loop()
{ {
// only check sensors 10x/s // only check sensors 4x/s
if (millis() - lastLoop < 100 || strip.isUpdating()) return; if (!enabled || millis() - lastLoop < 250 || strip.isUpdating()) return;
lastLoop = millis(); lastLoop = millis();
if (!updatePIRsensorState()) { if (!updatePIRsensorState()) {
@ -335,6 +335,7 @@ public:
} }
PIRsensorPin = top["pin"] | PIRsensorPin; PIRsensorPin = top["pin"] | PIRsensorPin;
// PIRsensorPin = min(39,max(-1,(int)PIRsensorPin)); // check bounds
enabled = top[FPSTR(_enabled)] | enabled; enabled = top[FPSTR(_enabled)] | enabled;