Страница 2 из 3

Re: Нечисловые данные датчиков температуры

Добавлено: Ср янв 16, 2019 11:06 am
skysilver
Ivg_spb писал(а): Вт янв 15, 2019 11:50 pm С нечисловыми данными проблема осталась: Warning: A non-numeric value encountered in C:\_majordomo\htdocs\lib\objects.class.php on line 922 Warning: A non-numeric value encountered in C:\_majordomo\htdocs\lib\objects.class.php on line 922
Не помешает строку преобразовать в числовой формат.

Код: Выделить всё

$T = (float)file_get_contents("http://192.168.0.30/sec/?pt=25&cmd=get");

Re: Нечисловые данные датчиков температуры

Добавлено: Ср янв 16, 2019 11:38 am
Chainik
skysilver писал(а): Ср янв 16, 2019 11:06 am ... Не помешает строку преобразовать в числовой формат. ...
Там проблема в том, что иногда (непонятно откуда) прилетает значение "2orm>bmit". Так что может и не помочь.

Re: Нечисловые данные датчиков температуры

Добавлено: Ср янв 16, 2019 12:27 pm
skysilver
Тогда проверить is_numeric()

Код: Выделить всё

$T = file_get_contents("http://192.168.0.30/sec/?pt=25&cmd=get");
if (is_numeric($T)) {
  //
}

Re: Нечисловые данные датчиков температуры

Добавлено: Ср янв 16, 2019 3:56 pm
Chainik
skysilver писал(а): Ср янв 16, 2019 12:27 pm Тогда проверить is_numeric()

Код: Выделить всё

$T = file_get_contents("http://192.168.0.30/sec/?pt=25&cmd=get");
if (is_numeric($T)) {
  //
}
Так то оно так. Я предлагал такой вариант чуть выше.
Но внутри некорректного значения есть цифры (помимо букв). Вдруг is_numeric "скажет" что это число...

Re: Нечисловые данные датчиков температуры

Добавлено: Чт янв 17, 2019 1:01 pm
ZyaK
датчики то от какого напряжения запитаны?

Re: Нечисловые данные датчиков температуры

Добавлено: Чт янв 17, 2019 9:59 pm
Ivg_spb
3,3v отдельной жилой витой пары от MegaD

Re: Нечисловые данные датчиков температуры

Добавлено: Пт янв 18, 2019 9:01 pm
Ivg_spb
Chainik писал(а): Ср янв 16, 2019 9:57 am
Ivg_spb писал(а): Вт янв 15, 2019 11:50 pm ...С нечисловыми данными проблема осталась: ...
Давайте пробовать дальше:

Код: Выделить всё

$T = file_get_contents("http://192.168.0.30/sec/?pt=25&cmd=get");
if (is_numeric($T) || $T <= 50 || $T >= -10) {
//Пишем предыдущее значение, чтобы не терялась дискретность по периодичности сбора показаний
sg('Sensor_temp06.value', $T);
} else {
sg('Sensor_temp06.value', gg('Sensor_temp06.value'));}
Здесь будет производиться запись текущего значения, если данные в переменной $T являются числовыми и попадают в допустимый диапазон. Иначе пишем предыдущее значение.
Пробуйте, наблюдайте, не появляются ли при таком варианте явно нереальные значения.

Теперь это выглядит вот так:
2019-01-18 20:59:40: temp:22.62 X
2019-01-18 20:59:39: @ X
2019-01-18 20:59:01: temp:22.62 X
2019-01-18 20:58:33: @ X
2019-01-18 20:58:33: temp:22.62 X
2019-01-18 20:58:01: temp:22.62 X
2019-01-18 20:57:34: temp:22.62 X
2019-01-18 20:57:33: @ X
2019-01-18 20:57:02: temp:22.62 X
2019-01-18 20:56:33: temp:22.62 X
2019-01-18 20:56:32: 2@ X
2019-01-18 20:56:01: temp:22.62 X
2019-01-18 20:56:01: temp:22.62 X
2019-01-18 20:55:32: 2@ X
2019-01-18 20:55:32: temp:22.68 X
2019-01-18 20:55:02: temp:22.62 X
2019-01-18 20:54:33: temp:22.62 X
2019-01-18 20:54:32: 2@ X
2019-01-18 20:54:01: temp:22.68 X
2019-01-18 20:53:33: temp:22.68 X
2019-01-18 20:53:32: 2@ X

Re: Нечисловые данные датчиков температуры

Добавлено: Пт янв 18, 2019 9:09 pm
Ivg_spb
Warning: A non-numeric value encountered in C:\_majordomo\htdocs\lib\objects.class.php on line 922 Warning: A non-numeric value encountered in C:\_majordomo\htdocs\lib\objects.class.php on line 922 Warning: A non-numeric value encountered in C:\_majordomo\htdocs\lib\objects.class.php on line 922

А теперь при нажатии Test в методах объекта выдает вот такое...

Re: Нечисловые данные датчиков температуры

Добавлено: Пт янв 18, 2019 9:13 pm
Ivg_spb
Что интересно, в веб морде Меги показания отображаются корректно

Re: Нечисловые данные датчиков температуры

Добавлено: Пт янв 18, 2019 9:32 pm
serghei
Извините что не в своей теме , но это очень похоже на мою проблему. Сама Мега значения меряет корректно , если показывает в вебе. НО не может их передать мажерику ( или тот не может принять). Присмотритесь внимательно - парсер мажерика проглатывает первые 9 байтов строки. Но нормально выводит остальные. Это что то с буфером в самом мажере. Скорее всего не устойчивая связь по сети.

У меня есть такая же проблема при передачи данных по сериалу между двумя ардуинами. Попробуйте уменьшить скорость вывода у Меги.