NEWS
Скрипт счетчика
-
Мой код настолько ужасен, что не хочется его комментировать?
Или он настолько хорош, что нечего добавить?
Меня смущает введение задержки, вот этот кусок:
setTimeout(function() { setState('PowerMeter_count_summ', ((getState('PowerMeter_count_day').val) + (getState('PowerMeter_count_night').val)), true); }, 15); //без этой задержки берется предыдущее значение!
может быть можно изящнее сделать?
еще не нравится расчет временного интервала между импульсами и подсчет "мгновенного" потребления:
newBlink = (new Date().getTime()); interval = newBlink - lastBlink; watt = (3600000 / interval) / ppwh; setState('PowerMeter_WATT_current', Math.round(watt), true); lastBlink = newBlink; ```` `
Это игрушки
-
..Это игрушки `
Вся наша жизнь - игра…но хотелось бы услышать конкретную критику и советы по скрипту (железо определено, дополнительную ардуину чисто на счетчики ставить не планирую)
-
Мой код настолько ужасен, что не хочется его комментировать?
Или он настолько хорош, что нечего добавить?
Меня смущает введение задержки, вот этот кусок:
setTimeout(function() { setState('PowerMeter_count_summ', ((getState('PowerMeter_count_day').val) + (getState('PowerMeter_count_night').val)), true); }, 15); //без этой задержки берется предыдущее значение!
может быть можно изящнее сделать?
еще не нравится расчет временного интервала между импульсами и подсчет "мгновенного" потребления:
newBlink = (new Date().getTime()); interval = newBlink - lastBlink; watt = (3600000 / interval) / ppwh; setState('PowerMeter_WATT_current', Math.round(watt), true); lastBlink = newBlink; ```` ` можно изящнее, вместо задержки подписаться на изменение
PowerMeter_count_day и PowerMeter_count_night. А чем интервал не нравится?
-
можно изящнее, вместо задержки подписаться на изменение
PowerMeter_count_day и PowerMeter_count_night. `
спасибо, попробую
@instalator:А чем интервал не нравится? `
для электросчетчика пойдет ибо он всегда тикает, для водяных счетчиков надо что-то другое, т.к. в основном они "молчат" и "мгновенное" потребление превращается в "последнее измеренное" -
можно изящнее, вместо задержки подписаться на изменение
PowerMeter_count_day и PowerMeter_count_night. `
спасибо, попробую
@instalator:А чем интервал не нравится?
для электросчетчика пойдет ибо он всегда тикает, для водяных счетчиков надо что-то другое, т.к. в основном они "молчат" и "мгновенное" потребление превращается в "последнее измеренное"
так а как для воды рассчитать мгновенное если один импульс это 10 литров в среднем? Да и нужно ли оно для воды. -
первое что приходит - просто по расписанию запускать тот кусок с интервалом и проверять счетчик, если не изменился - обнулять "мгновенное потребление"
-
первое что приходит - просто по расписанию запускать тот кусок с интервалом и проверять счетчик, если не изменился - обнулять "мгновенное потребление" `
А проще по-моему просто ловить изменение счётчика (импульс) это и будет означать что вот вот утек стакан воды -
а как зафиксировать, что кран закрыли и импульсов в ближайшее время не предвидится?
-
а как зафиксировать, что кран закрыли и импульсов в ближайшее время не предвидится? `
Рассчитать максимальное время между импульсами при минимальном потоке воды и через это время обнулять значение якобы мгновенного расхода. Либо делить его на это время -
Счётчик воды работает конечно импульсно, но! У него контакт замыкается каждые 10 литров, при этом если вы в это время воду прекратили расходовать, он будет замкнут и постоянно включён!
Так как у меня контроллер Wago и, по сути, вся логика на нём, то счётчики воды реализованы через Функциональный блок 'инкрементный счетчик' (CTU), а уже от него передаются в ioBroker/
-
..он будет замкнут и постоянно включён!.. `
ну и что, я-то подписываюсь на изменение значения счетчика, на не состояние порта..