Какую базу данных выбрать для Home Assistant

Оригинал поста на хабре

Введение

На случай, если ещё не встречались с HA (Home Assistant) - это opensource веб сервис для умного дома, доступный как на облаке, так и в виде self hosted, который позволяет подключить к себе кучу всяких устройств и настроить для них любые желаемые автоматизации. Например, открывать ворота при вашем приближении, заваривать кофе, когда ваш умный браслет понял, что вы проснулись, или автоматически кормить кошку по праздничным дням календаря.

Сегодня мы поговорим о том, какую СУБД (Систему Управления Базы Данными) для него лучше выбрать. Потому что очень часто в чат по HA приходят новички, и спрашивают, что им делать с MySQL, а им в ответ говорят, что они наркоманы и нанюхались одного известного видео с ютуба. А почему такая реакция, и что делать - начинающему автоматизатору понять довольно сложно без довольно специфического багажа знаний в айти. Так что надеюсь, что эта статья кому-то поможет.

Публикация локального сервера из дома в интернет

Оригинал поста на хабре

Приветики. Надеюсь, все отошли от новогодних, и можно писать и читать дальше. Как хозяин умного дома, я состою в чатике по Home Assistant, там прекрасное отзывчивое комьюнити, но периодически задаётся вопрос по тому, как собственно выставить свой веб сервис в интернет. И оказывается, что в двух словах тут не ответишь, а вменяемой инструкции на которую можно дать ссылку - нет. Так что теперь она будет здесь.

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

Мы рассмотрим здесь несколько сценариев - статический белый айпи, динамический белый айпи, и серый. Для серого рассмотрим варианты с готовыми сервисами, с помощью Keenetic и с помощью ssh туннеля. Погнали!

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

Умные напоминалки

Периодически возникает желание как-то автоматизировать напоминания про те вещи, которые нельзя автоматизировать сами по себе.

Например, смена кошачьего лотка, кормление домашних тараканов или геккона.

При этом хочется, чтобы напоминалка падала в удобный канал связи, и при игноре тебя мелко долбила, и не получилось так, чтобы при случайном смахивании ты её забыл навсегда (как с гугл календарём, например).

Долго думал, искал готовые решения, в конце концов написал своё на Home Assistant.

Как его сделать:

Отчёт из Банки со светлячками

Игра мне зашла, у меня всё сложилось, вышел крутой спотлайт и огромное количество ОБВМ, которое я радостно потом пережёвывал. Это было замечательно, я страшно доволен что поехал.

О чём это было для меня

Умный дом для геккона и сверчков - год спустя

Оригинал поста на хабре

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

Мгла отступает. Отчёт персонажа.

Лишь несколько часов назад наступил рассвет, а Мгла, в свою очередь, отступила.

Всё вышло просто невероятно, и с трудом укладывается в голове, почему именно так, а не иначе. Ведь, когда я выходил наружу в эту Ночь Мглы, я рассчитывал на совсем иное. И в голове крутится лишь одна цитата

Рано или поздно все станет понятно, все станет на свои места и выстроится в единую красивую схему, как кружева. Станет понятно, зачем все было нужно, потому что все будет правильно.

Но с чего же всё начиналось? И почему пошло не так? Чтобы разобраться, придётся начать с самого начала. С того, кем я был. Если бы я по какой-то прихоти судьбы хотел рассказать об этом, то получилось бы примерно следующее:

Задачки по ноде

Просто немного задачек по Node.JS.

  1. Напишите функцию, которая принимает на вход массив урлов и обходит их - но так, чтобы она обходила не более пяти адресов одновременно, чтобы не создавать избыточной нагрузки на сервер.
  2. Напишите функцию, которая принимает на вход имя каталога и печатает всего его файлы и подкаталоги.
  3. Напишите свою реализацию Reduce
  4. Напишите функцию для клонирования объекта, опишите ограничения
  5. Сделайте аналог крона - чтобы некая функция вызывалась раз в 2 секунды. Описать варианты реализации и ограничения.
  6. Напишите три способа поприветствовать Джона, используя эти данные и функцию:
    1
    2
    3
    4
    5
    6
    7
    8
    const person = {
    firstName: 'John',
    lastName: 'Doe'
    }

    function greet(greeting, message) {
    return `${greeting} ${this.firstName}. ${message}`;
    }
  7. С бекенда приходит такой массив c возрастом учеников:
    1
    2
    3
    4
    5
    var arr = [
    { name: 'Vasya', age: 10 },
    { name: 'Petya', age: 20 },
    // ...
    ];
    Нужно получить средний возраст.
  8. Напишите функцию, которая получает содержимое веб странички и делает пять ретраев в случае, если сервер недоступен. Нужно сделать в трёх вариантах - на асик эвейте, на промисах и на коллбеках.