#grafana #influxdb #influxql #chronograf
#графана #influxdb #influxql #хронограф
Вопрос:
Я собираю показатели из своего philips hue bridge и помещаю их в InfluxDB. Я хотел бы иметь возможность отображать некоторые из этих показателей на панели мониторинга.
Базовый запрос выглядит следующим образом:
SELECT mean("state.bri") AS "mean_state.bri" FROM "telegraf_hue"."autogen"."hue" WHERE time > :dashboardTime: AND "lamp"='Couch' GROUP BY time(:interval:) FILL(null)
Это возвращает хороший график, который показывает уровень яркости источника света.
Проблема с этим запросом заключается в том, что индикатор фактически не горит все это время. Мост оттенков возвращает последний уровень яркости, даже если он выключен.
Я могу увидеть, включено ли оно, проверив "state.on"
значение true
или false
.
SELECT mean("state.bri") AS "mean_state.bri" FROM "telegraf_hue"."autogen"."hue" WHERE "state.on" = true AND time > :dashboardTime: AND "lamp"='Couch' GROUP BY time(:interval:) FILL(null)
Это возвращает только точки, в которых горит индикатор.
Запрос, который освещает результаты
Что я хотел бы сделать что-то вроде CASE
инструкции, подобной в MySQL:
SELECT CASE WHEN "state.on" = true THEN mean("state.bri") ELSE 0 END FROM "telegraf_hue"."autogen"."hue" WHERE time > :dashboardTime: AND "lamp"='Couch' GROUP BY time(:interval:) FILL(null)
Это не работает. Сбой с:
Request failed with status code 400
Как я могу выполнить нечто подобное с помощью InfluxDB? В конечном счете, я буду создавать панели мониторинга в Grafana, если это имеет значение.
Комментарии:
1. Во influxql нет
case
илиif
эквивалентов mysql. Что не так с вашим вторым вариантом? Он показывает, что вы хотите: нет света <-> нет данных на графике. Если вам действительно нужны нулевые точки данных на графике для state.on = false, вам придется использоватьselect ... from (select ...) ...
синтаксис с fill(0) во внешнем запросе.