Не IoT, а малина! Строим IoT-проект на Raspberry Pi с Windows 10 и DeviceHive

29 июля 2015 года завершилась эпоха Windows Embedded — отдельного семейства операционных систем, используемых в программно-технических комплексах. На смену ей пришла Windows 10 IoT — встраиваемая операционная система, предназначенная для управления промышленными и домашними интеллектуальными системами, то есть всего того, что принято обозначать модной фразой «интернет вещей».

Предполагается выпустить несколько редакций этой ОС, вроде бы их должно быть семь, но пока что наиболее известными являются три — IoT Industrial, Mobile Enterprise и IoT Core.

Первая редакция, IoT Industrial, имеет много общего с Windows 10 Enterprise, отличаясь от последней оптимизацией под конкретный тип устройств и операций. Редакция Mobile Enterprise с архитектурой ARM и поддержкой универсальных приложений предназначается, как видно из названия, для мобильных устройств. Самая любопытная редакция, IoT Core, служит для управления устройствами с ограниченными ресурсами вроде Raspberry Pi 2 и Intel Minnowboard MAX. Системные требования Windows 10 IoT Core более чем скромны — для работы системе хватит всего 256 Мб ОЗУ и 2 Гб физического пространства.

Windows 10 IoT Core поддерживает универсальные и написанные на C и C++ консольные приложения, протокол SSH, управление базовыми системными настройками, есть PowerShell Remoting, веб-сервер Node.js, но ни рабочего стола в привычном понимании, ни меню Пуск, давно ставшего визитной карточной операционных систем Windows в ней нет. Интерфейс Windows 10 IoT Core практически не имеет ничего общего с интерфейсом десктопных и серверных систем, это скорее панель управления с подключенными к ней устройствами.

Да, всё это интересно, но можно ли скачать и установить это чудо на обычный компьютер? В принципе можно, сборка для платы MinnowBoard Max поддерживает архитектуру x86, но какая от всего этого будет практическая выгода? IoT Core не предназначается для установки на десктопные ПК, если же вы просто хотите получить о ней общее представление, можно поставить ее на бесплатный гипервизор VirtualBox. Предположим, VirtualBox у вас уже есть, теперь нужно скачать образ Windows 10 IoT Core с официального сайта Microsoft или поискать его в сети.

Скачанный ISO-образ не является загрузочным, на самом деле это запакованный MSI-инсталлятор. Извлеките его из образа и установите как обычную программу.

5419340_1.jpg

Затем проследуйте в папку C:Program FilesMicrosoft IoTFFUMinnowBoardMax.

5419340_2.jpg

В ней вы найдите файл flash.ffu, представляющий собой образ прошивки. Теперь его нужно преобразовать в поддерживаемый VirtualBox файл виртуального диска VHD. Скачайте со странички forum.xda-developers.com/showthread.php?t=2066903 архив с утилитой ImgMount распакуйте его, запустите от имени администратора командную строку и выполните такого вида команды:

cd C:Program FilesMicrosoft IoTFFUMinnowBoardMax  D:ImgMountImgMount.exe flash.ffu  

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

Если в процессе выполнения второй команды вы получите ошибку «Не удается продолжить выполнение кода, поскольку система не обнаружила MSVCP110.dll», скачайте с сайта Microsoft и установите пакеты Visual Studio 2012-1015.

В результате на компьютере будет создан и замонтирован виртуальный диск VHD. Откройте оснастку управления дисками, кликните по диску ПКМ и выберите в меню «Отсоединить виртуальный жесткий диск».

Скопируйте в открывшемся окошке путь к VHD-контейнеру.

Нажмите «OK», перейдите в его расположение и переместите файл в удобную вам папку.

Почти всё готово, осталось только создать виртуальную машину.

Запускаем VirtualBox, даем машине имя, выделяем немного оперативки (хватит и 512 Мб), в блоке «Жесткий диск» выбираем «Использовать существующий виртуальный жесткий диск» и указываем путь к файлу VHD.

После этого заходим в настройки созданной виртуальной машины, на вкладке «Система» обязательно ставим галочку «Включить EFI (только специальные ОС)».

Если вы собираетесь подключить Windows 10 IoT Core к интернету, дополнительно на вкладке «Сеть» попробуйте заменить тип подключения «NAT» на «Виртуальный адаптер хоста».

Убедитесь, что используется контролер SATA.

Теперь можно запускать машину.

Если всё было сделано правильно, вскоре вы увидите приветственное окно Windows 10 IoT Core.

Что дальше?

Можете ознакомиться с руководством по использованию системы на платах Raspberry Pi 2 и Intel Minnowboard MAX.

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

Windows 10 IoT Core:

www.microsoft.com/en-us/download/details.aspx?id=48233&ampWT.mc_id=rss_alldownloads_all

Установка Windows 10 IoT на Raspberry PI 2

Details
Категория: Raspberry
Создано: Вторник, 21 Март 2017 09:42
Автор Super User
Просмотров: 4065

В статье речь пойдет об установке операционной системы Windows 10 IoT на мини компьютер Raspberry PI 2-3, и инструментах, которые для этого потребуются.

Для работы нам потребуется подключение к сети интернет и следующие инструменты:

  • Visual Studio 15-17 (любая из трех редакций);
  • Dashboard;
  • Windows IoT Remote Client (лучше его сразу установить);
  • microSD Flash Card минимум 8 Гб. (у меняя 16 Гб);
  • Картридер.

Вообще, для первой установки Windows 10 IoT понадобится всего два компонента из перечисленных выше, но лучше все установить и настроить, и не возвращаться к этому.

Шаг 1. Скачиваем и устанавливаем Visual Studio (Visual Studio 2015,Visual Studio 2017). В моем случае, место установки студии — стандартное, способ установки — полная установка.Шаг 2. Пока устанавливается студия, скачиваем Dashboard и устанавливаем его. Берем картридер, вставляем в него карту памяти, подключаем картридер к компьютеру.  Запускаем программу Dashboard.

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

Далее вводим имя устройства (оно нам понадобится для подключения из студии). Вводим пароль администратора (он нам пригодится на следующих этапах, поэтому постарайтесь его запомнить).

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

Шаг 3. Пока скачивается образ, установим Windows-iot-remote-client.

Шаг 4. После того, как образ записан на карту памяти, вставляем ее в Raspbery PI. К Raspbery PI подключаем мышь, монитор и подаем питание. При первой загрузке выбираем язык и сеть.

Если нет возможности подключить Raspbery PI к монитору, можно воспользоваться Windows-iot-remote-client. Для этого нужно включить Raspbery PI и запустить программу Dashboard. На главной странице в разделе «Мои устройства»  должен появиться наш Raspbery PI (надо немного подождать, пока загрузится Windows). Кликаем по нему правой кнопкой мыши и выбираем пункт «Открыть в Device portal». При этом запустится браузер и появится окно безопасности. В поле «имя пользователя» вводим «administrator», а в поле «пароль» вводим пароль, который мы вводили при настройке образа.

Откроется панель управления Windows 10 IoT.

Переходим на вкладку «Remote» и устанавливаем галочку. Переходим в программу Dashboard, в разделе «Мои устройства»  выбираем Raspbery PI, кликаем по нему правой кнопкой мыши и выбираем пункт «Запустить удаленный клиент IoT». Должна запуститься программа «Windows-iot-remote-client» с подключением к  Raspbery PI.

Установка завершена.

На момент публикации статьи, в версии Windows 10 IoT 10.0.14393.953 удаленный клиент «Windows-iot-remote-client» не запускался, а в предыдущих и в следующих версиях работает корректно.

Добавить комментарий

Windows 10 IoT Core – особая операционная система Microsoft, оптимизированная для мини-компьютеров с ограниченным набором системных ресурсов, разрабатываемая в рамках концепции IoT (Internet of Things, «Интернет Вещей»). Предназначена для различных миниатюрных, встраиваемых решений и устройств «умного дома». В частности, минимальные требования для Core — архитектура x86/ARM , 256 Мб ОЗУ и 2 Гб емкости на диске/флешке. На данный момент гарантированно работает на платах Raspberry Pi 2 (ARM), Intel Minnowboard MAX (x86) и DragonBoard 410c. Windows 10 IoT Core является бесплатной платформой.

В этой статье мы рассмотрим, как установить Windows 10 IoT Core для Raspberry Pi 2 на SD карту, загрузить с нее систему и удаленной управлять платформой с Windows-компьютера при помощи PowerShell.

Нам понадобятся:

  • Собственно плата Raspberry Pi 2 (стоимость 25$)
  • MicroSD карта емкостью 8 или 16 Гб (класса 10 или выше)
  • HDMI-кабель для подключения к внешнему монитору / ТВ
  • Ethernet кабель для подключения к сети
  • МикроUSB кабель в качестве питающего кабеля (5V)
  • Компьютер с Windows 10 (для создания загрузочной SD карты обязательно должен быть физическим устройством, а не виртуальной машиной, т.к. требуется прямой доступ к SD карте)
  • Образ Windows 10 IoT Core для Raspberry Pi 2 (можно скачать по ссылке на странице https://developer.microsoft.com/en-us/windows/iot/downloads
  • USB клавиатуру/ USB мышь для управления Raspberry Pi (опционально)

Качаем образ Windows 10 IoT Core для Raspberry Pi 2 (10586.0.151029-1700.TH2_Release_IOTCoreRPi_armFRE.iso) и монтируем его в виртуальный CD привод. Устанавливаем Windows_10_IoT_Core_RPi2.msi.

Запись образа Windows 10 IoT Core на SD карту можно выполнить с помощью графической утилиты или из командной строки.

Для запуска графической утилиты запустите программу IoTCoreImageHelper.exe. Затем в окне мастера выберите вашу SD карту и укажите путь к файлу с образом системы flash.ffu (по умолчанию устанавливается в ”C:Program Files (x86)Microsoft IoTFFURaspberryPi2”) и запишите образ на SD диск, нажав на кнопку Flash.

Чтобы вручную записать образ, для удобства скопируем файл flash.ffu в каталог C:WindowsIoT. Затем вставим SD карту в компьютер и с помощью PowerShell выведем список дисков в системе:

Get-Disk | ft -AutoSize

Определяем номер диска нашей SD карты (в данном примере ее номер 1). Переходим в каталог, в котором хранится файл flash.ffu:

Cd C:WindowsIoT

С помощью следующей команды скопируем образ Windows 10 IoT на SD карту (PhysicalDrive1 нужно заменить на номер SD карты в вашей системе):

dism.exe /Apply-Image /ImageFile:flash.ffu /ApplyDrive:\.PhysicalDrive1 /SkipPlatformCheck

Безопасно извлеките SD карту.

Подключаем к плате Raspberry Pi 2 сетевой кабель, монитор через HDMI, записанную на предыдущем этапе SD карту с образом системы, USB кабель и загружаемся. Первая загрузка будет продолжительной, т.к. будет выполнение начальная настройка системы, после чего система перезагрузиться в нормальном режиме.

На дисплее должны отобразиться имя системы (по-умолчанию minwinpc), полученный IP адрес (если в сети имеется DHCP сервер), список подключенных устройств.

Устройства Windows 10 IoT подразумевает возможность управления через веб интерфейс. Утилита WindowsIoTCoreWatcher.exe позволяет найти в сети ip адреса устройств с Windows 10 IoT. Затем в браузере перейдите на порт 8080 обнаруженного ip адреса устройства. Для авторизации воспользуйтесь именем administrator и паролем p@ssw0rd.

Нам более интересна возможность подключения к устройству под Windows 10 IoT Core с помощью Powershell: Для этого запустим PowerShell с правами администратора.

Активируем WinRM:

net start WinRM

Затем добавим адрес Pi-устройства в список доверенных:

Set-Item WSMan:localhostClientTrustedHosts -Value "192.168.1.115"

Запустим новую удаленную сессию PowerShell:

Enter-PsSession -ComputerName "192.168.1.115" -Credential 192.168.1.115Administrator

Авторизуемся с помощью дефолтного пароля p@ssw0rd.

Совет. Авторизационные данные можно сохранить в переменной, чтобы не вводить их каждый раз вручную:

$Cred = Get-CredentialEnter-PsSession -ComputerName 192.168.1.115 -Credential $Cred

Новая сессия устанавливается в речении примерно 30 секунд. После этого в консоль можно вводить команды управления.

Рассмотрим некоторые типовые команды.

Вывести список запущенных процессов:

Get-Process

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

Get-NetAdapter

Вывод списка каталогов:

Gci

Переименовать компьютер:

set computername "newcomputername"

Изменить пароль администратора:

net user Administrator NewPa$$W0rd

Выключить устройство можно командой shutdown:

shutdown /s /t 0

Перезагрузить устройство:

shutdown /r /t 0

Завершить сессию PoSh:

Exit-PSSession

Более подробный список доступных команд консоли приведен на странице Windows 10 IoT Core Command Line Utils https://docs.microsoft.com/en-us/windows/iot-core/manage-your-device/commandlineutils.

1003.2018Рубрика:Всё о Raspberry PI

В нашей стране больше половины пользователей ПК на операционной системе Microsoft. Как раз для таких людей разработана система и для Raspberry PI. Таким образом разработчики позволяют делать различные устройства для интернет вещей (IoT) на операционной системе Windows. Самая последняя версия для Raspberry Pi 3 Windows 10. Вот её и будем устанавливать.

Приветствую всех, уважаемые читатели. В этой статье мы попробуем с вами установить новую ОС для «Малины». Мне самому очень интересно в чём заключается суть установки полностью закрытой оси на маленький одноплатный компьютер.

Установка и настройка Windows IoT

Установка и загрузка немного отличается от установки Raspbian на MicroSD c помощью NOOBS.

Нужно скачать и установить специальную утилиту Dashboard IoT. Скачать дистрибутив можно на официальном сайте по Raspberry.

Есть всего две версии Core и Insider Preview. Различий между ними совсем немного, Core стабильно работает. Insider Preview чуть поновее, но бывает виснет.

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

А тем временем я скачал утилиту.

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

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

Теперь можно пробовать запускать операционную систему.

Для чего нужна Windows IoT и что можно запускать?

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

Для управления этой платой существует несколько вариантов, так же, как и на UNIX’e.

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

2. Управление через штатную утилиту. Можно управлять Windows IoT через штатное средство Windows PowerShell. Легче всего подключиться к удаленной системе все через тот же Dashboard.

3.Управление через SSH. Так же как и в Linux SSH, подключаемся с ПК к терминалу Raspberry.

Я не вижу особого смысла и пользы от операционной системы Windows. У Microsoft не очень удобная политика — их система полностью закрытая. Некий чёрный ящик, в который так просто не залезешь. Поэтому для интернета вещей не доступная система.

Microsoft делает ставку исключительно на программы UWP. Их основная идея, чтобы все программы и устройства вливались в экосистему Windows.

Эксперимент по скрещиванию продукции Microsoft и крошечного компьютера Raspberry можно считать успешным. Связка работает, обновления ставятся, в сети видно. Вот только совсем непонятно для чего его использовать? Может кто знает? Для чего Ось нужна? Подскажите в комментариях. В интернете, на самом деле очень мало информации.

В принципе для простейших операций, автоматизации умного дома и различных бытовых устройств такая супер система не нужна. С этими задачами отлично справляется Arduino и ESP8266. ESP8266 уже сама по себе самодостаточная плата. Её так же можно запрограммировать.

Впрочем, наверняка найдутся задачи, в которых Windows IoT вкупе с платами типа Raspberry придутся как нельзя кстати, но произойдет сие скорее всего в корпоративном секторе, например, некоторые банкоматы, наконец-то перейдут с уже устаревшей OS/2 на современную платформу.

Вообще я читал много мнений и статей по поводу Малины. Лично для меня эта плата просто находка. Она выполняет все робототехнические задачи — машинное зрение, машинное обучение, голосовые команды.

Это идеальная вещь для разработки искуственного интеллекта.

С уважением, Гридин Семен

Привет, Хабр. Наверное каждый разработчик на определенном этапе задумывался о собственном IoT-проекте. Internet of Things сейчас поистине вездесущ и многим из нас хочется попробовать свои силы. Но не все знают, с чего начать и за что браться в первую очередь. Сегодня давайте посмотрим, как легко и непринужденно запустить свой собственный IoT-проект под Raspberry Pi 2, используя Windows 10 IoT Core и DeviceHive.

Деплоим Windows 10 приложения на Raspberry Pi 2

Для начала давайте установим Windows 10 IoT Core на Raspberry Pi. Для этого нам потребуется Windows 10 IoT Core Dashboard, который можно взять вот здесь. Там же можно при желании скачать отдельно ISO-образ, но особого смысла в этом нет — инструмент сделает это за вас. Затем мы загружаем образ на misroSD-флешку. 2f791c1419164761868efa1c0d26918b.jpg Подключаем флешку к Raspberry и включаем. Первую загрузку ОС придется подождать, мгновенной она, конечно, не будет. Когда устройство «оживет» — подключаем Raspberry к локальной сети по Ethernet. Снова открываем Windows 10 IoT Core Dashboard и видим в списке «Мои устройства» заветную строчку. К слову, можно обойтись и без проводного подключения – список WiFi-донглов, поддерживаемых Windows 10 IoT Core, находится тут. Далее нам понадобится Visual Studio 2015. Если она у вас все еще не установлена (хотя вы бы вряд ли читали эту статью в таком случае), можно скачать Community Edition. Создаем новый или же открываем существующий Windows Universal проект. Кстати, если в проекте не нужен UI, можно создать Headless Application, выбрав тип проекта Windows IoT Core Background Application.b1de043b5b904cbfad9fc139996a33b1.jpg Выбираем деплой на Remote Machine.049b0968875b4aa799d0e000a2b7121e.jpg Вводим адрес Raspberry. Посмотреть его можно на стартовом экране Win10 IoT Core или в Windows 10 IoT Core Dashboard.1c70bbf4ec224669851a7a83a4ef08cf.jpg

Собственно, Internet of Things

Раз уж у нас статья о embedded — «моргать светодиодами» придется в любом случае. Хорошо, что мы имеем дело с DeviceHive, у которого заготовлены инструменты на все случаи жизни и все платформы. Поэтому светодиод будет виртуальный и тоже на .NET. Клонируем master-ветку DeviceHive.NET репозитория с GitHub. На момент написания статьи рабочие примеры для Win10 IoT были именно там. Открываем solution DeviceHive.Device и в файле Program.cs проекта VirtualLed настраиваем доступ к песочнице DeviceHive.

using (var service = new RestfulDeviceService("http://playground.devicehive.com/api/rest")) {     // create a DeviceHive network where our device will reside     var network = new Network("Network WPNBEP", "Playground Network", "%NETWORK_KEY%");      //... } 

Если вы интересуетесь IoT, но по какой-то немыслимой причине еще не обзавелись DeviceHive Playground – это можно сделать здесь.109459ee851f4b06af3797d61085b55b.jpg А управлять нашим «светодиодом» будет… Нет, пока не Raspberry, а клиент виртуального светодиода. Пример находится в проекте VirtualLedClient солюшена DeviceHive.Client. Его тоже нужно настроить в файле Program.cs:

var connectionInfo = new DeviceHiveConnectionInfo("http://playground.devicehive.com/api/rest", "%ACCESS_KEY%"); 

Самое интересное

Наше приложение на Raspberry Pi будет не просто кнопочкой включения/выключения светодиода, а практически полноценной админкой всех IoT-устройств нашей DeviceHive-сети. При желании, конечно, можно упростить его до той самой «кнопочки» или наоборот расширить, например, до клиента, управляющего роботом телеприсутствия. Готовое приложение находится в том же репозитории, в solution DeviceHive.WindowsManager.Universal. Не будем останавливаться на нюансах гайдлайнов Win10 – корни приложения растут еще из Win8. Не будет тут и MVVM – все и так знают, как его применять. Давайте сосредоточимся на главном: нам нужна консоль мониторинга и управления устройствами, подключенными к DeviceHive, под Windows 10 на Raspberry Pi2. be747bf9e3d94e80a2b50921f89bcfc7.jpg Для DeviceHive реализовано три клиентских библиотеки:

  • DeviceHive.Client – для «большого» .NET 4.5 и выше. Использует WebSocket4Net.
  • DeviceHive.Client.Portable – для Windows 8.1 и Windows Phone 8.1. Использует нативные WebSockets.
  • DeviceHive.Client.Universal – для всех редакций Windows 10, в том числе для Win10 IoT Core. Именно она используется в нашем приложении.

Наследуем ClientService от DeviceHiveClient и инициализируем его сеттингами:

DeviceHiveConnectionInfo connInfo; if (!String.IsNullOrEmpty(Settings.Instance.CloudAccessKey)) {     connInfo = new DeviceHiveConnectionInfo(Settings.Instance.CloudServerUrl, Settings.Instance.CloudAccessKey); } else {     connInfo = new DeviceHiveConnectionInfo(Settings.Instance.CloudServerUrl, Settings.Instance.CloudUsername, Settings.Instance.CloudPassword); } current = new ClientService(connInfo, new RestClient(connInfo)); 

А также указываем не использовать LongPolling, а только WebSocket, дабы не упираться в лимит одновременных HTTP-запросов:

SetAvailableChannels(new Channel[] {     new WebSocketChannel(connectionInfo, restClient) }); 

eaebca78e3e74a28b9bf8ea4399f3e02.jpg Загружаем список девайсов и группируем их по сетям в MainPage:

var deviceList = await ClientService.Current.GetDevicesAsync(); var networkList = (await ClientService.Current.GetNetworksAsync()).FindAll(n => n.Id != null); foreach (Network network in networkList) {     var devices = deviceList.FindAll(d => d.Network?.Id == network.Id);     if (devices.Count > 0)     {         networkWithDevicesList.Add(new NetworkViewModel(network) { Devices = devices });     } } 

А вот и наш виртуальный светодиод:06f505880b144eccbca5a191fa6634d7.jpg Переходим на DevicePage, подгружаем информацию о нем:

Device = await ClientService.Current.GetDeviceAsync(deviceId); 

Переключаемся на вкладку с уведомлениями. Уведомления отправляются от управляемого устройства к управляющему устройству. В нашем случае – от VirtualLedClient к VirtualLed. Инициализируем автоподгружающийся список с «бесконечным» скроллом:

NotificationFilter filter = new NotificationFilter() {     End = filterNotificationsEnd,     Start = filterNotificationsStart,     SortOrder = SortOrder.DESC }; var list = new IncrementalLoadingCollection(async (take, skip) => {     filter.Skip = (int)skip;     filter.Take = (int)take;     return await ClientService.Current.GetNotificationsAsync(deviceId, filter); }, 20); 

Если не определена конечная дата фильтрации списка нотификаций, подписываемся на новые уведомления, которые будут приходить через вебсокет:

notificationsSubscription = await ClientService.Current.AddNotificationSubscriptionAsync(new[] { deviceId }, null, async (notificationReceived) => {     await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>     {         lock (NotificationsObservable)         {             if (!NotificationsObservable.Any(c => c.Id == notificationReceived.Notification.Id))             {                 NotificationsObservable.Insert(0, notificationReceived.Notification);             }         }     }); }); 

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

CommandFilter filter = new CommandFilter() {     End = filterCommandsEnd,     Start = filterCommandsStart,     SortOrder = SortOrder.DESC }; var list = new IncrementalLoadingCollection<command>(asynskip) => {     filter.Skip = (int)skip;     filter.Take = (int)take;     return await ClientService.Current.GetCommandsAsync(deviceId, filter); }, 20); </command>

Аналогично подписываемся на новые команды:

commandsSubscription = await ClientService.Current.AddCommandSubscriptionAsync(new[] { deviceId }, null, async (commandReceived) => {     await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>     {         lock (CommandsObservable)         {             if (!CommandsObservable.Any(c => c.Id == commandReceived.Command.Id))             {                 CommandsObservable.Insert(0, commandReceived.Command);             }         }     }); }); 

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

var parameters = commandParams.Text != "" ? JObject.Parse(commandParams.Text) : null; var command = new Command(commandName.Text, parameters); await ClientService.Current.SendCommandAsync(deviceId, command, CommandResultCallback); 

При отправке команды мы подписались на ее обновление методом CommandResultCallback. Обрабатываем результат выполнения команды:

foreach (Command cmd in CommandsObservable) {   if (command.Id == cmd.Id)     {         // Command class doesn't implement INotifyPropertyChanded to update its result,         // so old command is replaced by command with result:         var index = commandsObservable.IndexOf(cmd);         commandsObservable.RemoveAt(index);         commandsObservable.Insert(index, command);         break;     } } 

Чтобы не копировать команды вручную, нужно предусмотреть клонирование команд. Выделяем, клонируем, если нужно – редактируем, отправляем. Задача выполнена! Как видите, Raspberry Pi 2 c Windows 10 IoT Core и DeviceHive – отличное решение для практически любой задачи в контексте Internet of Things. Прикрутите пару кнопок, dashboard и подключите Raspberry Pi к телевизору в гостиной – мониторинг и управление умным домом готово. Купили лишних Raspberry? Не вопрос, библиотека DeviceHive.Client умеет работать не только в качестве управляющего клиента, но и в качестве управляемого девайса – реализуем Headless Application, подключаем датчики/реле и устанавливаем Raspberry Pi по дому. Ограничивает вас лишь ваша фантазия.

Заключение

Появление Windows 10 IoT Core – это именно то, чего ждали embedded-разработчики. Когда ресурсов даже самого мощного микроконтроллера на .NET Micro Framework (для которого, кстати, тоже есть реализация DeviceHive) не хватает, а ставить полноценный компьютер на Windows – все равно, что стрелять из пушки по воробьям, то Windows 10 IoT Core – настоящее спасение. И пусть пока есть нюансы с аппаратным ускорением графики и недостатком драйверов для некоторых USB-устройств – это всё простительно. Ведь еще недавно мы только мечтали, чтобы Windows-приложения, работающие на настольных ПК и планшетах запускались не только на телефонах, но и на микрокомпьютерах. А теперь – это реальность, добро пожаловать в «сегодня».

Об авторе

Используемые источники:

  • https://www.white-windows.ru/windows-10-iot-core-i-ee-ustanovka-na-virtualbox/
  • http://visual-coding.com/index.php/zhelezo/raspberry/45-ustanovka-windows10iot-na-raspberry-pi-2
  • https://winitpro.ru/index.php/2016/02/09/ustanovka-windows-10-iot-core-na-raspberry-pi-2/
  • http://kip-world.ru/stavim-windows-iot-na-raspberry-pi.html
  • https://habr.com/post/280294/

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий