Мысли вслух, надежность текущего решения.

Сегодня был в офисе, и рассказал директору, что контроллер в ДВФУ перестал выходить на связь.

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

Вполне возможно, что дело было просто в глючной Ёпте, которая в очередной раз сдохла(модем очень часто подвисает, помогает только обесточивание модема). Но пока я этого не знаю. Мой контроллер(на базе NanoPi Neo) отработал 3 недели без малейшего вмешательства. Железка с 256 мегабайтами памяти с Джавой на борту и достаточно не простым приложением.

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

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

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

Новый функционал, Android widget

А сегодня я отставил в сторону примус и занялся виджетами.




Хорошо, когда есть наработанные библиотеки выполняющие все, что не связано с GUI, остается только интегрировать необходимые библиотеки и написать GUI.

Думаю, в понедельник на моем сайте будет лежать apk с реализацией виджета.
Это же удобно да? Иметь виджет 1x1 в виде текущего показания устройства либо в виде кнопки для управления устройством, там включить, выключить и т.д.

Ну и ладно, что форма настройки позволяет каждый виджет привязать к уникальному серверу, проекту, пользователю, устройству и показанию/каналу управления.

Хотя да, куда мне до всяких там ксиаоми?

Обновление от 24.02.2020:

Не успел я сделать все что хотел за эти дни, но, тем не менее, показания читать можно:

Снимок экрана_2020-02-24_22-45-48.png





Конечно это далеко не все, еще будет работа над дизайном и над элементами управления.
Плюс оптимизация и мелкий багфиксинг.

Обновление от 25.02.2020:


Новый функционал, краткий очерк.

Пока мир сходит с ума, я понемногу починяю примус.

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



1) Облако
2) Прямое подключение к контроллеру
3) Новое - прямое подключение к устройствам.

Немного о третьем варианте.

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

А еще мне попали в руки устройства продающиеся под брендом Xiaomi. Пара разных WiFi розеток, WiFi цветная лампа и Bluetooth датчик температуры и влажности. Все устройства введены в проект и работают. Работают как в локальной сети так и в облаке без серверов Xiaomi.





А еще у меня наконец-то дошли руки до инсталлятора под windows, оно даже работает. Там же лежит apk для Андроида.

Появилась группировка показаний от различных устройств в виде одного виртуального устройства.



Значительно снижена нагрузка на процессор в контроллере, а также пофиксены многие мелкие баги.

И честно говоря хрен знает что еще я забыл сказать. Это не важно, важно то, что я до сих пор вкладываю в свое детище силы и время.


Близится время когда клиент полетит китайцам, производящим всяческое дешевое железо без стоящего ПО.
Будет весело.

МЕТКА: Не забыть закупить попкорна.

P.S. И да, стоит отметить одну важную деталь - начат процесс введения сторонних беспроводных решений. Никаких серьезных проблем не обнаружено(кроме конечно мелких проблем из-за очередной дури 'великих' и 'ужасных' 'производителей')

P.P.S А это так, просто тестовый проект в Технопарке 'Русский'(ДВФУ)

Участие в питч-сессии "Дорога в будущее"

  ОАО «РЖД» совместно с технопарком «Русский» провел конкурс инновационных проектов, потенциально применимых на Дальневосточной железной дороге.

  Было около 30 команд, из них  вышла в финал где-то половина.



  Думаю завтра более подробную информацию можно будет найти на сайте технопарка https://rutechpark.ru/

  Каждой команде было отведено по 3 минуты на презентацию, и столько же на диалог вопрос-ответ. Вот коротенькая презентация моего руководителя по данному проекту http://5277.ru/distr/other/short_presentation.pdf

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

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

Главные вопросы, напоминание что это и зачем

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

Что же я такое делаю? Давайте разбираться.

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

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

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

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

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

Дополнение:
Уже несколько лет я применяю свое решение у себя дома.
Я управляю светом почти во всех комнатах, измеряю температуру и влажность, управляю другими электроприборами, при этом я не использую ни чужие устройства ни чужое ПО, но могу, они у меня есть. Я смотрю графики, получаю уведомления управляю сообщениями через тот-же телеграм, жена постоянно задает яркость диммеру в зале просто кидая фразы боту типа '35' или '320'(Зал, яркость 20%), есть постоянный контроль входной двери с звуковым сопровождением и сообщениями на мобильные устройства. И все это не ново и уже никого не удивляет - любой настырный ардуинщик может сделать тоже самое. Главное отличие в том, что когда я это все настраивал, дополнял, изменял условия и многое другое - я ни написал ни одной строчки кода, при этом имея очень богатый функционал. Все что я сделал - при желании сможет повторить моя супруга или подросток просто ознакомившись с роликами на ютубе(которых пока нет, но обязательно будут).

Система достаточно легко усваивается, и она универсальна, главное - чтобы Ваше устройство в ней поддерживалось, и здесь я готов получив ваш код, его проинспектировать и добавить, либо за вознаграждение написать сам. Хотя вероятнее всего, если Ваше устройство широко распространено, оно либо уже в моей системе, либо скоро появится.

Хлебные крошки системотехника, watchdog под armbian

Я тут немного воюю с ресурсами nanopi с 256MB RAM, хочу, чтобы там себя хорошо чувствовала java8, при этом swap изначально там очень маленький, что-то около 200MB.
А сама JVM любит кушать 150MB минимум(без кучи), не хватат в общем.

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

Взаимодействие проще некуда:
Я добавляю параметр при запуске java контрллера -w /dev/watchdog.
А дальше работает мой контроллер, он инициирует watchdog и каждые 5 секунд обнуляет его, при завершении процесса watchgog отключается.
Таким образом, произойдет полный перезапуск железки, если упадет jvm или зависнет linux(ядро).

Watchdog кормлю '1' для инициализации, '.' для сброса счетчика и 'V' для отключения.

Новый функционал, сценарии.

Ничего особенного.

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

А еще ввел возможность запускать сценарии из сценария другого контроллера (возможность влиять на работу контроллера из другого контроллера), мелочь, но приятно.

Новая ОС, не Попова.

Вы хорошо знаете rtos?

Я ее не знаю. Это правда, что она писана на си и нет решения на ассемблере?
Вообще мне по хрену, и я не Денис Попов.

Я просто не люблю зависеть от чужих решений.
Поэтому думаю, что имею полное право, в виде своего хобби, запилить ОС на ассемблере, скажем для ATMega88.

Скажу, что такое уже реализовано в коммерческом проекте.
Хочу сделать подобное, даже чем-то лучше.

Давно хочу, но пожалуй именно в этом я вижу свой стимул на текущий момент.
При этом уже есть наработки.
Сейчас ос поддерживает до 6 параллельно выполняющихся задач и еще 4 процедуры (не забываем про объем памяти - 1кБ на 16мГц максимум).

И с сегодняшнего дня я пилю драйвера встроенного UART, программного UART, обработчика кнопки и все что придет в голову(опыт большой).

Все просто, 8-ми битный микроконтроллер с малым объемом ресурсов и ОС для проектов на чистом ассемблере.

P.S. Сегодня обычный день, не мой день рождения, но не обычная ночь, и мой дом до сих пор безъядерная зона. Однако GluonHQ уже не мечта в далеком будущем, а реальность, реальность с проектом реализованным на 90%, осталось просто мелочь. Интересно, как скоро я смогу пользоваться своей ос?

JSON зло

Потоковый парсинг нескольких десятков килобайт JSON на мини компьютере отработал за несколько десятков секунд в режиме процессора OnDemand.

Недавно я задавался вопросом, почему на старом смартфоне(с андроидом 4.4) происходят постоянные сетевые сбои - дело просто в таймауте, который у меня выставлен на 5 секунд.
Просто один только парсинг json'а сжирает гораздо больше времени...

У меня были варианты, много, среди них - оставить как есть, или использовать что-то другое.

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

В итоге я создал свой протокол, который в текстовом виде выглядит как JSON, но передача информации осуществляется чисто в бинарном виде, что значительно упрощает его парсинг.

Выбираю Gluon, нет не клей.

Сегодня не совсем обычный день ночь, и я объявляю свой дом безъядерной зоной начало разработки клиента на основе той же JavaFX в купе продуктов компании Gluon https://gluonhq.com/.

Давно к ним приглядывался, но раньше не было стимула, теперь он есть в виде Huawei P Smart 2019 https://consumer.huawei.com/ru/phones/p-smart-2019/. Да, я не люблю Андроид, но еще больше я не люблю современные поделия до которых опустился Apple, тем более за огромную сумму.

Если вкратце, эти ребята обещают, что единожды написанный код будет работать на десктопах, Android устройствах и IOS устрйоствах без какого либо веба.  Здорово да? Мои давние тесты для десктопа и Android показали, что это вполне реально. Правда для Apple устройств нужен Mac. Может быть в будущем он у меня будет, а может мы в конце концов наберем команду и Mac будет у другого разработчика, что тоже не плохо.

Итак,  у меня есть библиотека со всем функционалом необходимым клиенту, необходимо обновить UI - вью и контроллеры. И главное - у меня есть ровно та же среда разработки, тот-же язык и те же инструменты(как например SceneBuilder). Из изменений только дополнительный плагин Gluon и немного больше требований по коду.

Я серьезно считаю, что это просто бомба. Но почему же тогда оракллл закрыл бесплатную лицензию для их бинарников JDK8 и вырезал JavaFX в свежих версиях Java? Почему основные разработчики оракл вводят всякие ламбда хулямбда но не расширяют JavaFX на все платформы? Почему при оракл JavaFX не развивался никак существенно? Хм, лично я считаю потому, что такие компании как оракл, мелкопакостные и гугел никогда не ставили себе цель сделать нашу жизнь лучше, в отличии от Sun Microsystems.

P.S. Вот что интересно, большинство ПО которое я использую в работе создало Sun Microsystems.

Update: Вот так выглядит новый клиент(на gluon), видно разницу?



Все основное реализовано, осталось допилить мелочевку.