diff --git a/README.md b/README.md index 319e83a2..f3ca3393 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,11 @@ -# AbLog +# AbLog v.3 ### предыдущие версии -Данное решение это третья версия подобного решения моего авторства +Это третья версия подобного решения моего авторства. +* Первая версия представляла из себя сервер под Android (Xamarin), а удалённый доступ предоставлялся через TelegramBot. Проект закрыт. +* Вторая версия приложения работала как под андроидом так и под Windows, Mac и Linux. В роли транспортного протокола использовался IMAP. Проект закрыт. +> Первые версии имели ряд критических недостатков (прежде всего в силу выбранных архитектурных решений/подходов и были окончательно закрыты). Идея хоститься на Android изначально мне очень нравилась, но надёжность хостинга в службах на этих устройствах была непредсказуема/недостаточна. На устройствах некотрых производителей Android устройств (прежде всего Xiaomi и другие китайфоны) работа OS жёстко ограничена и в погоне за максимальной производительностью службы (*Foreground services*) там могли быть внезапно остановлены вопреки ожидаемому поведению, которое официально задукоментировано Android. +Использование протокола IMAP как транспортного так же показало свою ненадёжность в зависимости от хостинга. ## Введение Клиент-серверный вариант приложения для доступа к контроллерам умного дома [ab-log](https://ab-log.ru/) через MQTT сервер. Если быть точным, то это комплект из двух приложений (+ доступ через TelegramBot): @@ -50,16 +54,18 @@ Использование шифрования трафика MQTT парольной фразой обеспечит достаточную анонимнось что бы ни кто не мог увидеть данные, которые ходят между серверной частью и удалённым клиентом. В то же время: серверная часть так же как и удалённый клиент Все данные открыто хранят в своей локлаьной БД. Если злоумышленник получит доступ локальному диску сервера или клиента - он получит доступ в том числе и к логинам/паролям MQTT, что позволит получить полный доступ к данному программному решению. Следует иметь ввиду, что удалённый клиент хранит у себя только настройки MQTT, а всё остальное для него проходит в режиме онлайн через MQTT транспорт. ### Управление правами доступа -Уровни прав регулируются только для TelegramBot доступа. Для него можно отдельно разрешить разные области доступа. Что касается доступ через удалённый клиент, то разграничений по правам нет. Вы можете добавлять/удалять пользователей средствами управления акаунтами MQTT. Технически вы можете везде использовать один +Уровни прав регулируются только для TelegramBot доступа. Для него можно отдельно разрешить разные области доступа. Что касается доступ через удалённый клиент, то разграничений по правам нет. Вы можете добавлять/удалять пользователей средствами управления акаунтами MQTT. Технически вы можете везде (на сервере и удалённых клиентах одновременно) использовать один и тот же акаунт MQTT, но тогда для того что бы отключить одного клиента вам прийдётся перенастроить и серверную часть и на всех удалённых клиентах. Если же для каждого узла использовать отдельные логин/пароль, то отключение одного отдельно взятого клиента будет проходить безболезненно. Например hivemq.cloud в бесплатной версии позволяет заводить до сотни акаунтов на сервер. ### База данных В качестве СУБД используется SQLite. Это касается как удалённого клиента так и сервера. В то же время: удалённый клиент хранит у себя только настройки подключения к MQTT, а остальные настройки хранятся в БД серверной части. ### Особенности и ограничения использования бесплатного MQTT hivemq.cloud -... +На данный момент бесплатный тарифный план имеет следующие ограничения: ++ 100 IoT device connections. ++ 10 GB traffic per month. ++ Up to 3 days data retention time. ++ 5 MB message size. ### Изоляция нескольких контуров в рамках одного сервера MQTT (префиксы топиков) -Если у вас один единственный сервер MQTT, то по умолчанию все клиенты и сервер вместе с ними находятся в одном контуре. -### -### \ No newline at end of file +Если у вас один единственный сервер MQTT, то по умолчанию все клиенты и сервер вместе с ними находятся в едином контуре. Т.е. имена MQTT топиков и подписки на них в рамках одного сервера будут разносить данные из разных контекстов в единую кучу. Избежать этого позволяет использование префиксов MQTT топиков. Благодаря префиксам имена топиков становятся уникальными в зависимости от рабочего контура. Таким образом разные группы пользователей могут работать не мешаю друг другу. \ No newline at end of file