0
Є відповідь

Индексация тарифов

Иван 5 років тому в Дашбоард и виджеты оновлено Moy 6 місяців тому 10

Тарифы на электроэнергию меняются раз в полгода. Как менять текущий тариф понятно, но в этом случае пересчитается и статистика за предыдущие периоды?! Как оставить историю не тронутой? Иначе истинные расходы за прошлые периоды будут не корректными!

Відповідь

Відповідь
Є відповідь

To calculate a new tariff without losing data for the previous period, you need to make a complex expression.

- In the widget settings, in the Arithmetic operation select f(x)

- click on the Edit icon and set the conditions:


d.TIME < new Date(2022,0,1) ? d.Ch1*0.05 :
d.TIME < new Date(2023,0,1) ? d.Ch1*0.06 :
d.Ch1*0.07;

where

new Date(2023,0,1) is January 1, 2023

Image 1547

before January 1, 2022 at the rate of 0.05

before January 1, 2023 at the rate of 0.06

everything will continue at the rate of 0.07


Replace the values with your tariff accordingly.


With each tariff change, you can add a new line of conditions in the same format new Date(Year, Month, Day).

Note that the month starts at 0. (0 - January, 1 - February, ... , 11 - December.)

Обсуждается

Добрый день.

Действительно, если тариф изменить, то история будет посчитана по новому тарифу, т.к. все вычисления делаются на лету и базе не сохраняются, но решение есть. В меню "Арифметическая операция" использовать f(x) и добавлять по фрагменту простого кода при изменении тарифов.

Сразу посмотрим на примере:

- Есть тариф по объему, название в списке данных устройства [TV29]
Название данных отображается в колонке Данные в списке виртуальных значений.

- Допустим:

с 1 сентября 2019 года тарифы выросли на 10%

с 1 января 2020 года тарифы выросли еще на 15%

- Чтобы не плодить каждый раз новый тариф будем просто умножать на коэффициенты *1.1 и *1.15

- В настройках виджета в меню Арифметическая операция выбираем f(x) и нажимаем иконку Изменить

- При создании собственных функций можно использовать любые данные с устройства в том числе время [d.TIME] и наш тариф [TV29]. Весь список доступных для расчетов данных обычно отображен слева от окна редактирования кода.

Для определения времени, когда надо использовать соответствующий тариф, надо добавить проверку на дату.

Для вычисления нужной даты используем функцию:

new Date(ГГГГ, ММ, ДД)
ГГГГ - год,
ММ - месяц от 0 до 11 (обратите внимание на порядковый номер месяца, январь - 0, февраль - 1 и тд)
ДД - день от 1 до 31

Итоговая функция по нашим условиям примет вид:

d.TIME < new Date(2019,8,1) ? d.TV29 :
d.TIME < new Date(2020,0,1) ? d.TV29*1.1 :
d.TV29 * 1.1 * 1.15;

В первой строке используется тариф до 01.09.2019, т.е. просто d.TV29

Во второй строке тариф до 01.01.2020, на 10% дороже, тариф умножен на коэффициент 1.1

В третьей строке текущий тариф, еще на 15% дороже.

Image 671

В будущем, например, если с 01.07.2020 цены вырастут еще на 5% , то надо вставить соответствующую строку с условием и подкорректировать текущий тариф в последней строке кода:

d.TIME < new Date(2019,8,1) ? d.TV29 :
d.TIME < new Date(2020,0,1) ? d.TV29*1.1 : d.TIME < new Date(2020,6,1) ? d.TV29*1.1*1.15: d.TV29 * 1.1 * 1.15 * 1.05;

Готово, теперь на графиках и в таблицах будут актуальные затраты в соответствии с периодом.

А, що у даному прикладі значить "наш тариф [TV29]" ? 

Де ми прописуємо наш базовий тариф на нашому пристрої, щоб потім ми його індексували?

+1

Це назва вашого створеного тарифу для арифметичних операцій.

В меню Віртуальні, стовпчик ДАНІ

спасибо! Что за язык используется? (например, что значит ?  : и тд)

Синтаксис JavaScript, обозначает следующее:

УСЛОВИЕ ? ДЕЙСТВИЕ_ЕСЛИ_ДА : ДЕЙСТВИЕ_ЕСЛИ_НЕТ;

В нашем случае на месте ДЕЙСТВИЕ_ЕСЛИ_НЕТ вложено новое условие, затем еще одно условие и т.д.

Відповідь
Є відповідь

To calculate a new tariff without losing data for the previous period, you need to make a complex expression.

- In the widget settings, in the Arithmetic operation select f(x)

- click on the Edit icon and set the conditions:


d.TIME < new Date(2022,0,1) ? d.Ch1*0.05 :
d.TIME < new Date(2023,0,1) ? d.Ch1*0.06 :
d.Ch1*0.07;

where

new Date(2023,0,1) is January 1, 2023

Image 1547

before January 1, 2022 at the rate of 0.05

before January 1, 2023 at the rate of 0.06

everything will continue at the rate of 0.07


Replace the values with your tariff accordingly.


With each tariff change, you can add a new line of conditions in the same format new Date(Year, Month, Day).

Note that the month starts at 0. (0 - January, 1 - February, ... , 11 - December.)

Зробить віртуальні значення для День та Ніч, які рахують Вати.

Якщо в тарифному калькуляторі замість тарифів вказати 1 або 0 то результатом будуть Вати споживання.
https://support.smart-maic.com/communities/1/topics/171-rasschet-stoimosti-s-dvuhzonnyim-tarifom
та
https://support.smart-maic.com/communities/1/topics/508-tarif-skolko-kvt-v-mesyats-po-nochnomu-i-po-dnevnomu

Наприклад, День це [d.TT30], а Ніч це [d.TT32]

В налаштуваннях віджета в Арифметичній операції f(x):

День в грн:

d.TIME < new Date(2023,5,1) ? (d.TT30 * 0.00168) :
d.TIME < new Date(2024,5,1) ? (d.TT30 * 0.00264) : (d.TT30 * 0.00432)

Ніч в грн:

d.TIME < new Date(2023,5,1) ? (d.TT32 * 0.00084) :
d.TIME < new Date(2024,5,1) ? (d.TT32 * 0.00132) : d.TT30*0.00216

Де:

new Date(2023,5,1) - це 01 червня 2023 р.

new Date(2024,5,1) - це 01 червня 2024 р.

і т.д.

При копіпасті вашого коду, пише NaN

Нажаль просто копіпастить не вийде. Треба трохи розібратись, як це працює.

Для початку подивиться яка назва даних у ваших віртуальних значень, та відповідно поміняйте при копіпасту.

Image 2241

так розібрався і вже створив правила

Є нюанси:

1) в мене створено 12 правил на кожну фазу  по 4 шт (день квт і грн, ніч квт і грн, загальний квт і сума день+ ніч (зробив через функції))  І кожен раз коли створюю/редагую мені проронує обновити сторінку (дуже нервує)

2)так як правила одинакові , а замінити для кожного потрібно лише фазу, то функції копіювання немає. В ручну писав всі 


дякую