Откуда 1 миллион в умном доме

Смотреть видео на Youtube

Я очень давно записываю очень много значений в базу данных о разных параметрах в умном доме, у меня эта база данных сделана на внешнем хостинге, потому что она внутренних ресурсах, конечно если там микрокомпьютер у меня используется с sd-картой, то во-первых она туда не влезет и на производительность будет сильно влиять, и потом анализировать эту базу данных тоже будет достаточно сложно на этом микрокомпьютере, и конечно может в один прекрасный момент вообще эта карта отключиться и перестать работать, и конечно не хотелось бы эту базу потерять.

На хостинге у меня уже очень много данных, у меня примерно где-то 1 миллион записей в месяц происходит это очень конечно много и причины этого очень разные, иногда это бывают ошибки когда я просто там по какой-нибудь случайности сделал какой-нибудь сценарий и он начинает, например менять параметр свой постоянно и эти все значения они будут записываться в эту базу, что например устройство включилось потом оно через какое-то время выключилось или там изменилась освещенность в комнате и каждый раз это записываться начало, то есть конечно таким образом очень легко можно там делать миллион записей только с одного параметра если например каждые 10 секунд записывать в течение месяца информацию это будет очень много и конечно рост базы, он будет таким непредсказуемым, поэтому я периодически начинаю оптимизировать ищу такой параметр и с какой периодичностью целесообразно записывать базу, то есть с каждого датчика это может быть, и с каждого устройства это может быть очень разных много параметров быть, то есть это например датчик температуры там записывается и сама температура, записывается влажность, записываться состояние батарейки, качество связи и поэтому конечно это все нужно где-то хранить.

Некоторые значения меняются очень часто например таже освещенность, или допустим у меня есть счетчик электроэнергии, он тоже постоянно меняет значение и их тоже приходится записывать, но здесь у меня как сделано, что во-первых я сохраняю базу значение последнее для того, чтобы в принципе к нему обращаться, а если мне нужно для каких-то сценариев например значение будет, то я его сохраняю предыдущее, если оно меняется, например я могу запустить какой-то сценарий, но при сохранении собственно он у мене так же и попадает и базу и там и остается, то есть я конечно не агрегирую их не удаляю старые и они просто там хранятся и какие-нибудь если возникают ситуации я могу открыть эту базу посмотреть там, как менялось значение по секундам фактически и понять, что так-то происходило и конечно это полезная информация.

Но если вообще не ограничивать, то запись она может происходить каждую секунду и тогда размер будет очень большой базы и поэтому я делаю так, что там где это возможно у меня есть ограничения, например что запись не чаще чем раз в 10 секунд или раз минуту, но только если какие-то большие изменения существенные возникают, больше кого-то диапазона, то в этом случае они записываются принудительно, но если это незначительные изменения, например есть розетки, которые измеряют напряжение электросети и оно там на один вольт повышается на один вольт падает периодически, конечно эта информация никакой ценности не несет и в этом случае, конечно можно записывать гораздо реже.

Но можно вообще допустим некоторую информацию записывать например раз в час, но я записываю не больше одного часа, чтобы у меня потом статистика, там графики строились именно не меньше часа, но по большому счету раз в час это довольно редко получается и записей очень мало за месяц набегает, то есть это конечно удобно и такие параметры которые вообще не меняются их можно просто записывать для того, чтобы они были, или например 5 розеток в квартире стоит, то можно записать только с одной потому что напряжение оно скорее всего быть везде одинаково, а это изменение либо погрешность просто измерения конкретной розетки, ну либо если к ней подключен какой-нибудь потребитель мощный, то конкретно на этой розетке будет проседать напряжение сети и она будет показывать чуть меньше чем другие, но это абсолютно не нужная информация, потому что эта розетка также измеряет и потребление тока и в амперах и киловаттах, поэтому в принципе это и так видно и конечно через напряжение эту информацию отслеживать нет смысла.

Я в базу записываю практически все параметры всех устройств, например там есть датчики открытия двери, которые тоже очень много параметров передают, это не только открытие и закрытие, а еще и плюсом, например батарейку и силу сигнала, и это я тоже сохраняю, во-первых для того, чтобы видеть, что батарейка там в каком-то статусе уже и её когда-нибудь нужно будет менять, через определенное время и не пропустить этот момент, чтобы она не отключилась, но и сигнал нужно тоже отслеживать периодически, потому что если по какой-то причине сеть неправильно сконфигурировалась, например zigbee, то конечно нужно будет это увидеть и исправить, а иначе просто этотдатчик начнет очень сильно тратить батарейку и долго не протянет в таком режиме работы и качестве связи.

На многихе устройствах конечно не так много параметров, например есть выключатели у них в принципе это только состояние, ну если это трехкнопочный выключатель, то состояние каждой кнопки, ну точнее реле, которое привязано к этой кнопке, ну и еще я записываю общее значение с этого выключателя для того, чтобы в целом понимать выключатель в режиме включенном находится, или он в полностью выключенном, это удобно когда например я говорю выключи свет, то действительно там, или нажимаю какую-то кнопку, которая просто переключает этот выключатель, то таким образом я вижу что что-то включено и именно нужно его например выключить, а не так что часть реле будет переключена в состояние включено, а часть будет переключена в состояние выключено, чтобы не было такого конечно светопредставления.

Разные современные устройства, например светодиодные ленты или разные светильники, они конечно очень много параметров в себе содержат и конечно нужно каждый раз думать нужно ли это записывать или нет, например если светодиодная лента имеет разные цвета, то там для красного, зеленого, синего нужно тоже иметь значение, если например я хочу как-то их, эти цвета, запоминать и потом восстанавливать или допустим их менять на какой-то определенный диапазон, значение сдвигать, то конечно это нужно где-то сохранять, иначе получается, что если я не знаю значение, то я не могу правильно определить в каком режиме сейчас лента находится и как-то это обработать корректно в сценариях, поэтому кроме этих трех цветов еще сохраняется вариант температура, если это белый свет то какая у него температура, если еще яркость надо сохранять, потому что сейчас в основном так, что есть отдельно значение температуры света белого или цветное значение, определенного цвета, то еще и яркость к этому всему добавляется, также еще может быть разные режимы работы, допустим светильника, это тоже нужно где-то отдельно сохранять и этих режимов может быть достаточно много разных и тоже нужно думать, но здесь конечно проще если например это просто изменение то можно один раз сохранить и принципе не менять, но например если идет какое-то диммирование, то таких значений очень много получается и не очень понятно, там сохранять только в конце когда диммирование закончится или сохранять каждое значение, но если например у меня например идет обработка, не все диммеры поддерживают именно режим плавного диммирования, то есть это по сути нужно делать вручную, то есть на сохранить значение, потом считать последнее значение, его на какой-то инкримент изменить, и после этого изменить значение и снова сохранить базу, и это повторять там несколько раз, сколько нужно, чтобы там к определенную яркость или режим включить.

Очень много значений приходится сохранять например если я отслеживаю разные устройства в сети, то есть если это порядка сотни устройств у меня, то например wi-fi, то конечно там нужно при пинге устройства или изменении его статуса постоянно записать его значение, считать его значение, то есть раньше я пинговал эти все устройства и определенное время я записывал вообще все значения, все это если там есть 200 устройств, то у меня фактически было 200 значений раз в минуту, конечно раз минуту иногда долго, но по большому счету для пинга в сети это нормально, потому что не все устройства, они там не очень часто правильно отвечают на пинг, и поэтому можно просто там случайно посчитать что устройство выключено, хотя оно и включено, но потом я сделал так, что сохраняются именно измененные значения, а не каждое. Это не всегда удобно, но это таким образом позволяет экономить тоже количество записей в базе, и база растет в этом случае уже поменьше.

Ну и из интересных значений еще записываю геолокацию разных устройств, у меня на телефоне установлена программка, которая отправляет мои координаты и конечно эти координаты могут отправляться и часто там каждую минуту, или если я двигаюсь, то там и чаще может быть, конечно это много параметров, но если не двигаюсь, там есть настройка такая, что она отправляет очень редко координаты и это не создает большой поток данных.

Например я еще записываю данные о погоде, причем в нескольких местах, информацию получаю с серверов погодных в интернете, но последнее время я начал записывать очень много параметров, это не только там температура, влажность, ветер на улице или давление, а еще и записываю там качество воздуха на улице, это тоже интересная информация, хочется там накопить статистику для того, чтобы понимать в целом, как она меняется, какие бывают всплески, очень даже интересно это понаблюдать, ну и сейчас я еще и стал записывать несколько локаций разных, в которые я тоже иногда приезжаю и хочется тоже знать, что же там происходит и в какие периоды времени там повышенное содержание каких газов и наверное лучше туда в это время не ездить.

Автоматизация в умном доме должна быть полезной и создавать дополнительный комфорт, но иногда всё идет не так… Причины этого, и как всё настроить смотри на моём канале.

You may also watch

Article By Alex

Если есть идеи как можно улучшить автоматизацию, сделать её более надежной, быстрой и полезной, то можно оставить комментарий ниже. Попробую реализовать предложения и расскажу в следующих видео.

Discuss about post