mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
Добавляем в приемник 433 интервал игнорирования повторов
Типа защиты от виртуального дребезга контактов
This commit is contained in:
@@ -9,11 +9,16 @@ class RCswitch : public IoTItem {
|
|||||||
private:
|
private:
|
||||||
int _pinRx; // Выход радио модуля
|
int _pinRx; // Выход радио модуля
|
||||||
int _pinTx; // Выход модуля передатчика
|
int _pinTx; // Выход модуля передатчика
|
||||||
|
int _intRepeat = 6;
|
||||||
|
int _repeatCount = 0;
|
||||||
|
unsigned long _oldValue = 0;
|
||||||
|
unsigned long _newValue = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RCswitch(String parameters): IoTItem(parameters) {
|
RCswitch(String parameters): IoTItem(parameters) {
|
||||||
jsonRead(parameters, "pinRx", _pinRx);
|
jsonRead(parameters, "pinRx", _pinRx);
|
||||||
jsonRead(parameters, "pinTx", _pinTx);
|
jsonRead(parameters, "pinTx", _pinTx);
|
||||||
|
jsonRead(parameters, "intRepeat", _intRepeat);
|
||||||
_interval = _interval / 1000; // корректируем величину интервала int, теперь он в миллисекундах
|
_interval = _interval / 1000; // корректируем величину интервала int, теперь он в миллисекундах
|
||||||
if (_pinRx >= 0) {
|
if (_pinRx >= 0) {
|
||||||
Serial.printf("Protocol: %d", _pinRx);
|
Serial.printf("Protocol: %d", _pinRx);
|
||||||
@@ -32,11 +37,19 @@ class RCswitch : public IoTItem {
|
|||||||
// Serial.print("bit ");
|
// Serial.print("bit ");
|
||||||
// Serial.print("Protocol: ");
|
// Serial.print("Protocol: ");
|
||||||
// Serial.println( mySwitch.getReceivedProtocol() );
|
// Serial.println( mySwitch.getReceivedProtocol() );
|
||||||
value.valD = mySwitch.getReceivedValue();
|
|
||||||
regEvent(value.valD, "RCswitch");
|
_newValue = mySwitch.getReceivedValue();
|
||||||
|
if (_newValue != _oldValue || _repeatCount > _intRepeat) {
|
||||||
|
value.valD = _newValue;
|
||||||
|
regEvent(value.valD, "RCswitch");
|
||||||
|
_oldValue = _newValue;
|
||||||
|
_repeatCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
mySwitch.resetAvailable();
|
mySwitch.resetAvailable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_repeatCount <= _intRepeat) _repeatCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
IoTValue execute(String command, std::vector<IoTValue> ¶m) {
|
IoTValue execute(String command, std::vector<IoTValue> ¶m) {
|
||||||
|
|||||||
@@ -8,7 +8,8 @@
|
|||||||
"type": "Reading",
|
"type": "Reading",
|
||||||
"subtype": "RCswitch",
|
"subtype": "RCswitch",
|
||||||
"id": "rsw",
|
"id": "rsw",
|
||||||
"int": 500,
|
"int": 100,
|
||||||
|
"intRepeat": 6,
|
||||||
"pinRx": 12,
|
"pinRx": 12,
|
||||||
"pinTx": 12
|
"pinTx": 12
|
||||||
}
|
}
|
||||||
@@ -29,7 +30,8 @@
|
|||||||
"propInfo": {
|
"propInfo": {
|
||||||
"pinRx": "GPIO номер, к которому подключен радио приемник 433 MHz. Если < 0, то приемник выключен",
|
"pinRx": "GPIO номер, к которому подключен радио приемник 433 MHz. Если < 0, то приемник выключен",
|
||||||
"pinTx": "GPIO номер, к которому подключен радио передатчик 433 MHz. Если < 0, то передатчик выключен",
|
"pinTx": "GPIO номер, к которому подключен радио передатчик 433 MHz. Если < 0, то передатчик выключен",
|
||||||
"int": "Количество миллисекунд между опросами датчика. 0 - выключено. (устранение повторений при нажатой кнопке)"
|
"int": "Количество миллисекунд между опросами датчика. 0 - выключено.",
|
||||||
|
"intRepeat": "Количество интервалов int пропускаем повторы, т.е. при int=100 и intRepeat=6, первые 600мс игнорируем одинаковые значения."
|
||||||
},
|
},
|
||||||
"retInfo": "Содержит принятое значение",
|
"retInfo": "Содержит принятое значение",
|
||||||
"funcInfo": [
|
"funcInfo": [
|
||||||
|
|||||||
Reference in New Issue
Block a user