Нескрываемый восторг от OpenSource и GitHub в частности

Давным-давно я купил автоматической метеостанцию Davis VantagePro2 с проводным подключением ибо не верил в солнечные батареи и аккумуляторы (впрочем, и сейчас не верю тоже). К ней докупил модуль, который подключен к Ethernet (там есть встроенный Web для конфигурации и telnet для команд) и регулярно уже много лет передаёт данные на сервера разных компаний. Долгое время я пользовался сервисом WeatherUnderground.com и WeatherLink.com (от Davis Instruments), однако годы шли и сервисы меняли собственников и политику, так что, мне пришлось задуматься о локальном хранении данных что бы просто иметь к ним простой и не ограниченный «непойми кем» доступ. Собственно с момента первых тестов метеостанции я знал, что модуль WeaterLinkIP подключенный к метеостанций откликается не просто на telnet, но и в ответ на весьма документированные команды выдаёт внятные, но бинарные ответы (то есть их надо преобразовывать из битиков и байтиков в осмысленные цифры). Сразу после покупки метеостанции я, конечно, поискал ПО для локального общения с метеостанцией и даже какие-то софтинка попробовал, но все они не были пригодны для сбор аи хранения данных, то есть, являлись некими «консолями», но никак не базами данных. Шли годы и вот после изменения политики сначала WeatherLink, а потом и WeatherUnderground (его купил IBM) я изрядно напрягся ибо к нынешнему поливочному сезону у меня не было удобного способа узнавать о фактически выпавших осадках на моём участке что бы принимать решение о необходимости и должном уровне полива, что недопустимо для осмысленного управления поливом растений. Ввязываться ради этого в переписку или, хуже того, исправления кода на Java что бы поменять там имя сервера и дальше PR-request и ожидание, что автор add-onn’а внесёт эти исправления понятный путь и тут я не мог бы быть первым и результата ожидать смысла не было так как PR-request уже давно был и никто на него не реагировал уже 4 месяца!!!

И вот тут начинается самое интересное: примерно зная как устроено современное программирование я пошёл искать на GitHub код на Python (ибо я его изучаю ради последующего освоения ML) и к моему удивлению я нашел ровно то, что мне было нужно — готовую библиотеку для разбора бинарных полей и кусок кода для её использования, так что, большого труда прикрутить туда MongoDB для хранения данных не составило, но теперь я понял, что надо на Influx переехать, то есть я допустил ошибку, что пошёл на поводу моды на MongoDB.

Второй прекрасный случай: управление системой вентиляции (BreezArt). Когда я её покупал в 2014 году я сразу смотрел что был IP и не ошибся. Протокол они опубликовали и в интеграции с умным домом, конечно, были заинтересованы, так что, не просто делали мобильное приложение, но и даже одно время развала исходные тексты мобильного приложения для Android, но позже перешли к платной модели мобильного приложения и открытому протоколу общения с контроллером через IP. А если есть документация и смысл, то со временем появляются и авторы библиотек и приложений. Так случилось и здесь: нынче я нашел готовое приложение на Python общающееся с вентиляцией и MQTT-брокером, так что, его элементарно интегрировать с почти любым «умным домом».

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

Ещё была история с Sonoff: она стоит несколько особняком, так как это не полноценный DYI, а совершенно осознанное гугленье вынужденного решени яи его реализация, но опять же прошивка и документация на GitHub!!!

В целом я просто в восторге от того, что OpenSource позволяет решать весьма перспективные задачи, но для того что бы им пользоваться нужны минимальные навыки не только программирования, но и понимания современных тенденций ибо легко угодить в тупиковый проект, который никому не будет интересен. Так же есть масса проблем с безопасностью, так как многие проекты написаны именно как «проба пера» без перспектив на внедрение в боевых условиях, но есть и проекты которые реально используются людьми. Так же прекрасно, что люди пишут документацию и описывают как именно они решили мелкие проблемы не описанные производителем, но неизменно возникающие.

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

Подключение модулей Sonoff к OpenHAB через MQTT

Для автоматизации дома я использую разные стандарты и подсистемы. Наиболее критичная — отопление управляется через KNX, остальные системы шлюзуюся в проводной Ethernet, где в том числе подаётся PoE питание от инвертора с парой 100Ач аккумуляторов. Однако, проводов не всегда хватает и появляются новые «хотелки» особенно в плане управления освещением, которое наименее критично, но всё же хочется иметь на нём некую логику управления. В частности, возникают точки куда просто совсем нет витой пары, например, беседка во дворе, но гирлянды там хочется включать не каждый день, например. Для этих целей я решил применить WiFi контроллеры Sonoff так как было понятно как их подружить с OpenHAB, который у меня отвечает за сценарии управления освещением в частности и служит платформой интеграции разных систем и стандартов. Сразу скажу, что у меня развёрнута WiFi сеть из 5 точек доступа бесшовным переключением и с них раздаётся 3 совсем разных сети. Одна из них DMZ, другая гостевая и третья внутренняя в двух диапазонах и так как все быстрые устройства живут в домашней сети на 5ГГц, то сеть 2,4 как раз годится для неспешных устройств и никаких гостей там не бывает. Ровно это стечение исходных данных подтолкнуло меня не париться с очередным протоколом (рассматривался ZigBee), а использовать готовую отлично работающую и всё покрывающую инфраструктуру.

Прошивка модулей

Для прошивки потребуется:

  • Скачать саму прошивку Sonoff/Tasmota отсюда, внимательно почитав что там написано;
  • USB-serial адаптер с возможностью выбора напряжения 3,3 Вольта (это важно ибо пишут, что подача 5 Вольт может быть фатальна) и выводом на провода. Моём случае это BTE13-009 купленный когда-то давно на Ali;
  • ПО для прошивки контроллера;
  • На всякий случай терминальная программа для доступа к консоли (для MacOS я использовал вот эту, но есть много иных). Так же через консоль можно поменять часовую зону и установить время отличное от NTP (установка по умолчанию) команда «timezone HH:MM». Впрочем, команды можно и иначе передавать контроллерам https://github.com/arendst/Sonoff-Tasmota/wiki/Commands.

Если на плате нет разъёма, то надо его припаять. и подключать согласно разметке на плате. В частности на контроллерах TH10 разъёма нет, а вот на 4CH он есть сразу с завода.

GND подключаем к GND, VCC3,3 к VCC3,3, а вот TX к RX и наоборот RX к ТX, с последними может быть путаница, но их переключение безболезненно. После подачи питания контроллеры Sonoff начинают равномерно мигать синим светодиодом. Полезно после включения проверить работает ли управление кнопкой по звуку реле и индикации красного светодиода.

  • Запускаем программу NodeMCU, в ней указываем нужный порт USB-Serial, скорость 115200, режим прошивки DOUT (годится только он), включаем стирание flash-памяти.
  • Отключаем питание, например, выдернув один проводок;
  • Нажимаем кнопку (любую);
  • Подключаем питание;
  • Отпускаем кнопку;
  • Запускаем процесс прошивки в программе.

Использование кнопок в прошивке описано тут.

Настройка модулей

После успешной прошивки устройство нужно перезагрузить выключением и включение питания (достаточно один проводок дёрнуть и обратно аккуратно воткнуть). Далее подключиться к контроллеру через WiFi сеть с названием sonoff-NNNN без пароля по адресу http://192.168.4.1. В меню настроек выбрать поиск сетей и выбрать нужную сеть для подключения или прописать SSID на память. Указать пароль для доступа к сети. После этого устройство перезагрузится и на консоль сообщит какой IP-адрес оно получило от DHCP-сервера. Можно смотреть на консоль, а можно найти устройство в списке выданных адресов DHCP-сервера по упоминанию Sonoff в имени хоста. Ну и можно сканером его найти. Ну и далее просто подключиться опять же к контроллеру броузером. переключаем в нём в разделе Modules нужный тип контроллера и проверим работоспособность кнопок что б быть уверенным, что всё работает штатно. Из замеченных глюков одним разом выбрать модель контроллера и подключенного датчика у меня не получилось, то есть модель датчика не запомнилась просто. Если есть внешний датчик, то надо проверить его после подключения. Данные с него отображаются вместе с индикацией переключателя.

Настройка MQTT

Сервер

По идее в OpenHAB есть свой read-only MQTT брокер и можно им ограничиться, но я решил поставить отдельный сервер на ту же машинку, где крутится OpenHAB (в моём случае это PasberyPi в некоем специальном исполнении. В качестве сервер а я использовал Mosquitto от Eclipse, который весьма популярен и есть в частности в репозитории raspbian. В комплекте с сервером идут и утилиты для тестирования как в качестве клиента, так и в качестве подписчика. Сами настройки сервер минимальны, разве что надо определиться с тем будет доступ по паролю или нет. Если совсем не хочется делать сеть локальной и автономной, то, конечно, же есть публичные сервисы и даже совершенно бесплатные, но лично я бы их использовал только для разработки и отладки, но никак не для боевого применения, конечно.

Контроллер

В конфигурации в разделе MQTT нужно указать параметры куда и как подключаться (я использую авторизованный доступ, так что, прописываю логин и пароль, но, к сожалению, шифрование тут не поддерживается, так что, можно и без пароля, конечно ибо по сути всё равно вся безопасность на уровне пароля от WiFi-сети получается ну и степенью изолированности сети определяется, конечно.

Так же полезно переименовать название MQTT-клиента (Client) и MQTT-топика (Topic) что бы идентифицировать устройство. Как вариант использование последних 6 цифр MAC-адреса, но можно пойти своим путём, конечно.

Результат я контролирую на консоли MQTT-сервера.

Конфигурация OpenHAB 2.4

Для удобства я делаю предварительные настройки в PaperUI, а правила и sitemap уже редактирую вручную.

Первым делом надо добавить AddOnns -> Bindings -> MQTT Binding. После этого нужно вручную добавить две сущности (дословно things переводится как «вещь», но мне кажется что «сущность» более точно отражает смысл в данном контексте): MQTT Broker и Generic MQTT Things. При добавлении брокера нужно указать адрес сервера, опционально раздел (вкладку) отображения (Location) для удобства и если необходимо, то параметры безопасности (логин пароль или сертификат). При настройке Generic MQTT Things нужно просто выбрать брокер и опционально раздел.

В Configuration -> Things найти Generic MQTT Things и там далее добавлять каналы (Channels) и внитри них уже компоненты (items). Название сущности (things) тут логично указывать своё. По задумке OpenHAB, точне SmartHome от Eclipse, сущность соответсвует физическому объекту, а каналы его свойствам, насколько я понимаю эти абстракции.

При создании Channels нужно указывать :

  • Тип канала, например, выключатель или число;
  • ID канала (произвольный, но лучше читаемый);
  • Название канала (label) для отображения;
  • MQTT топик для получения состояния можно сразу с шаблоном JSONPATH для выделения значений из JSON-ответов, например, «stat/sonoff-490666/RESULT:state:JSONPATH($.POWER3)«;
  • MQTT топик для отправки команд (я встречал примеры с явным указанием, что ON надо транслировать в ON, но и без них прекрасно работает), например, «cmnd/sonoff-492698/POWER3«;
  • не забыть нажать кнопку SAVE!!!

В случае если датчик выдаёт два или больше полезных значений, то под каждое нужно создавать канал в котором указывать JSONPATH для выделения искомого значения из JSON. Например, это температура «tele/sonoff-3314C0/SENSOR:state:JSONPATH:$.AM2301.Temperature«, а это влажность «tele/sonoff-3314C0/SENSOR:state:JSONPATH:$.AM2301.Humidity» с того же датчика. Посмотреть что сообщает клиент брокеру можно используя вот такую утилиту, которая ставится вместе с сервером, в данном случае с Mosquitto: «mosquitto_sub -h 192.168.51.7 -t +/sonoff-3314C0/# -v» тут вот контроллер присылал примерно такое: «tele/sonoff-3314C0/SENSOR {«Time»:»2019-04-22T13:04:19″,»AM2301″:{«Temperature»:26.5,»Humidity»:42.2},»TempUnit»:»C»}«. Если есть сомнения в JSONPATH шаблонах, то их легко проверить на сайте https://jsonpath.curiousconcept.com/ где указывается как исходный JSON, шаблон и получаемый результат. Важное замечание: OpenHAB обрабатывает значения по мере их поступления, то есть после того как вы написали правило нужно ещё и подождать пока контроллер отправит сообщение брокеру с данными!

После создания каналов нужно к каждому из них привязать items. Для этого нужно нажать на синий кружок если у него центр или на скобки вверх-вниз после иконки корзины справа в строке канала. Профиль указываем по умолчанию, а в меню «Please select the item to link:» выбираем » + Create new item…» и далее выбираем имя items (я делаю читаемые имена так как sitemap редактирую в текстовом виде), Важно указать отображаемое название чтобы потом не путаться, у и тип тут тоже указывается. По идее можно к одному каналу создавать несколько items с разными типами, но на мой взгляд удобнее и логичнее создавать новые каналы если много переменных.

После создания Item в разделе Control PaperUI появляется панелька соответствующая сущности со всеми созданными в ней компонентами. Где их можно уже наблюдать или управлять реле.

На этом настройка закончена и можно оформлять внешний вид и сценарии управления.

Про умный дом и разнородные гаджеты

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

Исходные данные

Для протокола отмечу то, что Госдума РФ не внесла в закон о кастрации интернета:

  • есть опасность, что какой-то сервис просто сгинет (вариантов множество: продажа компании, простое закрытие проекта, изменение интересов собственника);
  • сам доступ в Интернет может внезапно исчезнуть на продолжительное время как силами тракториста перекопавшего кабель, так и силами просто пьяного водителя сбившего столб, ну и совсем надолго он может исчезнуть благая усилиям законодателей разных;
  • ну и, наконец, самое частое происходящее регулярно — просто обновление версии API или стандарта или просто устранение дырки в безопасности, то есть оно работало и вдруг перестало, это непредсказуемые затраты на сторонние сервисы, которые живут независимо от ваших желаний.

Реализация

Приведу наиболее неопрятные примеры: куча железок работающих «через облако» зачастую становятся просто кирпичами в силу того, что облако стало недоступно или сгинуло; какое-то обновление софта ждёт что бы вы нажали где-то кнопку и перестаёт работать пока не нажмёте, но вы об этом не имеете никакой возможности узнать ибо все письма от этой компании, конечно же, уходят в SPAM молча ибо они же никогда не задумываются с какого адреса слать рекламу, а с какого важные сообщения Ну и самое неприятное, что вы привыкаете, что оно работает само и зачастую просто не имеете возможности узнать что оно сломалось до той поры пока не проявились последствия не исправности, так что, лампочки — это самое то, что надо запускать через облако ибо тогда вы в первый же вечер узнаете о поломке.

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

Для критичных элементов я использую встроенные системы, то есть вентиляция, отопление имеют локальные контроллеры, управление вентиляцией сделано через KNX — очень надёжной локальной системы, которая позволяет управлять отоплением с учётом разнородных датчиков и управляет ШИМ (Широтного-Импульсной Модуляцией), а не тупым реле со случайным гистерезисом. Так же я считаю критичным включение освещения, так что, у меня есть тупые датчики освещённости, которые именно включают свет, а вот что включится уже функция релюшек, управляемых «умным домом». Второй уровень подразумевает более сложные сценарии и, в том числе, зависимость от внешних сервисов (например, прогноза погоды для полива) и наличие сложных правил или сценариев. Так как первый уровень в массе своей почти «железный», то есть не предполагает обновления программного обеспечения и подключения к Интернету (мы же понимаем, что в современном мире микропроцессоры везде). А вот второй уровень предполагает подключение к интернету и необходимость обновления ПО как из соображений безопасности, так и ради нового функционала.

Небольшое отступление про виртуализацию и контейнеры.

У систем с большой продолжительностью жизни есть проблема зависимостей, которые могут ломаться при обновлении любого из элементов. Конечно, это выливается в требования безопасности (изоляции от интернета), но некоторые системы, особенно облачные без последнего не лучше тыквы.

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

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

Продолжение реализации

С учётом всего этого я выстраиваю систему резервирования и тут в ходу все возможные варианты, конечно. И просто резервные копии в дисковом массиве, и флэшки с копиями ( это самое слабое звено ибо тестировать их сложно). И копии машин и понимание, что надо всё железо брать overIP что бы при обновлении ПО не надо было думать о проводах. То есть, есть внутренний сервис на каком-то IP-порту и вот с ним мы по известному протоколу и общаемся, а что там кругом не должно влиять никак на работу.

И вот при покупке контроллеров я всегда смотрю что бы была возможность обойтись без облачного сервера неведомо где в интернете расположенного. Сейчас в моде у китайцев примерно такой подход: железка имеет IP, но она не умеет HTTPS и вся безопасность упирается в то как она подключена и знание некоего TOKEN, который по сути ключ доступа, но фактически простой ключ как вот прямо в Матрице (кино такое). То есть его предъявляешь и всё тебе доступно. Я почему про отсутствие HTTPS переживаю в этом месте? Просто тут получается что простая атака с подменой DNS + Man-in-Middle (весьма популярная история нынче) позволяет получить полный доступ к железке ибо поменять этот token зачастую невозможно никак, да и поменять его, так где он есть, весьма непросто ибо не всегда понятно где менять-то.

Итого я пытаюсь выстроить «Умный дом» внутри локальной сети, так что бы он работал без интернета вовсе. И последние приобретения делались именно после чтения документации как реализовать таковую локальность. Типовой подход — мини-хак китайских железок, когда железный токен из них выковыривается путём инициализации локальным приложением или вовсе запросом с консоли и в URL и дальше они управляются через OpenHAB без внешних облаков. Из недавних покупок это RoboRock и Sonoff — оба могут работать без интернета, но это не описано в документации, конечно.

PS: Важные мелочи (дополнения)

Одна из ключевых вещей в безопасности дома, конечно, WiFi ибо он доступен неограниченному кругу лиц. Я для целей контроля WiFi использую 3 разных SSID, доступные с разных точек доступа и полностью изолированных. Во-первых внутренняя сеть которая доступна как в диапазоне 2,4, так и 5 ГГц. Во-вторых, DMZ (De-Military Zone), которая имеет доступ во внешний мир по системе «ниппель», но лишена доступа во внутреннюю сеть от слова «established», то есть из внутренней сети она доступна, а сама туда попасть не может и это важно. И крайний случай — публичная сеть, которая требует регистрации по номеру телефона и облачена во всяческие фильтрации и совсем не отличается от FreeWiFi в кафе города. Весь этот зоопарк раздаётся одними и теми же точками доступа, но с разными идентификаторам сети (SSID), так что имеет «бесшовное» покрытие весьма большой зоны где могут оказаться люди. Ключевой момент что в каких диапазона доступно: всё медленное и универсальное — 2,4ГГц, а всё быстрое, конечно, 5ГГц, то есть по факту только внутренняя сеть есть в 5ГГц, а гости и железки в 2,4. Конечно, это отчасти проблема тоже, но эфир всегда подразумевает свободу и полагающиеся риски.

Коротко о странном…

Намедни довелось увидеть прекрасный на мой взгляд, но ужасный, на взгляд многих (судя от отзывам в инстаграмме и ютюбе) короткометражный фильм «Тёмная как ночь. _Каренина 2019» по мотивам произведений Л.Н.Толстого и озвученный песней Б.Б.Гребенщикова (на самом деле и по мотивам той песни кино тоже). Однако, начну издалека…

Примерно в 8м или 9м классе средней школы (тогда мне было примерно 16 лет, а может быть чуть раньше) мы проходили Л.Н.Толстого и учительница литературы устроила дискуссию по вопросу «добро должно быть с кулаками или нет?» (одна из ключевых тем, конечно, у Л.Н.Толстого). Дискуссия выдалась жаркой, но короткой, так как зазвенел звонк и спорящие ушли со своими мнениями. Далее к этой теме доводилось нередко возвращаться и если в детстве я был уверен, что кулаки обязательны, то с годами стал понимать, что я был глупцом и просто не понимал, что такое добро. И вот в какой-то момент в возрасте явно за 40 или около того до меня стало доходить, что если есть какой-либо единый закон, то сам он не может быть результатом, то есть не может быть не силой не слабостью ибо он есть и то и другое одновременно. Конечно, это относится в первую очередь к тем законам, которые уже доказаны людьми, но наличие второй сигнальной системы в человеке вынуждает его экстраполировать за пределы актуального знания или по-просту фантазировать. Ну а так как законы физики пока изучены явно не полностью и нынешняя теория струн лишний раз возвращает людей к мысли о том, что есть величины не имеющие в принципе обратного значения, например, масса (гравитация). Собственно, и энтропия и температура (по Кельвину) тоже не могут быть отрицательными, то есть у них нет никакой обратной стороны. Конечно, теоретически у них есть обратные функции, но они не естественные, а вымышленного отражение для простоты вычислений. В естественном смысле ниже абсолютного нуля нет никакого движения и любое движение будет повышать температуру и энтропию. Примерно в те же годы (начало 80х) в астрономическом кружке я узнал про нейтрино и исследования по определению его массы. Тогда её называли не иначе как «частица бога» (да-да ровно так же, как позже называли Бозон Хиггса) ибо тогда это был предел познаний и ближайшая веха к разгадке массы вселенной. То есть, по мере познания я пришёл к выводу, что единый закон не может быть с кулаками, равно как и то, что все страшилки в стиле «бог тебя покарает» — это просто бред, так как нет обратной стороны, нет ни малейшей возможности изменить уровень энтропии перестановкой слагаемых.

С некоторых пор мне понравилась теория, что «каждый умён по-своему» или «красота в глазах смотрящего», то есть, каждый человек принимает решения на основе своего опыта, а опыт у каждого свой и нельзя сказать, что он плохой или хороший. Может быть он недостачен для какого-то вопроса, но это же не беда, а просто «опечатка». В каждом вопросе есть более глубокие специалисты практически всегда, так что, лично я себе с детства кажусь вечным дилетантом ибо вижу, что по мере изучения одного вопроса увлекаюсь чем-то иным и не могу потратить достаточно времени для той глубины изучения любого вопроса, что добились другие люди. Однако, такая позиция позволяет мне увидеть многие стороны мира, а не уподобиться «флюсу» (стоматологическом смысле) по словам К.Птрутова. Ну и дополнила этот «компот» моих мыслей, конечно, книга «Думай медленно… Решай быстро.» Д.Канемана, которая оказалось крайне гармонична с моим личным опытом в вопросе принятия решений. То есть, я до изучения книги уже действовал именно в таком ключе понимая, что часть вещей надо решать рационально, а часть можно доверить «эмоциям». И вот с такой позиции когда я долго думал над теорией самсары (она же сансара) и нирваны и давно пришел к выводу, что ад и рай это равнозначные термины, равно как и сансара и нирвана — это совершенно одно и тоже, тексты Б.Б.Гребенщикова стали для меня просты и понятны. Хотя я помню, что это только в моих глазах и другие люди видят там совсем другое.

Однако, вернёмся к короткометражному кино и песне. В целом эта песня про «успешных менеджеров » или по иных узких специалистов, которые действуют по правилам ради получения гарантированного результата. Но тут что-то пошло не так…Собственно вот первый куплет:

Дорога в будущее вымощена яхонтом
И мы шагаем крестным ходом все в белом
Все было путём, но нас сорвало с якоря
И нет гарантии, что кто-то уйдёт целым.

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

Далее картина чуток раскрывается и оказывается, что кругом всё плохо и никакие инструкции не помогут. Опять же текст куплета:

Под каменным небом железная Земля,
С веселой песней легче сгинуть средь метели
В книгах написано, что все было зря,
Но нет ни слова про то, что на самом деле

Опять же в кино ровно так и есть…

Далее идёт очень мощный припев:

Темный Как Ночь
Мы шли к тому, кто светлей всех на свете
А он — Темный как Ночь.

Я не могу избавиться от мысли, что 90% песен БГ посвящены тому, что в религиях называется богом или богоматерью, когда употребляется женский род. Но тут совершенно ясно, что искали того, что «светлей всех на свете», а нашли «Тёмного как Ночь», то есть внезапно обнаружили, что не бывает отрицательной энтропии или, что «самсара=нирвана», то есть стремились к нирване, а оказалось, что это и есть самсара от которой хотели уйти по наивности.

Далее два прекрасных куплета описывающие иступление и обращение к той неведомой силе с которой промахнулись в прошлых куплетах:

Налитые кровью глаза 
Тяжелая свинцовая муть
Они разбудили зверя
Он кричит, он не может уснуть.

Лично у меня только вызывает смущение то, что предполагается, что «зверь» может уснуть. Но тут скорее вопрос к тому, что конкретно подразумевает автор под словом «уснуть» ибо в ранее он же настаивал, и вполне обоснованно, что разум не может отделить сон от реальности (2006 год, Беспечный русский бродяга, День в доме Дождя: «Ум лезет во все.
Ум легче, чем дым.
Но он никогда не поймет —
Спим мы или не спим.»). Тут проблема в том, что «зверь» — это явно эмоциональная часть разума, то есть система мышления №1 согласно Канеману и если он может «уснуть», то только вместе со второй системой мышления одновременно. Перейти к рациональному размышлению в период пиковых эмоциональных нагрузок крайне сложно даже весьма подготовленному к этому человеку (типа разведчика или телевизионного ведущего).

Сердце вдребезги, святое нараспашку
На полной скорости не так больно
Уговори меня, что все не так страшно
Угомони меня — я не могу кричать больше

Очень жизненная история, которая и вправду описана Л.Н.Толстым не только в романе «Анна Каренина», но и в других произведениях ибо суть противоречи его и догматической теории РПЦ крайне сильно этом вопросе расходились, до того уровня, что РПЦ осудила ранее превозносимого писателя. Ну и ровно это происходит в кино, когда главная героиня заходит в тупи к в своих планах и мыслях, она начинает действовать адский(божественно) решительно. Результаты этих действий выходят за рамки как песни, так и короткометражки, но должны дать возможность зрители и слушателю задуматься.

Кстати, длинная ассоциация: одна из «программных» песен Б.Б.Гребенщикова «Из Калина в Тверь» (вошедшая в очень непростой альбом «Лилит» вышедший в 1997 году) тоже про «железную дорогу» как в и короткометражке про Анну Каренину и там тоже говорится о смысле жизни как и в остальных 90%песен этого автора. Впрочем, это не удивительно, ибо тема уже пережила множество поколений и явно переживёт ещё массу. Если кто вдруг не в курсе, то город Тверь (основан в 1135 году) носил имя Калинин с 1931 по 1990й годы. Название однозначно указывает на то, что песня про путь из прошлого в настоящее, то есть про жизнь.

Впрочем, послушайте сами…

PS: из песенки про Тверь:

Не смотри, что моя речь невнятна
И я неаутентично одет —
Я пришел, чтобы сделать приятно
И еще соблюсти свой обет
Если все хорошо, так и Бог с ним
Но я один знаю, как открыть дверь
Если ты спросишь себя — на хрена мы летим
По пути из Калинина в Тверь

Первые впечатления о Яндекс.Станции

С момента анонса Яндекс.Станции хотел её купить для экспериментов и привязки к умному дому. Однако, Сперва реальная доступность сильно сдвинулась по календарю, потом я почитал отзывы и мы даже сделали собственный навык, но тут стало ясно, что пока Яндекс не даёт возможности делать приватные навыки, а без них не получается сделать привязку к существующим сервисам. Однако, время идёт и несмотря на то, что я не стал покупать пока Яндекс.Станцию для умного дома, но появилась новая идея — читать дочери (ей всего 3 года) сказки и включать песенки и радио. Тут я проверил наличие в ижевских интернет-магазинах и обнаружил, что в Citylink аж 3 штуки на складе есть, так что, тупо пошел и забрал одну из них (цена у них везде одна).

Настройка оказалась весьма забавной в том плане, что вместо Bluetooth используется звуковой сигнал, то есть надо чирикающий телефон поднести к микрофонам колонки что бы она смогла подключить WiFi. Очень странная процедура при том, что BT есть в колонке, но почему-тов выключен по умолчанию и включается либо длительным нажатием кнопки либо голосовой командой. Лично мне непонятно почему так. Особенно, когда видел много раз простую и удобную настройку через BT устройств очень разных производителей. После подключения к сети колонка сказала, что будет обновлять прошивку. Потом долгая пауза и потом сказал, что «Готова к обновлению». Далее ничего не говорила и я думал, что она так долго обновляется, но когда мне надоело ждать казалось, что она уже работает, так что, в чём тут было дело: в неточной формулировке или в отсутствии подтверждения обновления не ясно.

Сразу скажу о главном плюсе Яндекс.Станции — это качество звука за вполне разумные деньги. Звук реально очень качественный для такой системы. Второй плюс: понимание русского языка заметно лучше чем у Google и Apple (Microsoft не пробовал, а у Amazon русского пока вовсе нет). Реально очень хорошо распознаёт что ей говорят из-за угла. Однако, до идеала далеко, так как команды без обращения «Алиса» срабатывают почему-то не всегда, хотя с обращением распознаются прекрасно ровно в тех же условиях. этот момент очень напрягает при попытке выбрать видео.

Минусов на мой взгляд два:

  • не понятно как ей пользоваться без подписки ибо пока нет персональных навыков и откровенно не очевидно взаимодействие со сторонними сервисами через поиск. Например, если попытаться найти какое-то кино или мультик (я искал Мойдодыр для теста). По умолчанию выдавала ссылку на IVI при этом в описании никакой цены указано не было, но при попытке «посмотреть» говорило, что контент платный. На вопрос «сколько стоит контент» Алиса отвечала 100$ в месяц (на самом деле это неправда, конечно, а тупая шутка). Когда я сказал «купить», то предложило пойти посмотреть уведомление на телефоне, где было написана цена месячной подписки на IVI, а вовсе не покупки конкретного материала. При этом вместе с колонкой даётся год пользования Яндекс.Плюс, 3 месяца Амедиатеки по два месяца IVI и Гольфстрима (какая-то охрана), но все эти подписки активируются отдельно, что по сути, конечно, логично. При этом, если добавить слово «youtube» к фразе, то оказывается, что у мультика есть несколько вариантов и смотреть их можно бесплатно без навязчивых подписок. Насколько я понял, с авторскими правами на обе версии мультфильма (1934 и 1954 годов выпуска) дела обстоят «никак», то есть ни у кого их уже нет и суды даже по образам героев уже проигрываются. То есть, продавать такой контент — это, конечно, круто запредельно! Да ещё и так странно продавать вынуждая подписаться. Ну понятная бизнес-модель, конечно, но мёртвая, на мой взгляд. А добавлять к каждому запросу YouTube утомительно. Надеюсь со временем поиск перестанет искать в ненужных пользователю местах, то есть будет понимать на что у человека есть подписка, а где есть более выгодный вариант.
  • большой жирный минус — непонятная история с видео. У колонки есть HDMI и можно подключить телевизор, но пользоваться ею одно мучение из-за того, что Яндекс по непонятным причинам не стал делать пульт управления на смартфоне, как сделано у других подобных устройств. Для видео-контента голосовой интерфейс подходит весьма плохо. Почти всегда возникает необходимость выбора, а она там без пульта очень неудобна и намного больше времени требует. Короче, видео я явно буду дальше смотреть на Apple TV ибо там ну вот радикально проще и контент получается очень мне интересный (сериалы я не смотрю) да ещё и в 4k HDR за небольшие деньги, что очень удивительно, конечно. Впрочем, я реально немного кино смотрю, конечно, в последние годы. Так что, тем кто залипает на сериалах, наверное, надо просто выучить английский и купить себе подписку на NetFlix или в крайнем случае на Amazon, так как там 80% оригинальных сериалов выходят точно.

Однако, колонку я купил для чтения сказок и ирония песенок детских и тут она более-менее справляется, кроме одного непонятно совершенно глюка: посте того как проиграна запрошенная песенка (детская в моём случае) колонка продолжает воспроизводить треки, но совсем не той тематики! Конкретно после детской песенки была какая-то адская попса. Аналогично с «Детским радио» то его играет, а то вдруг заявляет, что оно недоступно — это как?

Конечно, это пока первый опыт и со временем я надеюсь решить мелкие проблемы, так что, тему продолжу.

Мал золотник, да очень важен!

Пульт, оригинальный кабель и на что его нужно сразу после покупки заменить!!!

Иногда бывает так, что какая сущая мелочь, стоящая копейки, создаёт проблему которая обходится людям очень дорого и вот одна из таких мелочей важная для тех, кто используем квадрокоптеры типа Mavic Pro (не знаю как у других актуальных моделей с этим узлом дела, но на Mavic что 1, что 2 — это просто беда полная, так что, выпуск пулька с большим экраном — это разумный маркетинговый ход, конечно. Но есть решение проще!

Для начала опишу проблему с которой сталкиваются многие владельцы коптеров типа Mavic: во время полёта перестаёт меняться картинка с камеры на телефоне и замирает телеметрия там же на телефоне. При этом управление работает и коптев явно реагирует на джойстики, судя по цифрам на пульте. По началу я паниковал, конечно, потом начал экспериментировать и так как я имею хоть и неполное, но инженерное и даже радиотехническое образование, то понимаю, что «чудес не бывает» и причина уж никак не в «глушилках». Ну а так как мне довелось писать программы, то ч прекрасно понимаю, что Любой софт имеет право зависать, особенно, когда есть проблемы с железом ибо найти программистов понимающих как работать с железом обычно нет что б сложно в мире, но как минимум адски дорого. В результате мобильный софт пишут люди, которые никогда в жизни не знали, что бывают прерывания или старт-стопы или вовсе какие-то скорости передачи данных. Так что, все мобильные приложения нынче рассчитаны на соблюдение требований интерфейсов и прохождение юнит-тестов, а ка кони работают в целом, чаще всего никого (СОВСЕМ!!!) не волнует ибо саппорт либо отсутствует, либо не имеет никакого смысла и мало чем от робота отличается.

С учётом моего скорбного опыта в железе и софте я первым делом после истерики дёрнул кабель и случилось чудо — связь восстановилась и картинка и телеметрия стали отображаться на телефоне как прежде. Однако, китайские разработчики приложения DJI GO в очередной версии пошли явно дальше и смогли добиться того, что просто передёргивание кабеля может не помочь, но кабель + перезагрузка программы помогает 100%! То есть, пока каким-то причинам код улучшили настолько, что восстановление связи он понять не может уже, так что, становится принципиально важен момент надёжной связи между пультом и телефоном ибо проблемы связи меду пультом и коптером не влияют на программу, а вот если в видеопотоке от пульта будет дырка, то она точно зависает.

Производитель предусмотрел развитие бизнеса в продаже пультов с андроидом за скромные $649. При том, что решение проблемы стоит ~300 рублей (~$5) с доставкой в РФ, то есть с оплатой услуг Почты России. На фото в начале статьи оригинальный кабель, который начитает терять соединение чрез 1-2-3 полёта и копеечный заменитель, который почему-то не ломается.

Кредит доверия…

Вчера согласовал с одним уже бывшим работником его немедленное увольнение. Сегодня подписал его заявление «по собственному желанию». Причина, по сути, была в том, что у человека был «кредит доверия» и он как-то затянулся. Затянулся настолько, что на него уже рассчитывали как на опытного работника, а по факту он из «пелёнок» не выбрался и, хуже того, запланированные самим собой и позже со всеми согласованные задачи просто не пытался даже выполнять! У меня в голове не укладывается, что возможно такое поведение и за очень многие годы я не видел столь странного поведения. Обычно если человек что-то сам планирует, то потом невыполнение он всегда чем-то оправдывает, а тут ни оправданий, ни усилий, ничего!!! Были случаи увольнений, когда претензии были из-за перманентного срыва сроков в том числе согласованных в 3-4-5-100 итераций, то есть растянутые на год или даже больше. Но там не было игнора работы, а были ссылки на рутину или какие-то внешние проблемы, которые потом оказывались внутренними и легко решались. Но факт, что не было такого, что бы вот реально-то ничего не делалось!

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

Проблема эта ни разу не нова и встречалась многократно на разных должностях, но тут мне показалось, что корень нашей ошибки и лично моей именно в «кредите доверия», то есть в том, что я доверяю словам человека не соблюдая карантин жесткого контроля действий. Да и формально испытательные срок максимум 2 месяца, а зачастую для инженерных должностей и руководителей — это просто «миг», когда удаётся только тестовые задачи порешать, а реальные результаты начинаются через полгода-год в силу технологического цикла.

Из удивительного узнал сегодня, что увольнения в целом имеют место в нашей области и нашем городе по связной тематике. Видимо надо сильно думать ещё…

PS: обратите внимание, что у нас есть кадровый голод особенно в сфере разработке софта и сетевых инженеров.

«Красота в глазах смотрящего» (Oscar Fingal O’Flahertie Wills Wilde)

Прекрасная фраза наиболее язвительного писателя 19 века Оскара Уайльда, как говорится, «многое объясняет», однако, попробую добавить две капли личного опыта в эту давно очевидную истину.

По сути речь о субъективности восприятия реальности людьми. Если копнуть чуть глубже, то вариантов нет и на то и «субъект» что бы иметь собственное мнение выстроенное на своих (личных) знаниях, опыте и логике. То есть, по сути это ключевое свойство выжившей рассы людей Homo Sapiens, которые отличались от собратьев (неандертальцев, например, на самом деле их много было) именно «сплетнями» или в современной транскрипции «когнитивными способностями» и это всё началось 200 тысяч лет назад, или 2 000 веков (из 20 относительно хорошо известных). Остальные человекоподобные рассы не обладали такими способностями и были просто «ассимилированы» или подвергнуты «геноциду», как это модно нынче называть, но тогда не было никаких таких понятий и законов (понятие «закона» появилось предположительно в Египте примерно 50 веков назад), то есть всё было радикально проще.

Это я всё тому, что развитие человечества идёт очень давно и со временем сильно ускорилось, так как существенно выросло населения и были решены проблемы голода и даже отчасти войн. И всё это благодаря именно когнитивным способностям человека, то есть способности общаться и развиваться «второй сигнальной системе», как говорят биологи, или же «второй системе мышления», как говорят современные психологи (на самом деле это разные, конечно, термины, но по сути одно явление). По мере роста числа людей стало понятно, что коммуникации важны для ускорения роста и 20й век с его телеграфом по сути перечеркнул логику построения и развития государств предыдущих веков. Возникли институты над государствами (хотя важно помнить, что религия была первым таким институтом, как только государства стали отделяться от неё, конечно). Возникло понятие «этики» и «общечеловеческих ценностей», ну и прочие радости упрощающие жизнь во многом.

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

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

В качестве примера приведу довольно забавный случай: в школьные годы у меня был друг который песню столь популярного Beatles «Hey Jude» переводил не иначе как «Привет, еврей» (слова похожи, но всё же разные и в песне Битлз речь об имени собственном, конечно). И вот это было тогда НОРМАЛЬНО!!! Ибо тогда шла война между Израилем и Египтом, Сирией, Ливаном и СССР, в котором мы жили, был на стороне последних, конечно, то есть против Израиля, создание которого СССР как раз поддержал в 1947 году. Повторю, что в 80е года прошлого века в СССР это было совершенно нормально и ни у кого в мыслях не было осуждать или как-то сильно спорить с такой точкой зрения, хотя она и не имела отношения к оригиналу от слова «совсем». Современный термин для этого явления называется «когнитивные искажения», хотя по сути просто «недостаточный анализ» или неспособность или невозможность глубокого анализа. Сразу скажу, что в СССР глубокий анализ был весьма затруднён сложившейся тогда системой общественных отношений типа «я начальник — ты дурак» (сама система крайне древняя, конечно, и документально известна с египетских времён) или «борьбы с инакомыслием» как это потом называлось в СМИ (это явление тоже пришло к нам из древности и было свойственно всем религиям ибо там борьба таковая велась на уничтожение и весьма масштабно).

Это я всё к тому, что он всерьёз думал, что Битлз поёт про евреев, хотя это был его вымысел! Конечно, это был вымысел которым он делился, а уж какое количество вымыслов хранится в головах людей и представить себе невозможно, хотя статистика делает своё чёрное дело и «братья по бреду» находят друг друга в интернете и иногда становятся «страшной силой», которую даже государства иногда запрещают или одобряют, как, например, вся история с криптовалютами ибо там было сразу ясно, что слово «валюта» там не более чем «рекламный бушлит». Ну или любыми виртуальными пирамидами (реальные каменные пирамиды не виноваты, что американский финансовый регулятор так назвал деятельность коммивояжера итальянского происхождения), которые появились в 1919 году (совсем недавно же!).

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

PS: ну и напоследок прекраснейшая иллюстрация:

Странная встреча

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

Однако, парни решили тупо немного заработать на командировочных ибо НИ ОДНОГО предложения они не привезли, равно как и не написали!!!

Лично моё мнение, что эту «шушеру» надо срочно увольнять оператору думающему о сокращении издержек на бездельниках!!! Вот по факту я увидел толпу бездельников, которые «врут как дышат»!!! Чего стоит формулировка: «ну Вы же знаете себестоимость услуги?» при том, что я в этой услуге рядовой потребитель!!! Мне пришлось промолчать ибо я был шокирован уровнем вранья!!! Я знаю только цену по которой я могу купить услугу, а не то как устроено враньё внутри тусовки БЕЗДЕЛЬНИКОВ!!!

По факту парни просто оформили командировку и не более того!!! ЗАЧЕМ ВСЁ ЭТО??? Лично я добавил в карму этого партнёра — 100500 и очень рад, что мы от них ушли… думаю, что скоро и от второго подобного уйдём…

Если вдруг будет попытка следующей встречи, то я частно напомню эту смешную историю тому оператору… не верю, что у них что-то кроме сокращения штата случится… а сокращать там надо много кого!!!

Неожиданно полезное общение с Водоканалом

Этой осенью Ижводоканал передал функции сбора оплаты Энергосбыту. Так что, теперь счета стали выставляться и оплачиваться современными способами ибо раньше это было нечто крайне странное и невообразимое. Надо было звонить в абонентскую службу сообщать показания счётчика, после этого они по телефону говорили сумму к оплате и просили перечислить через Сбербанк на счёт Водоканала с указанием номера договора.  Довелось мне так однажды оплачивать и при оплате было озвучено, что объём канализации у меня считается с учётом норм полива земельного участка, так что, чуть-чуть меньше, чем объём потреблённой воды. Как я уже писал раньше цену на водооотведение у нас тут очень лихо подняли и планируют дальше не сбавлять темпа роста цен. Ну и переход оплаты в Энергосбыт привёл к тому, что теперь я вижу платежку и понимаю за что конкретно платить и, конечно, мне показалось нелогичным оплачивать отведение воды в том же объёме что и её потребление, так как у меня часть воды уходит на полив летом, а на увлажнитель она и вовсе круглый год расходуется.

В результате я написал вопрос в Энергосбыт на их сайте и через месяц  (не понимаю зачем эта задержка в месяц у них?) мне позвонил специалист из Водоканала (то есть Энергосбыт просто переслали мой вопрос в Водоканал, но не сразу, а через месяц) и выслушав мою ситуацию сказал, что мне необходимо установить два дополнительных счётчика воды на полив и вентиляцию. Написать им письмо приложив паспорта приборов учёта и далее я буду сдавать показания не одного, а 3х счётчиков и водоотведение будет считаться как разница. Я очень обрадовался, что есть такое несложное в реализации решение и мне даже подсказали, что само заявление на принятие этих приборов учёта можно прямо на сайте написать. Вот прямо прогресс! Процесс, понятно, не быстрый и его я опишу по мере завершения, думаю месяца два на это уйдёт, наверное.

Сегодня же мне позвонили из бухгалтерии Водоканала и сказали, что ме сделали перерасчёт и уменьшат сумму платежей на 3 600₽ ибо из-за того, что я им не подавал данные счётчика какое-то время то они считали мне «по нормативу». И вот я прямо так задумался что же за такой «норматив», что он больше чем реальное потребление воды увлажнителем (напомню, что зимой он до 1м3 в сутки расходует по данным счётчика). Это я всё к тому, что нынешние тарифы на ЖКХ не просто высокие, а ещё и создают массу потенциальных издержек за счёт столь несовершенных статистических данных, методик и законов. То есть, у нас законодательно поставщика не обязывают вести учёт отгрузки потребителю, что, конечно, нонсенс и по сути выглядит как требование покупателям приходить со своими весами в магазин!