График расходы воды.
Модератор: immortal
- blackangel
- Сообщения: 148
- Зарегистрирован: Пт окт 21, 2016 2:00 pm
- Благодарил (а): 31 раз
- Поблагодарили: 13 раз
График расходы воды.
Всем привет! Возможно уже было, но я что то не нашел, может плохо искал.
В общем хотелось бы реализовать график потребления воды. Что бы по графику можно было увидеть когда был расход воды а когда нет.
У меня есть в системе переменная которая дает импульс при прохождении через счетчик 10л воды.
У кого какие идеи?
Я пока надумал такое: нужен объект для подсчета импульсов (общий расход воды за все время), 2й объект где будут фиксироваться импульсы накопленные за 30мин например. но как это сделать....???? или может у кого другие идеи?
В общем хотелось бы реализовать график потребления воды. Что бы по графику можно было увидеть когда был расход воды а когда нет.
У меня есть в системе переменная которая дает импульс при прохождении через счетчик 10л воды.
У кого какие идеи?
Я пока надумал такое: нужен объект для подсчета импульсов (общий расход воды за все время), 2й объект где будут фиксироваться импульсы накопленные за 30мин например. но как это сделать....???? или может у кого другие идеи?
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: График расходы воды.
МегаД умеет сама считать импульсы. МД когда нужно может забирать данные счетчика и обнулять его. А может и сам считать, если система работает постоянно. Копите данные в объекте с историей, а потом рисуйте график любым понравившимся способом. Есть встроенные инструменты, а если хочется чего то замудренного, то есть вот такой вариант
СпойлерПоказать
- blackangel
- Сообщения: 148
- Зарегистрирован: Пт окт 21, 2016 2:00 pm
- Благодарил (а): 31 раз
- Поблагодарили: 13 раз
Re: График расходы воды.
Bagir писал(а):МегаД умеет сама считать импульсы. МД когда нужно может забирать данные счетчика и обнулять его. А может и сам считать, если система работает постоянно. Копите данные в объекте с историей, а потом рисуйте график любым понравившимся способом. Есть встроенные инструменты, а если хочется чего то замудренного, то есть вот такой вариантСпойлерПоказать
График температуры воздуха, влажности и т.д., я давно сделал.
Сейчас именно вопрос в том что бы можно было увидеть когда в какое время было потребления воды и сколько.
Счетчики уже подключены к контроллеру (у меня все на промышленных, Delta, гораздо выше классом чем те что вы написали). Вопрос в реализации, формуле, скрипте и т.д..... я не особо силен в PHP и скриптах. Поэтому и прошу помощи, ну и от меня скрины и описание всего. Вместе мы сможет поставить еще одну галочку в функциональности Majordomo=)
-
- Сообщения: 867
- Зарегистрирован: Вт янв 17, 2012 12:31 pm
- Благодарил (а): 121 раз
- Поблагодарили: 78 раз
Re: График расходы воды.
Опишите для примера в каком виде вы данные с контроллеров получаете в компьютер...а дальше уже вопрос "техники".
- blackangel
- Сообщения: 148
- Зарегистрирован: Пт окт 21, 2016 2:00 pm
- Благодарил (а): 31 раз
- Поблагодарили: 13 раз
Re: График расходы воды.
Vit писал(а):Опишите для примера в каком виде вы данные с контроллеров получаете в компьютер...а дальше уже вопрос "техники".
цепочка подключения такая: Счетчик воды - контроллер Delta с аналоговыми вводами (modbus) - RaspberryPi3 (majordomo+modbusTCP).
Счетчик делает импульс при проходе 10 литров воды, контроллер фиксирует импульс и выводит в порт modbus по высокому уровню (т.е. в независимости в каком положении встанет счетчик, контроллер делает четкий импульс) этот импульс я могу видеть в majordomo в объекте (пока не реализовал, но вечером сделаю). т.е. допустим: Объект импульса ХВС - impulse_cold (по умолчанию 0, при импульсе 1), объект общего потребления ХВС - consumption_cold_water (тут нужно суммировать все импульсы что бы знать значение счетчика, удобно для передачи показания на портал гос услуг..... вот если бы еще автоматически передавалось бы=))))))) мечты)
Вот собственно вот так, ну и с ГВС тоже самое.
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: График расходы воды.
Весть дом под управлениями МегаД. Доволен. Работают уже хрен знает сколько без остановок. Промышленное железо не значит круче. Да, о Delta у меня тоже положительные отзывы. Но не суть.
Всё нужно начать с накопления данных в истории свойства. посмотреть просто.
Карты в руки! Тут совершенно схожая задача. Если на входе мы имеем событие прихода импульса, то можем вызывать Объект.Метод При этом мы можем писать в свойство с историей например единичку, или дату-время прихода импульса, чтобы не возиться с вариантом оптимизации базы данных, которая подрежет одинаковые значения. Далее выбираем условный период, и считаем количество записей в базе данных. Получаем замечательный массив и рисуем по нему красивый график.blackangel писал(а):График температуры воздуха, влажности и т.д., я давно сделал.
Всё нужно начать с накопления данных в истории свойства. посмотреть просто.
- blackangel
- Сообщения: 148
- Зарегистрирован: Пт окт 21, 2016 2:00 pm
- Благодарил (а): 31 раз
- Поблагодарили: 13 раз
Re: График расходы воды.
Эх... если бы поподробнее про реализацию... у меня на delta Т.к с объектов остались.
- blackangel
- Сообщения: 148
- Зарегистрирован: Пт окт 21, 2016 2:00 pm
- Благодарил (а): 31 раз
- Поблагодарили: 13 раз
Re: График расходы воды.
По сути надо написать сценарий который будет записывать в объект значения от импульса, Т.е прибавлять. Ну и раз в какой то промежуток обнулять.... верно? Если да то поделитесь скриптом если не сложно.
-
- Сообщения: 708
- Зарегистрирован: Сб авг 18, 2012 10:21 am
- Благодарил (а): 26 раз
- Поблагодарили: 183 раза
Re: График расходы воды.
При использовании мегад данные забираю каждый час такblackangel писал(а):По сути надо написать сценарий который будет записывать в объект значения от импульса, Т.е прибавлять. Ну и раз в какой то промежуток обнулять.... верно? Если да то поделитесь скриптом если не сложно.
Код: Выделить всё
$state = file_get_contents('http://192.168.2.95/sec/?pt=3&cmd=get');
$value = explode('/',$state);
sg('countWater.status',substr($value[0],0));
sg('countWater.const',substr($value[1],0)/100);
sg("countWater.updatedTime",date("H:i",time()));
Код: Выделить всё
$state = file_get_contents('http://192.168.2.95/sec/?pt=3&cmd=get');
$value = explode('/',$state);
sg('countWater.status',substr($value[0],0));
sg('countWater.24h',substr($value[1],0)/100);// записываем показания за сутки
sg("countWater.updatedTime",date("H:i",time()));
getUrl('http://192.168.2.95/sec/?pt=3&cnt=0');// сбрасываем счетчик в 0
- Bagir
- Сообщения: 1613
- Зарегистрирован: Вт сен 17, 2013 6:46 pm
- Откуда: Ярославская область город Углич
- Благодарил (а): 212 раз
- Поблагодарили: 375 раз
Re: График расходы воды.
Не сложно конечно, весь мой код всегда коннекте, чтобы другие смогли что то для себя найти. Просто нет такого универсального скрипта, да и быть не может. Но мы можем прямо сейчас начать решать эту задачу по шагам.
Если стоит задача не просто посчитать итоги, а построить график, то нам понадобится свойство с историей. Вот с него и начнем.
Есть класс keySensors. В нем могут располагаться объекты разных датчиков. Но не всем им нужно хранить историю. Поэтому изначально у свойства status история не включена. Я предлагаю создать в этом классе подкласс, и назвать его flowmeter.
В этом подклассе у нас будут находиться объекты датчиков, которые что то измеряют. Например воду по импульсам. Добавим в наш подкласс одноименное свойство status. Затем нужно включить историю свойства.
После этого можно через браузер вызнать метод нашего объекта и перейти к написанию его кода
Для начала добавим в код метода просто say('Это случилось'); или debmes('Это случилось'); чтобы удостовериться, что код вызываемого метода исполняется.
На пока достаточно, а потом потом перейдем к записи данных в историю свойства status. Жду результатов с картинками.
Если стоит задача не просто посчитать итоги, а построить график, то нам понадобится свойство с историей. Вот с него и начнем.
Есть класс keySensors. В нем могут располагаться объекты разных датчиков. Но не всем им нужно хранить историю. Поэтому изначально у свойства status история не включена. Я предлагаю создать в этом классе подкласс, и назвать его flowmeter.
покажу на примере моего подкласса для температурных датчиковПоказать
СпойлерПоказать
На пока достаточно, а потом потом перейдем к записи данных в историю свойства status. Жду результатов с картинками.