Я начал регистрировать данные со своего Smart Meter с помощью Node-RED около месяца назад, это выглядело как данные json (полезная нагрузка - важный бит):
{
"topic":"stat/smartmeter/all",
"payload":"{
\"kwh_low_tarrif\":866.696,
\"kwh_high_tarrif\":902.156,
\"current_tarrif\":1,
\"current_watt_draw\":485,
\"gas_timestamp\":1554675307000,
\"gas_total\":326.509,
\"kwh_combined\":1768.852
}",
"qos":0,
"retain":false,
"_topic":"stat/smartmeter/all",
"_msgid":"db4ebc0.72b9a48"
}
Проблема с этими данными заключается в том, что я провел расчеты затрат на электричество и газ на панели инструментов Grafana:
Я жестко запрограммировал затраты на приборной панели, используя математическую функцию в выборе данных InfluxDB:
Там вы можете видеть, что я использовал значение (или, скорее, цену) 0,230662 евро за кВтч использованной электроэнергии. Теперь, глупо, я никогда не думал о желании иметь возможность проводить расчеты в течение нескольких лет, когда эта цена будет колебаться, поэтому, как только я обнаружил публичную конечную точку API моего поставщика электроэнергии, где я мог считывать цены для моего конкретного плана, я добавил его к измерениям теперь данные json выглядят так:
{
"topic":"stat/smartmeter/all",
"payload":"{
\"kwh_low_tarrif\":866.696,
\"kwh_high_tarrif\":902.156,
\"kwh_low_price\":0.230662,
\"kwh_high_price\":0.230662,
\"current_tarrif\":1,
\"current_watt_draw\":485,
\"current_kwh_price\":0.230662,
\"gas_timestamp\":1554675307000,
\"gas_total\":326.509,
\"gas_price\":0.804565,
\"kwh_combined\":1768.852
}",
"qos":0,
"retain":false,
"_topic":"stat/smartmeter/all",
"_msgid":"db4ebc0.72b9a48"
}
Единственная проблема (и мои основные вопросы с ней) сейчас заключается в том, что:
1) Как мне написать запрос, который использует это значение в расчете цены? Используемый сейчас запрос (из скриншота выше):
SELECT distinct("kwh_combined") * 0.230662 FROM "smartmeter" WHERE $timeFilter GROUP BY time($__interval) fill(linear)
2) Как мне засыпать данные? (записать эти цены на электричество и газ в базу данных с начала моей регистрации, добавив их к измерениям, которые я тогда делал)
Я бы предпочел, чтобы значения, которые я ранее жестко запрограммировал на своей панели, были включены в измерения, которые я уже выполнил, вместо того, чтобы писать исключение для случаев, когда измерения отсутствуют или 'нулевые' .. Я имею в виду, данные сам по себе настолько статичен, насколько это возможно, поскольку цены не изменились, так что это не может быть ТАК сложно, не так ли? Даже если для этого потребуется перестроить данные, могу ли я просто вставить его в новый сбор данных и сам добавить поля?
Пожалуйста, скажите мне, что это возможно для InfluxDB ...
Я имею в виду, что в MySQL это будет простой оператор ALTER TABLE с, возможно, простой вставкой записей, которые имеют нулевые значения.
.. или для меня неоправданно просить систему регистрации временных рядов изменить свою структуру данных уже зарегистрированных данных, и я слишком много спрашиваю об InfluxDB?