diff --git a/src/modules/exec/ButtonIn/ButtonIn.cpp b/src/modules/exec/ButtonIn/ButtonIn.cpp index 5f6e0967..1a00f59b 100644 --- a/src/modules/exec/ButtonIn/ButtonIn.cpp +++ b/src/modules/exec/ButtonIn/ButtonIn.cpp @@ -31,7 +31,10 @@ class ButtonIn : public IoTItem { // TODO: загрузить значение из памяти иначе пока просто считываем значение текущего состояния PIN - _lastButtonState = _buttonState = IoTgpio.digitalRead(_pin); + value.valD = _buttonState = IoTgpio.digitalRead(_pin); + // сообщаем всем о стартовом статусе без генерации события + publishStatusMqtt(_id, (String)_buttonState); + publishStatusWs(_id, (String)_buttonState); } void loop() { diff --git a/src/utils/StringUtils.cpp b/src/utils/StringUtils.cpp index 8d84ea64..0a2b06ac 100644 --- a/src/utils/StringUtils.cpp +++ b/src/utils/StringUtils.cpp @@ -157,12 +157,17 @@ boolean isDigitStr(const String& str) { } boolean isDigitDotCommaStr(const String& str) { + bool dotCountWas = false; for (size_t i = 0; i < str.length(); i++) { char latter = str.charAt(i); //если символ не цифра и не точка и не тире - if (!isDigit(latter) && latter != '.') { + if (!isDigit(latter) && latter != '.' && latter != '-') { return false; } + if (latter == '.') { // проверяем на две точки, чтоб исключить дату + if (dotCountWas) return false; + dotCountWas = true; + } } return true; }