Знакомство

Общая информация о проекте. Цели, применение, функционал и прочее.
w5277c
Сообщения: 18
Зарегистрирован: 16 мар 2022, 11:18

Знакомство

Непрочитанное сообщение w5277c »

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

Увлекаюсь цифровой электроникой, в основном микроконтроллерами Atmel(теперь Microchip Technology) серии Atmega, Attiny.
Кроме прочего, имею хороший опыт в процессах интегрирования сетевого оборудования, а также автоматизации в рамках IoT.
В схемотехнике я любитель, около 7 лет.

Со стороны может показаться что я сильно консервативен. Ведь я предпочитаю разрабатывать прошивки для микроконтроллеров на Ассемблере а не на Си, предпочитаю использовать 8-битный AVR микроконтроллер вместо 32-битного STM. Предпочитаю как в использовании так и в реализации нативные приложения вместо WEB'а. Практически не использую фреймворки, основываясь на библиотеках, в том числе и собственных.

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

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

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

Я приведу несколько основных критерий, которых я придерживался при реализации моего проекта:

[b]Конструктор[/b]

Это решение с широким функционалом. Оно буквально практически ничем не ограничено. Основа заложена так, что решение достаточно легко расширяемо. Основной функционал разработан для интегратора, есть API и различные точки входа. Конечный потребитель вместо тяжеловесного клиента может пользоваться Алисой или просто Телеграммом да и вообще чем угодно, была бы необходимость - реализуем.

[b]Максимальная независимость от чужих решений[/b]

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

Уменьшая количество сторонних узлов, сервисов и разных сторонних проектов я уменьшаю данные риски. И по сути да, я иду в противоположном направлении чем современное IT.

[b]Широкая поддержка оборудования[/b]

Я живу в азиатской части России, рядом Китай. Мои часто посещаемые сайты, такие как Таобао и 1688. Китай создает огромное разнообразие различных недорогих устройств автоматизации, при этом зачастую с программной частью мягко говоря все плохо. Я считаю, что такие компании как Xiaomi( ограничивающие использование устройств только в своей экосистеме) поступают не справедливо в отношении своих клиентов. Нужно разделять производство устройств и предоставление сервиса.

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

[b]Зачем нам программист?[/b]

Сама по себе автоматизация в большинстве случаев не требует привлечения программиста для решения задачи.

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

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

Зачем использовать Arduino и сталкиваться с необходимостью реализации кода(пусть даже copy-paste), если есть решение где практически все уже есть(или будет по необходимости)? А Вы сможете посвятить себя именно процессу созидания(объединения устройств и их настройке) без изучения Си/Си++.

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

[b]Мультиплатформенность[/b]

Все компоненты проекта (кроме прошивок) реализуются на JavaSE 8(+JFX для клиента). Это позволяет запускать решение везде, где есть JVM. Это компьютеры с GNU Linux, Windows, MacOS, микрокомпьютеры типа RaspberryPi, OrangePi, NanoPi и прочее. Это даже старые Android телефоны, которые вам жалко выбросить и которые уже ни на что не пригодны, ведь тот-же java контроллер(выполняет опрос и управление устройствами) я легко развернул на Huawei U8860 Honor с Android 4.0.3 - устройство, судя Вики, анонсировано 11 лет назад.

[b]Простата использования[/b]

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

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

Более того, я не вижу ничего проще и надежнее выключателя на стене. Управление голосом, хлопками, смартфоном или ИК пультом - это все игрушки, чаще всего это эффектно, но не эффективно. Чаще удобней протянуть руку проходя мимо выключателя, чем искать пульт или достать смартфон, разблокировать, запустить приложение и в нем что-то там сделать. Да и Алиса не всегда адекватная. Попробуйте сказать ей 'Включить свет в зале' - в последний раз, когда я проверял, она всегда искажала данную фразу.

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

[b]Проводное решение[/b]

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

Более того, беспроводные датчики безопасности на окна и двери? Давайте подумаем. Эта штука должна передавать сигнал как минимум когда дверь открыли или закрыли. И для этого емкости маленькой батареи достаточно. А что если начнут глушить сигнал? Очевидно - устройству нужно передавать периодически сигнал для того чтобы приемник мог определить, живо устройство или нет. Вот если данное действие делать достаточно часто, то батарея проживет не год, а в лучшем случае несколько недель. Я ошибаюсь?

В любом случае, зачем Вам в умном доме дополнительное электромагнитное излучение?

Да, провода нужно прокладывать, так же как лучше проложить UTP(Ethernet) кабель от маршрутизатора/модема до компьютера(получим и скорость выше чем по Wi-Fi и качество связи лучше). К примеру для RS-485(который я использую в своих устройствах) достаточно 2 пары UTP.

[b]Экономия ресурсов[/b]

Вы знаете, что современные WEB технологии не экономят ни трафик ни ресурсы Вашего компьютера? К примеру, многие передачи данных между WEB сервером и Вашим браузером содержат около 10% полезной информации, все остальные 90% данных Вам не нужны. А ведь эти данные забивают интернет каналы заставляю Вас дольше ждать загрузку и влияют на загруженность Вашего процессора. Да и платим мы провайдерам за ширину канала.

Вы знаете, что для большинства IoT устройств не нужны большие ресурсы? Чаще всего с обычной задачей может справиться микроконтроллер с 8МГц, 4-16Кб ROM и 256-1024Б RAM? Такой как Atmel Atmega8/88/168 а иногда и Attiny2313a/Attiny13a. Почему тогда так популярен STM32, который на порядки сложнее? Стоит ли говорить, что на рынке электроники дешевле то, что популярно?

Когда я начинал работать над своим проектом STM8 был дороже в раза 2 чем Atmega. И главное - Atmega доступнее, его скопировали Китайцы, да и в России тоже есть его копии. А нам вообще еще поставляют STM?

А еще я пишу не на Си, а на Ассемблере. Многие со мной поспорят, и большинство из них ничего не знают об Ассемблере, Ассемблер гораздо лучше подходит для 8-битных микроконтроллеров чем Си. Да и ко всему прочему у меня есть своя операционная система реального времени для AVR написанная полностью на Ассемблере. Есть программная надстройка с реализацией всего необходимого для моей линейки устройств. Так что разработка прошивок на Ассемблере для меня не сложнее разработки аналогичных решений на Си. Зато я сильно экономлю ресурсы микроконтроллера, да и отладка кода заметно легче.

[b]Российское ПО[/b]

Как я уже сказал, у меня есть своя операционная система core5277 для микроконтроллеров AVR которая является полностью Российским решением, там даже комментарии на Русском.

Остальные компоненты хоть и базируются на JDK8+JFX8, состоят на 95% из Российского кода, 5% заменить не сложно.

[b]Несколько режимов работы[/b]

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

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

Облако - удаленный многопользовательский доступ с любой точки мира с полным функционалом.

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

Это не все преимущества, но на сегодня хватит.

Подытожу.

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

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

Проект практически не завязан на сторонние сервисы, что повышает его надежность.

Проект не имеет каких-либо серьезных ограничений. Основные компоненты проекта(клиент и контроллер) распространяются бесплатно. Основные сервисы предоставляемые сервером также бесплатны(сервер не распространяется).

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