Отображение на Kindle календаря IoT (wi-fi кнопки)

В статье Умная wi-fi кнопка описано, как вы можете регистрировать в Google Calendar события от кнопки Amazon Dash Button.

Ниже рассказывается, как показать этот календарь на вашем старом Amazon Kindle, который вы можете повесить на стену.

Конечно, календарь можно вывести и на компьютер или планшет. Например, всего за $49 ($39 на регулярно проводимых распродажах) вы можете купить Amazon Fire HD 7. Или, за сравнимые деньги, недорогой китайский планшет. Но чтобы он висел на стене постоянно включенным, вам надо подводить к нему питание и решать вопрос работы без батареи (потому что батарея в режиме постоянно подключения все равно быстро деградирует).

Настройки

Помимо настройки кнопок в settings.json и buttons.json, описанной в Установка на Synology умной wi-fi кнопки, вам необходимо настроить параметры отображения событий.

Это делается в разделе dashboards. Настраивается картинка для дней, в которых не было событий empty_image (т.е. дни, которые прогуляли). Также в календаре можно отмечать уважительные отсутствия (как события описанные в absents, для них в прогулянные по событиям от кнопки дни будут отображаться другие картинки). Например, если имеется в absent элемент с summary равным Sick, и вы введете в календарь кнопки событие с таким названием, то в течение этого события вместо empty_image будет показываться картинка, указанная в этом элементе.

Поскольку на календаре также показывается погода (раз уж висит на стене Kindle, пусть и погоду тоже показывает), то, если вам хотелось бы видеть местную погоду, а не погоду в Питере, надо настроить ваши географические координаты. Сделать это можно с помощью карт Google. Полученные координаты укажите в settings.json в параметрах latitude и longitude.

Также вам надо получить ключ API openweathermap и поместить его в файл openweathermap_key.json вместе с остальными файлами настроек (при желании можете изменить путь к этому файлу в параметре openweathermap_key_file_name в settings.json).

Установка на Synology

Добавляем в Docker image с моим приложением iot-calendar:

Когда он скачается, можно создавать Docker контейнер из этого image.

Вы можете вместо выполнения описанной ниже инструкции импортировать мои настройки контейнера. Они предполагают, что файлы с секретами и настройками вы разместили на своем Synology в каталоге docker/amazon-dash-private.

Ниже же описано, как сделать все это самостоятельно.

Два раза кликните по скачанному image, это запустит процесс создания контейнера Docker.

В Advanced settings -> Volume подключите к контейнеру каталог /amazon-dash-private с секретами доступа к календарю Google и прочими настройками приложения. Скачайте примеры этих файлов и разместите в любом удобном вам месте на Synology.

Например, у меня они находятся на томе Synology в каталоге docker/amazon-dash-private:

А в Port Settings сделайте видимым снаружи порт 4444, на котором работает приложение.

В Package Center отключите автообновление Docker. Поскольку после автообновления не перезапускаются контейнеры и ваши Docker приложения неожиданно перестанут работать. Лучше обновлять вручную и перезапускать нужные контейнеры.

Не Synology

Вам надо положить amazon-dash-hack.json и прочие файлы в каталог amazon-dash-private и добавить в командную строку docker:

-v $PWD/amazon-dash-private:/amazon-dash-private:ro

$PWD в данном случае говорит о том, что каталог amazon-dash-private размещен в том же каталоге, в котором вы запускаете docker. Если это не так, то измените это соотвествующим образом.

Календарь событий

Откройте в браузере <ваш сервер>:4444, вы увидете список настроенных в вашем файле settings.json дашбордов (dashboards).

<ваш сервер>:4444?b=<идентификатор дашборда> покажет страницу с черно-белым вариантом календаря, <ваш сервер>:4444?b=<идентификатор дашборда>&style=seaborn-talk с цветным. В эту страницу встроен скрипт который вызывает ее авто-обновление.

Само изображение можно получить <ваш сервер>:4444/dashboard.png?b=<идентификатор дашборда>.

По умолчанию оно черно-белое и повернуто на 90 градусов, для лучшего показа на Kindle. При желании, вы можете выбрать другие стили (они влияют, на цветовую гамму, шрифты, дизайн осей графиков и пр.). Поддерживаемые стили можно посмотреть например тут. Например, <ваш сервер>:4444/dashboard.png?b=<идентификатор дашборда>&style=seaborn-talk&rotate=0.

Также можно выключить включенный по умолчанию рукописный стиль xkcd=0 (этот стиль накладывается после описанного выше основного стиля и изменяет ряд параметров отображения).

Если вам не нравятся пиктограммы которое я использую при рисовании календаря, вы можете выбрать любые другие, например, на Noun Project.