Графики IH Pro
-
А есть возможность фиксировать показание счетчика на начало месяца? Все приходящие в голову мысли связаны с созданием кучи дополнительных объектов… Мысль переводить на ходу текущие показания в рубли, чтобы был виден расход не только в кубах\киловаттах, но и сразу в денежном выражении
В принципе, каждый счетчик уже имеет свойства - показания на начало месяца, дня и часа
Их можно использовать в сценарии:
> > const meter = Device("METER1"); > > script({ > > start() { > > this.log("На начало месяца:"+meter.getParam('uptoMonth')); > > this.log("На начало дня:"+meter.getParam('uptoDay')); > > this.log("На начало часа:"+meter.getParam('uptoHour')); > > } > > }); > > > >
Супер! Получается можно из текущих показаний вычитать "на начало месяца" и умножать на стоимость. Спасибо!
Да, но у вас с февраля только это будет работать, так как счетчики запустили в январе
-
Может… как то сценариями решить? Два виртуальных устройства (получаем данные с канала, который тупо считает импульсы), в каждом устройстве свой делитель (количество импульсов на кВт/час), а время запуска сценариев уже реализовано
Да, хорошая идея, такой вариант вполне работоспособен: два виртуальных счетчика плюс дискретный датчик импульса.
Значение формируется сценарием. Время и коэффициенты для простоты заложить прямо в сценарий
Примерно так:
> /** > * @name Двухтарифный счетчик для имульсного входа > * @desc > * @version 4 > */ > const meterDay = Device("Meter"); > const meterNight = Device("Meter"); > const pulse = Device("SensorD"); > > startOnChange(pulse); > > script({ > dayWeight:0.1, // дневной коэф-т > nightWeight:0.05, // ночной коэф-т > start() { > const dt = new Date(); > if (dt.getHours() < 7 || dt.getHours()>22) { // c 22:00 - 7:00 ночной тариф > this.assign(meterNight, 'aval', meterNight.value+this.nightWeight); > } else { > this.assign(meterDay, 'aval', meterDay.value+this.dayWeight); > } > this.assign( pulse, 'value', 0); // сброс импульса > } > }); > >
Только тип датчика в каналах надо поменять. Нужен просто дискретный датчик
И виртуальным датчикам присвоить начальное значение через интерфейс
Настроил у себя аналогичную конфигурацию и сценарий, но есть проблема. Если сценарий прервался и канал с импульсами в это время был в статусе ON, то он уже не сбросится и подсчет остановится. Пытался сделать сценарий, который скидывает сенсор в OFF через 5 секунд, но не взлетело
-
Да, хорошая идея, такой вариант вполне работоспособен: два виртуальных счетчика плюс дискретный датчик импульса.
Значение формируется сценарием. Время и коэффициенты для простоты заложить прямо в сценарий
Примерно так:
> > > /** > > > * @name Двухтарифный счетчик для имульсного входа > > > * @desc > > > * @version 4 > > > */ > > > const meterDay = Device("Meter"); > > > const meterNight = Device("Meter"); > > > const pulse = Device("SensorD"); > > > > > > startOnChange(pulse); > > > > > > script({ > > > dayWeight:0.1, // дневной коэф-т > > > nightWeight:0.05, // ночной коэф-т > > > start() { > > > const dt = new Date(); > > > if (dt.getHours() < 7 || dt.getHours()>22) { // c 22:00 - 7:00 ночной тариф > > > this.assign(meterNight, 'aval', meterNight.value+this.nightWeight); > > > } else { > > > this.assign(meterDay, 'aval', meterDay.value+this.dayWeight); > > > } > > > this.assign( pulse, 'value', 0); // сброс импульса > > > } > > > }); > > > > > >
Только тип датчика в каналах надо поменять. Нужен просто дискретный датчик
И виртуальным датчикам присвоить начальное значение через интерфейс
Настроил у себя аналогичную конфигурацию и сценарий, но есть проблема. Если сценарий прервался и канал с импульсами в это время был в статусе ON, то он уже не сбросится и подсчет остановится. Пытался сделать сценарий, который скидывает сенсор в OFF через 5 секунд, но не взлетело
Добрый день! А почему вдруг сценарий прерывается? Может лучше эту проблему решить? У меня сейчас эта проблема только при перезагрузке сервера после обновления, но коррекцию можно сделать вручную. А на даче сервер пашет не выключаясь, по сценариям за полгода сбоев небыло)
Потому что я в процессе настройки, много правок, иногда приводят к ошибке, иногда сохранение сценария не вовремя
-
Добрый день! А почему вдруг сценарий прерывается? Может лучше эту проблему решить? У меня сейчас эта проблема только при перезагрузке сервера после обновления, но коррекцию можно сделать вручную. А на даче сервер пашет не выключаясь, по сценариям за полгода сбоев небыло)
Потому что я в процессе настройки, много правок, иногда приводят к ошибке, иногда сохранение сценария не вовремя
Интересно! Сейчас пробовал у себя так так воссоздать, но сценарий нормально отрабатывает со следующего импульса устройства. У меня на счетчике Меркурий, а у Вас какое устройство отслеживает?
Тоже меркурий 200.02. Расскажите как прикрепили фототранзистор к диоду, никак не сочиню крепление
-
Интересно! Сейчас пробовал у себя так так воссоздать, но сценарий нормально отрабатывает со следующего импульса устройства. У меня на счетчике Меркурий, а у Вас какое устройство отслеживает?
Тоже меркурий 200.02. Расскажите как прикрепили фототранзистор к диоду, никак не сочиню крепление
Кусок от авторучки моей Школьницы и моментальный клейIMG_1290.jpg
Надзорные органы не поругают за клей? :roll: я взял кусок фломастера и пластелин
-
Интересно! Сейчас пробовал у себя так так воссоздать, но сценарий нормально отрабатывает со следующего импульса устройства. У меня на счетчике Меркурий, а у Вас какое устройство отслеживает?
Тоже меркурий 200.02. Расскажите как прикрепили фототранзистор к диоду, никак не сочиню крепление
Давайте настройки сверим?
Снимок1.PNG
Снимок2.PNG
Снимок3.PNG
Снимок4.PNG
А у вас IH версии 4.4.11? У меня все тоже самое за исключением окна настройки канала. Параметр "Строка запроса состояния" у меня исчезает при значении периода опроса "0". Не должно влиять на проблему, но интересно различия версий это или что-то еще.
-
Давайте настройки сверим?
Снимок1.PNG
Снимок2.PNG
Снимок3.PNG
Снимок4.PNG
А у вас IH версии 4.4.11? У меня все тоже самое за исключением окна настройки канала. Параметр "Строка запроса состояния" у меня исчезает при значении периода опроса "0". Не должно влиять на проблему, но интересно различия версий это или что-то еще.
Версия та же. У меня не исчезает. А версия плагина MegaD 1.1.10?
1.1.5, говорит актуальная. У Вас с гитхаба?
-
Версия та же. У меня не исчезает. А версия плагина MegaD 1.1.10?
1.1.5, говорит актуальная. У Вас с гитхаба?
Да. Работает прекрасно!
Разработчики обещали на этой неделе штатными средствами обновить. Решил подождать…
-
Помимо моих всех предыдущих предложений/доработок (часть еще не реализована) предлагаю сделать кнопку на графике, которая позволяет открыть его в новом окне на весь экран, чтобы детально "рассмотреть" данные.
-
Добрый день! Подскажите пожалуйста формат времени в строке if (dt.getHours() < 7 || dt.getHours()>22) { // c 22:00 - 7:00 ночной тариф если нужно время переключения 21 час 55 мин 34 сек ?
Добрый день!
Вариант 1.
(dt.getHours() < 7 || dt.getHours()>21 || (dt.getHours()==21 && (dt.getMinutes()>55 || dt.getMinutes()==55&&dt.getSeconds()>=34))
Вариант 2. Сформировать временные точки, потом с ними сравнивать
const dtD = new Date();
dtN.setHours(7);
dtN.setMinutes(0);
dtN.setSeconds(0);
const dtN = new Date();
dtN.setHours(21);
dtN.setMinutes(55);
dtN.setSeconds(34);
const dt = new Date(); // Это сейчас
if (dt<=dtD || dt>=dtN ) // ночной тариф
Первый вариант короче, второй проще сопровождать (менять)
-
Немного дорабатывал отображение графиков и при изменении высоты timeline до 158 обнаружил что график "криво" загружается. Подробности в скриншоте:
-
Немного дорабатывал отображение графиков и при изменении высоты timeline до 158 обнаружил что график "криво" загружается. Подробности в скриншоте:
Графики_Timeline_Криво_загружается.png
Добрый день, мы постараемся решить данную проблему, спасибо за помощь
-
В принципе, каждый счетчик уже имеет свойства - показания на начало месяца, дня и часа
Их можно использовать в сценарии:
> > > const meter = Device("METER1"); > > > script({ > > > start() { > > > this.log("На начало месяца:"+meter.getParam('uptoMonth')); > > > this.log("На начало дня:"+meter.getParam('uptoDay')); > > > this.log("На начало часа:"+meter.getParam('uptoHour')); > > > } > > > }); > > > > > >
Супер! Получается можно из текущих показаний вычитать "на начало месяца" и умножать на стоимость. Спасибо!
Да, но у вас с февраля только это будет работать, так как счетчики запустили в январе
Добрый день!
Пришел февраль, а параметр uptoMonth берет какие-то не те показания, явно не на полночь 1го февраля, либо на 30 дней назад, либо на 1 января. Как можно отдебажить и проверить?
Строка скрипта такая:
cwsum = (metercwv.value + metercwt.value - metercwv.getParam('uptoMonth') - metercwt.getParam('uptoMonth'))*this.cw;
-
Добрый день!
Пришел февраль, а параметр uptoMonth берет какие-то не те показания, явно не на полночь 1го февраля, либо на 30 дней назад, либо на 1 января. Как можно отдебажить и проверить?
Строка скрипта такая:
cwsum = (metercwv.value + metercwt.value - metercwv.getParam('uptoMonth') - metercwt.getParam('uptoMonth'))*this.cw;
Добрый день!
С формулой на первый взгляд все в порядке.
Для проверки можно сценарием вывести значения uptoMonth, uptoDay в лог, как в скрипте выше.
Сценарий можно запустить вручную и посмотреть значения по каждому датчику отдельно
Можно для начала вручную отредактировать uptoMonth в файле проекта:
/var/lib/intrahouse-c/projects/<ваш проект>/operative/meters.json
-
Добрый день!
Пришел февраль, а параметр uptoMonth берет какие-то не те показания, явно не на полночь 1го февраля, либо на 30 дней назад, либо на 1 января. Как можно отдебажить и проверить?
Строка скрипта такая:
cwsum = (metercwv.value + metercwt.value - metercwv.getParam('uptoMonth') - metercwt.getParam('uptoMonth'))*this.cw;
Добрый день!
С формулой на первый взгляд все в порядке.
Для проверки можно сценарием вывести значения uptoMonth, uptoDay в лог, как в скрипте выше.
Сценарий можно запустить вручную и посмотреть значения по каждому датчику отдельно
Можно для начала вручную отредактировать uptoMonth в файле проекта:
/var/lib/intrahouse-c/projects/<ваш проект>/operative/meters.json
Там хранится неверное значение, причем если поменять его вручную, то оно не применяется без перезапуска IH
-
Там хранится неверное значение, причем если поменять его вручную, то оно не применяется без перезапуска IH
Да, все верно, при редактировании файлов напрямую сервер нужно перезагрузить
А значения uptoDay, uptoHour тоже неверные?
-
Там хранится неверное значение, причем если поменять его вручную, то оно не применяется без перезапуска IH
Да, все верно, при редактировании файлов напрямую сервер нужно перезагрузить
А значения uptoDay, uptoHour тоже неверные?
uptoHour и uptoDay верные…
-
Там хранится неверное значение, причем если поменять его вручную, то оно не применяется без перезапуска IH
Да, все верно, при редактировании файлов напрямую сервер нужно перезагрузить
А значения uptoDay, uptoHour тоже неверные?
Не для всех счетчиков создался параметр uptoMonth, сегодня заводил новые и обратил внимание. Если дописать руками - то начинает работать. По тем, где uptomonth изначально был - проверил по графикам показания - они действительно далеко не на 1е число.
-
Не для всех счетчиков создался параметр uptoMonth, сегодня заводил новые и обратил внимание. Если дописать руками - то начинает работать. По тем, где uptomonth изначально был - проверил по графикам показания - они действительно далеко не на 1е число.
Проверим. Время до момента uptoMonth у нас еще есть
-
Подскажите пожалуйста,
имеются клапана теплого пола нормально открытые.
Т.е. когда на них подается 0, петля открыта, пол работает, когда 1 - петля закрыта, пол выключен.
А таймлайн строится по значению. И на графике выделеы периоды, когда петли выключены.
Как инвертировать?