"MATT" писал(а):
ну, к тому времени когда я освою программирование, бизнес на обслуживании "умных домов" будет уже насыщен
Далеко не всегда)
+ у тебя будет бонус после освоения этого поприща - собственный умный дом постоеный собственными руками)
"Seel" писал(а):
Напомню пословицу: 100% неначатых дел заканчиваются провалом.
+1
Уф, выходные были сложными)
Решил пилить умный дом на основе Web технологий.
Крутиться всё будет на моей Raspberry Pi3, которая работает под Raspbian (linux), возможно в будущем перееду на Windows 10 IoT.
Писать буду на любимом C#.
Приложение будет доступно по url адресу внутри домашней сети, возможно позже проброшу в интернет, что бы доступаться с любой точки мира, где есть интернет.
Приложение будет 3х-слойным:
1_. View Layer - Слой для взаимодействия с пользователем (Включение и выключение тех или инных девайсов, прочее).
2_. Business Layer (BL) - Слой, в котором будет происходить вся магия. Все основные сценарии будут написаны тут. В будущем в планах есть идея вывести какой-то API на View Layer и создавать код через UI, но это довольно муторно и пока что далеко не приоритетно. А поскольку пилю я под себя, а не на продажу, то вообще не вижу в этом профита.
3_. Device Access Layer (DAL) - Слой, в котором будет происходить взаимодействие приложения непосредственно с Z-Wave адаптером и/или любым другим адаптером для каких либо устройств. В будущем, если решу переехать с Raspbian на Windows 10 IoT, или вообще сменить raspbery на PC, то нужно будет переписать только этот слой, а не всё приложение.
За выходные удалось надыбать интересный фреймворк - NencyFx. Он позволяет создавать очень простые и легковесные Web приложения на .Net с поддержкой Mono. К тому же есть возможность использовать его без какого либо сервера! Nancy.SelfHosting!
Решил, что на нём будет располагаться 3й стой моего умного дома - DAL (Device Access Layer).
К нему буду обращаться из BL (Business Layer) о средствам Web API (читай "с помощью Json").
Накрапал простенькую програмку типу "Hello World", которая или рендерит страницу с приветствием или Json с ним же.
Добавил в "supervisor" (читай автозапуск) и сделал переадресацию с порта входа в Raspberry на нужный порт, под которым запущен апликейшин.
Дальше начал искать, на чём же пилить оставшиеся 2 слоя приложения.
Думал использовать .Net Core, он же, как бы, кроссплатформенный... Угу, ЩАЗЗЗ!!!
Он хоть и кроссплатформенный, но на ARM процессорах работать не умеет) Облом вышел.
Пришлось искать, как запилить ASP.NET 5.2 MVC 5 приложение под Mono и задеплоить его под Linux.
На это я убил 2 ночи. С Apache2 я не разобрался, Nginx+FastCGI мне трепал нервы и не поддавался.
В итоге, минут 15 назад я таки победил эту беду и смог таки захостить на своей Raspberry Pi ASP.NET 5.2 MVC 5 приложение при помощи Nginx+XSP.
Так же сделал переадресацию с порта входа в Raspberry на нужный порт, под которым запущен апликейшин и добавил выполнение запуска XSP в "supervisor" (читай автозапуск).
Вот, и теперь, сидя за своим PC на Windows 10, я, совершенно спокойно, обращаясь через Url по внутреннему IP моей домашней сети к Raspberry Pi3 и указывая нужный мне порт могу видет ответы от 2х приложений:
1_. ASP.NET 5.2 MVC 5, которое в будущем станет высокоуровневой частью моего умного дома.
2_. Nancy.SelfHosting, которое будет выполнять роль адаптера между высокоуровневым приложением и доступом непосредственно к железу (для начала это будет только Z-Wave usb адаптер).
Фуф, вот, как-то так.
Скромненько, но со вкусом)
P.s. Пара скриншотов, из браузера и из supervisor'a Raspberry.
- Спойлер
__________!///_ _____
_________( @@ )_____
_______ooO-(_)-o o____
Пришёл, увидел, забанил. Ещё вопросы?
Если у Вас нет бана - это не Ваша заслуга - это наше упущение.
- Уровень профиля от John