SmartLiving.ru

Обсуждение проекта
 
Текущее время: Сб фев 24, 2018 6:48 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: Вт фев 13, 2018 12:05 pm 
Не в сети

Зарегистрирован: Ср авг 23, 2017 6:29 pm
Сообщения: 4
Благодарил (а): 1 раз.
Поблагодарили: 3 раз.
Предыстория.
Столкнулся с такой проблемой при построении графиков. Периодически 2 датчика 18B20 выдают показания -127.00 градусов. Из-за этого, как Вы понимаете, график приобретает не совсем приятный и наглядный вид. Изучение вопроса показало что с такими показаниями я сталкиваюсь не один и на форуме arduino много на эту тему обсуждения имеется. Купировать ошибку (как оказалось такие показания датчик выдает в случае ошибки) на устройстве мне не удалось, поэтому решил чистить её в базе. Понимаю что это реально костыль, но в данной ситуации лично мне так удобнее. Если и Вас достали провалы в показаниях на графиках, то вот моё решение. Делать так Вам или нет решайте сами.
Моё решение.
1) Заходим в phpMyAdmin
http://<DNS_имя_или_IP_сервера_MajorDoMo>/phpmyadmin/
Логин (по умолчанию, если не меняли): root
пароль (по умолчанию, если не меняли): rootpsw
2) В левой части экрана выбираем базу db_terminal
3) Создаем новое Событие
[Показать] Скрытый текст:
Вложение:
php02.PNG
php02.PNG [ 14.78 КБ | Просмотров: 218 ]

4) Заполняем параметры события:
Название события: Любое, как Вам угодно
Состояние: ENABLE (включено)
Тип события: RECURRING (повторяющееся)
Выполнять каждые: 1(один) HOUR (час) // Это периодичность выполнения данного события. Настройте как Вам удобно.
Начало: //я указал текущий день и ближайшее округлённое время. Может его и вообще можно было пустым оставить :)
Определение: DELETE FROM `db_terminal`.`phistory` WHERE value='-127.00'
// Это как раз запрос который в данной базе в ветке истории найдет все записи со значением -127.00 и удалит их
Сохранить при окончании: (не менял)
Определитель: (не заполнял)
Комментарий: (не обязателен)
Сохраняемся. (в моем случае идем Вперёд)
[Показать] Скрытый текст:
Вложение:
php03.PNG
php03.PNG [ 39.66 КБ | Просмотров: 218 ]

5) Проверяем Статус планировщика событий. Должен быть Включен - зелёного цвета.
[Показать] Скрытый текст:
Вложение:
php04.PNG
php04.PNG [ 17.27 КБ | Просмотров: 218 ]

6) Выходим из phpMyAdmin

Только что мы создали в планировщике БД событие, которое будет с заданной периодичностью удалять из базы истории записи со значением "-127.00"
Суточное тестирование проблем не выявило. Скрипт отрабатывает четко и графики вновь стали наглядными.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 12:31 pm 
Не в сети

Зарегистрирован: Сб янв 13, 2018 5:00 pm
Сообщения: 62
Благодарил (а): 3 раз.
Поблагодарили: 26 раз.
По-моему гораздо проще не добавлять такие значения в базу. Перед добавлением делать проверку на -127 и всё...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 12:32 pm 
Не в сети

Зарегистрирован: Вс янв 10, 2016 11:05 am
Сообщения: 319
Благодарил (а): 34 раз.
Поблагодарили: 74 раз.
CheBuraw, спасибо, что делитесь наработками и подробными инструкциями.
Правда, у меня возникает естественный вопрос. Если мы используем Мажордомо, почему нельзя перед записью значения в БД верифицировать его на корректность/допустимость, и явно ошибочные "отбраковывать" (или заменять предыдущими)? Зачем избран такой "сложный" путь "отбраковки" неправильных значений уже после записи в БД (и непосредственно из СУБД)?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 1:22 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 14, 2012 12:24 pm
Сообщения: 1226
Откуда: Россия, Нижняя Тура
Благодарил (а): 371 раз.
Поблагодарили: 81 раз.
Можно использовать такой алгоритм:
  • привязать датчик к свойству input
  • создать метод inputChanged с таким текстом:
    Код:
    $value = $this->getProperty('input');
    if ($value != $this->getProperty('value'); {
     if ($value <= '-127') {return;}
     $this->setProperty('value',$value);
    }
  • связываем свойство input с методом inputChanged
  • и уже на свойство value прикручиваем историю.
Таким способом мы отбросим повторяющиеся или неверные значения.

_________________
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 4:25 pm 
Не в сети

Зарегистрирован: Ср авг 23, 2017 6:29 pm
Сообщения: 4
Благодарил (а): 1 раз.
Поблагодарили: 3 раз.
Честно говоря, для меня проще оказалось настроить систематическую чистку БД, чем отсеивать данные значения на лету, при получении.
Ваши предложения считаю достаточно интересными. Я о таком варианте даже как-то и не подумал :).
Amarok, спасибо за конкретный пример ещё одного варианта решения проблемы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт фев 13, 2018 8:07 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 14, 2012 12:24 pm
Сообщения: 1226
Откуда: Россия, Нижняя Тура
Благодарил (а): 371 раз.
Поблагодарили: 81 раз.
Код:
if ($value != $this->getProperty('value'); {
 if (
$value <= '-127') {return;}
 
$this->setProperty('value',$value);

Тут можно любые действия делать будет. Округлять, заменять и т.п..

_________________
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт фев 15, 2018 8:34 pm 
Не в сети

Зарегистрирован: Чт мар 19, 2015 10:27 pm
Сообщения: 40
Благодарил (а): 6 раз.
Поблагодарили: 16 раз.
CheBuraw писал(а):
Честно говоря, для меня проще оказалось настроить систематическую чистку БД, чем отсеивать данные значения на лету, при получении.
Ваши предложения считаю достаточно интересными. Я о таком варианте даже как-то и не подумал :).
Amarok, спасибо за конкретный пример ещё одного варианта решения проблемы.
Здесь на форуме я выкладывал свой новый класс sensors где все это уже реализовано, очень рекомендую. Могу выложить новую версию, с тех пор я исправить некоторые ошибки и внёс доработки

Отправлено с моего Redmi 3 через Tapatalk
http://cloud.tapatalk.com/s/5a85c523f4182/Sensors.txt


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: nick7zmail и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB