<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://quarta.mybb.ru/export.php?type=rss" rel="self" type="application/rss+xml" />
		<title>Кварта Технологии</title>
		<link>https://quarta.mybb.ru/</link>
		<description>Кварта Технологии</description>
		<language>ru-ru</language>
		<lastBuildDate>Tue, 30 Jan 2024 18:22:18 +0300</lastBuildDate>
		<generator>MyBB/mybb.ru</generator>
		<item>
			<title>Windows 10 IoT: Эволюция средств разработки</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=137#p137</link>
			<description>&lt;p&gt;По доброй традиции хаба «Клиентская оптимизация» поинтересуюсь:&lt;br /&gt;— автор, вам известно значение термина, давшего название упомянутому хабу?&lt;br /&gt;— какое отношение этот топик имеет к предметной области, описываемой этим термином?&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 18:22:18 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=137#p137</guid>
		</item>
		<item>
			<title>«IoT» или «не IoT» – вот в чем вопрос! (Windows 10 IoT FAQ), updated</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=130#p130</link>
			<description>&lt;p&gt;Похоже, вы отвечали не на мои вопросы о клиентской оптимизации, а на какие-то другие.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 18:15:39 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=130#p130</guid>
		</item>
		<item>
			<title>Windows 10 IoT Enterprise — секреты настройки для Embedded-сценариев</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=126#p126</link>
			<description>&lt;p&gt;Многое зависит от ситуации. Навигация по сайту рассмотрена как пример, для демонстрации некоторых возможностей системы. Если рассматривать решение, которое нужно интегрировать в уже имеющуюся инфраструктуру заказчика, то интеграция решений на никсовых системах может стоить дороже, чем покупка более производительных устройств с лицензионной операционной системой.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 18:14:21 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=126#p126</guid>
		</item>
		<item>
			<title>Опыт создания облачного решения по мониторингу цифрового киоска на Azu</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=116#p116</link>
			<description>&lt;p&gt;Экономическая информация не собиралась, т.к. этого в пилотном проекте не требовалось, но реализовать это можно, технических ограничений в этом плане нет.&lt;br /&gt;Что касается срока хранения данных: поскольку это SaaS, то мы так или иначе ограничены его возможностями, но ничто не мешает сделать экспорт данных (поддерживаются разные варианты) и хранить их, сколько нужно. Собственно, для этого экспорт и нужен.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 17:33:55 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=116#p116</guid>
		</item>
		<item>
			<title>Windows 10 IoT Enterprise 2019 — режим мультикиоска</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=108#p108</link>
			<description>&lt;p&gt;Здравствуйте.&lt;br /&gt;Windows 10 IoT Enterprise 2019 не будет работать на Raspberry. Действия выполнялись на x86.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 17:30:00 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=108#p108</guid>
		</item>
		<item>
			<title>Azure RTOS. Часть 1: обзор и запуск (STM32 + CubeIDE + HAL)</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=105#p105</link>
			<description>&lt;p&gt;Я закончил свой несколько расширенный относительно примера проект в версии 6.0.1. Апдейтнул до 6.0.2, там, насколько я понял, основное — отредактированы комментарии. Всё, естественно, работает.&lt;br /&gt;Так что мне кажется, что имеет смысл этот блог переделать под 6.0.2, чтобы не путать новичков лишний раз.&lt;br /&gt;Тем более, что кучка примеров, в том числе и для кубика, выложены под версию 6.0.2&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 17:15:04 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=105#p105</guid>
		</item>
		<item>
			<title>Azure IoT Edge и SQL Edge: перенос облачных нагрузок на «наземные» уст</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=57#p57</link>
			<description>&lt;p&gt;Azure IoT Edge — это дополнение к IoT Hub, которое позволяет обрабатывать часть данных и обрабатывать события локально, а не в облаке, уменьшать объем передаваемых в облако данных, а также обеспечивать работу системы при пропадании соединения с облаком.&lt;/p&gt;
						&lt;p&gt;Azure SQL Edge — это модуль для IoT Edge, который позволяет при небольшом потреблении памяти реализовать потоковую обработку данных, машинное обучение непосредственно на устройстве с IoT Edge.&lt;/p&gt;
						&lt;p&gt;Изначально принцип облачных вычислений заключался в централизованном переносе нагрузок с локальных устройств в датацентры, поэтому сама идея возврата облачной обработки части данных как бы &amp;quot;обратно&amp;quot;, на наземное устройство, на первый взгляд может выглядеть не совсем понятной. В данном материале мы последовательно разберемся, что это означает и какие преимущества дает.&lt;/p&gt;
						&lt;p&gt;Также мы настроим IoT Hub в Azure, развернем среду выполнения IoT Edge на Windows 10 IoT и Linux, настроим и подключим к облаку эмулированный датчик; рассмотрим установку и настройку SQL Edge.&lt;/p&gt;
						&lt;p&gt;Вопросы терминологии&lt;/p&gt;
						&lt;p&gt;&amp;quot;Край&amp;quot; — калька с английского &amp;quot;edge&amp;quot;, возможно, не совсем удачная, но вполне прижившаяся. Означает именно &amp;quot;край&amp;quot; устройства/устройств Интернета вещей, т.е. та наземная часть, которая непосредственно подключается к облаку, но еще не является самим облаком. Термин &amp;quot;вычисления на краю&amp;quot; (калька с &amp;quot;edge computing&amp;quot;) уже является устоявшимся, хотя более удачными видятся &amp;quot;периферийные вычисления&amp;quot; или &amp;quot;граничные вычисления&amp;quot;. В данном материале мы будем пользоваться именно устоявшимся термином &amp;quot;вычисления на краю&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Вычисления &amp;quot;на краю&amp;quot; — это принцип построения инфраструктуры, при котором вычислительные ресурсы частично перемещаются из дата-центров на периферию и располагаются в непосредственной близости от места создания первичных (&amp;quot;сырых&amp;quot;) данных для их первичной обработки перед передачей вышестоящему вычислительному узлу. Таким образом, сбор и анализ данных производится не в централизованной вычислительной среде, а там, где происходит генерация потоков данных. Подробнее.&lt;/p&gt;
						&lt;p&gt;Проблемы Интернета вещей&lt;/p&gt;
						&lt;p&gt;Хотя Интернет вещей, поддерживаемый новыми технологиями, бурно развивается, все еще остается актуальным ряд проблем.&lt;/p&gt;
						&lt;p&gt;Со стороны облака:&lt;/p&gt;
						&lt;p&gt;Высокий объем собираемых данных телеметрии. Действительно, если производится передача данных с наземных устройств в облако без предварительной обработки, оптимизации, объем данных в крупных решениях может быть огромным. Не все наземные устройства могут оптимизировать передаваемые данные или выделять из них только нужные, &amp;quot;прореживать&amp;quot; их. Хотя Azure позволяет принимать и обрабатывать такие объемы данных, оптимизация этих объемов находится в интересах разработчиков, так как позволяет сократить затраты на обслуживание решения: снизится и стоимость хранения данных, и стоимость их передачи, и стоимость вычислительных ресурсов для их обработки;&lt;br /&gt;При обработке телеметрии &amp;quot;только в облаке&amp;quot; невозможно быстро отреагировать на некоторые события: время реакции может составлять несколько секунд (время на отправку данных в облако, их обработку, передачу команды обратно на устройство). В некоторых решениях, например, в беспилотных автомобилях, требующих немедленной реакции, в реальном времени, такой сценарий неприемлем;&lt;br /&gt;Облако может быть не всегда доступно из-за проблем с Интернет-соединением. Данная сложность должна быть решена разработчиками решения &amp;quot;на краю&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Когда эти проблемы пытаются решить путем обработки данных &amp;quot;на краю&amp;quot;, появляются новые сложности:&lt;/p&gt;
						&lt;p&gt;Высокий &amp;quot;порог входа&amp;quot; для разработчиков таких решений. Требуется разработка на всех уровнях: иногда от аппаратного обеспечения до соединения с облаком;&lt;br /&gt;Вынужденная необходимость писать собственный код практически для всего, т.е. отсутствие какой-либо стандартизации решения;&lt;br /&gt;Ручная настройка и интеграция решения, т.е. в итоге отсутствие какого-либо реального его масштабирования.&lt;/p&gt;
						&lt;p&gt;Что со всем этим делать?&lt;/p&gt;
						&lt;p&gt;IoT Edge предлагает изящное решение этих проблем, которое заключается в применении стандартизованного, многофункционального решения, в котором комбинируются лучшие практики с обеих сторон: облака и &amp;quot;края&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Мы по-прежнему получаем все преимущества облака:&lt;/p&gt;
						&lt;p&gt;Возможности удаленного мониторинга и управления;&lt;br /&gt;Объединение телеметрии с большого количества устройств Интернета вещей;&lt;br /&gt;Практически неограниченные объемы хранилища и вычислительной мощности, например, для искусственного интеллекта и машинного обучения.&lt;/p&gt;
						&lt;p&gt;Эти преимущества в IoT Edge дополняются возможностями обработки &amp;quot;на краю&amp;quot;:&lt;/p&gt;
						&lt;p&gt;Цикл управления с низкой латентностью. Это означает реакцию на внешние события, близкую к реальному времени. Мы говорим именно &amp;quot;близкую&amp;quot;, т.к. у термина &amp;quot;реальное время&amp;quot; есть достаточно строгое определение, здесь же &amp;quot;реальное время&amp;quot; употребляется в бытовом понимании. Подробнее о реальном времени можно прочитать здесь;&lt;br /&gt;Возможности трансляции протоколов. Не все устройства Интернета вещей поддерживают типовые протоколы для подключения к Azure (обычно речь идет об HTTP, MQTT, AMQP). Например, у устройства интернета вещей вообще может не быть сетевого интерфейса. IoT Edge может выполнять роль универсального шлюза для таких устройств;&lt;br /&gt;Возможность &amp;quot;прореживания&amp;quot; данных &amp;quot;на краю&amp;quot;: можно отправлять не все данные, а только необходимые, или, например, только информацию о возникающих событиях, тем самым экономить трафик и хранилище в облаке;&lt;br /&gt;Возможность не выносить чувствительные данные или интеллектуальную собственность в облако, что может быть актуально для некоторых предприятий в связи с юридическими требованиями.&lt;/p&gt;
						&lt;p&gt;При всем перечисленном уникальность IoT Edge заключается в том, что рабочие нагрузки как бы переносятся из облака непосредственно на IoT Edge, то есть не требуется заниматься разработкой на &amp;quot;краю&amp;quot;. Перенос поддерживаемых модулей на Edge происходит непосредственно на портале Azure.&lt;/p&gt;
						&lt;p&gt;Впрочем, при необходимости всегда остается возможность разрабатывать собственный код для выполнения в IoT Edge.&lt;/p&gt;
						&lt;p&gt;Кроме того, в Azure IoT Hub уже есть все средства подключения и удаленного управления для IoT Edge.&lt;/p&gt;
						&lt;p&gt;Архитектура IoT Edge&lt;/p&gt;
						&lt;p&gt;IoT Edge состоит из трех компонентов:&lt;/p&gt;
						&lt;p&gt;Модули — это контейнеры, в которых выполняются службы Azure, сторонние службы, или ваш собственный код. Модули можно развернуть на устройство IoT Edge, и они будут выполняться локально;&lt;br /&gt;Среда выполнения — работает на каждом устройстве IoT Edge и управляет всеми модулями на этом устройстве;&lt;br /&gt;Облачный интерфейс — позволяет удаленно наблюдать и управлять устройством IoT Edge. Фактически на самом устройстве производится только начальная настройка, а все дальнейшее управление — через Azure.&lt;/p&gt;
						&lt;p&gt;Подключение Azure IoT Edge недоступно в редакции IoT Hub Basic.&lt;/p&gt;
						&lt;p&gt;Модули IoT Edge&lt;/p&gt;
						&lt;p&gt;Модуль IoT Edge — это единица исполнения, реализованная в виде Docker-совместимого контейнера, в котором содержится вся необходимая логика. Несколько модулей могут быть настроены на обмен данными друг с другом. Можно разрабатывать собственные модули или &amp;quot;упаковать&amp;quot; некоторые из служб Azure в модули так, что они будут работать на устройстве IoT Edge без подключения к облаку.&lt;/p&gt;
						&lt;p&gt;&amp;quot;Оборачивание&amp;quot; служб Azure в модули позволяет пользоваться всеми преимуществами потоковой аналитики, машинного обучения, распознавания изображений и других сервисов без разработки кода. В Azure Marketplace доступны также готовые модули сторонней разработки.&lt;/p&gt;
						&lt;p&gt;Собственные модули можно разрабатывать на Java, .NET Core 2.0, Node.js, C, Python.&lt;/p&gt;
						&lt;p&gt;Кроме того, контейнеризация логики в виде модулей позволяет динамически встраивать новую логику на системах, где это обычно требует пересборки образа (Yocto Linux).&lt;/p&gt;
						&lt;p&gt;Среда выполнения IoT Edge&lt;/p&gt;
						&lt;p&gt;Среда выполнения IoT Edge позволяет выполнять логику (как облачную, так и собственную) на соответствующих устройствах. В качестве устройства обычно применяется компьютер на ARM или Intel/AMD (промышленный или общего назначения) под управлением Linux или Windows, т.е. решение кроссплатформенное.&lt;/p&gt;
						&lt;p&gt;В качестве примера: для небольших объемов данных вполне подойдет компьютер типа Raspberry Pi, а для значительных, возможно, понадобится и промышленный сервер.&lt;br /&gt;Среда выполнения также отвечает за управление самим IoT Edge и коммуникации. Архитектурно она выполняется в виде фоновой задачи (демона или службы), т.е. устройство можно использовать для каких-либо еще целей, даже в интерактивных сценариях.&lt;/p&gt;
						&lt;p&gt;Среди ее функций также перечислим следующие:&lt;/p&gt;
						&lt;p&gt;Устанавливает, обновляет рабочие нагрузки на устройстве;&lt;br /&gt;Обеспечивает соответствие стандартам безопасности Azure IoT Edge;&lt;br /&gt;Гарантирует, что модули IoT Edge всегда выполняются;&lt;br /&gt;Отправляет в облако отчеты о состоянии IoT Edge и выполняющихся нагрузок;&lt;br /&gt;Управляет соединением между IoT Edge и устройствами, подключенными к нему, между модулями IoT Edge, и между IoT Edge и облаком.&lt;/p&gt;
						&lt;p&gt;Сценариев использования IoT Edge очень много, и выбор — за разработчиками решения &amp;quot;на краю&amp;quot;. Обычно среда выполнения используется для развертывания средств сбора и обработки данных с подчиненных (&amp;quot;downstream&amp;quot;) устройств, но это только одна из возможностей.&lt;/p&gt;
						&lt;p&gt;Для понимания организации IoT Edge приводим рисунок из документации.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Облачный интерфейс IoT Edge&lt;/p&gt;
						&lt;p&gt;Управлять большим количеством устройств, разнесенных географически, достаточно сложно. Рабочие нагрузки создаются и настраиваются на каком-то одном типе устройств, а затем устанавливаются на все устройства, после чего производится отслеживание их поведения на предмет ошибок. Эти процедуры не могут быть выполнены на каждом устройстве, необходимы средства мониторинга большого количества устройств.&lt;/p&gt;
						&lt;p&gt;К Azure IoT Edge прилагаются облачные средства мониторинга и управления устройствами, которые позволяют:&lt;/p&gt;
						&lt;p&gt;Создать и настроить рабочую нагрузку для какого-либо типа устройства;&lt;br /&gt;Развернуть ее на набор устройств;&lt;br /&gt;Отследить результаты ее работы &amp;quot;в полях&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Маршрутизация сообщений&lt;/p&gt;
						&lt;p&gt;Маршрутизация сообщений — это механизм обмена сообщениями как между модулями, так и между модулем и облаком в IoT Edge. Данный механизм позволяет надежно изолировать модули друг от друга, а также централизованно управлять соответствующими маршрутами.&lt;/p&gt;
						&lt;p&gt;Каждый модуль имеет входы и выходы, имеющие обозначения типа inputs/inX. Сам IoT Edge имеет поток данных в IoT Hub, обозначается как $upstream. Маршруты описываются SQL-подобным языком:&lt;/p&gt;
						&lt;p&gt;FROM &amp;lt;source&amp;gt; WHERE &amp;lt;condition&amp;gt; INTO &amp;lt;sink&amp;gt;&lt;/p&gt;
						&lt;p&gt;Здесь:&lt;/p&gt;
						&lt;p&gt;source — источник сообщений, например, /messages/modules/{module_id}/outputs/{output_id};&lt;br /&gt;condition — выражение, включающее свойства или тело сообщения;&lt;br /&gt;sink — назначение (приемник) сообщений.&lt;/p&gt;
						&lt;p&gt;Как видим, каждый модуль имеет идентификатор, каждый вход и выход также имеет идентификатор, а источник и приемник сообщений описываются URI специального вида.&lt;/p&gt;
						&lt;p&gt;Пример:&lt;/p&gt;
						&lt;p&gt;FROM /messages/modules/module1/outputs/*&lt;br /&gt;WHERE sensorType=&amp;quot;pressure&amp;quot;&lt;br /&gt;INTO $upstream&lt;/p&gt;
						&lt;p&gt;Если сейчас вам не совсем понятна эта концепция, она будет объяснена на примере в практической части.&lt;/p&gt;
						&lt;p&gt;Безопасность&lt;/p&gt;
						&lt;p&gt;Перенос части облачной нагрузки на &amp;quot;край&amp;quot; вынуждает балансировать между гибкостью решения для разных сценариев использования и уровнем защиты, ожидаемым от сервисов Azure.&lt;/p&gt;
						&lt;p&gt;В IoT Edge предприняты меры по обеспечению безопасности всего решения, подробнее о которых можно прочитать здесь.&lt;/p&gt;
						&lt;p&gt;IoT Edge как шлюз&lt;/p&gt;
						&lt;p&gt;Помимо модулей-контейнеров, IoT Edge может выполнять роль шлюза при подключении устройств к IoT Hub.&lt;/p&gt;
						&lt;p&gt;IoT Hub — это PaaS решение, облачный концентратор для двусторонней коммуникации между устройствами Интернета вещей и облаком.&lt;br /&gt;Когда IoT Edge работает, как шлюз, устройства подключаются к IoT Hub как бы &amp;quot;через&amp;quot; IoT Edge, причем существуют разные варианты такого подключения:&lt;/p&gt;
						&lt;p&gt;Прозрачное подключение (transparent) — применяется для устройств, которые могут подключаться и напрямую к IoT Hub по протоколам HTTP, MQTT, AMQP. В этом случае шлюз является &amp;quot;прозрачным&amp;quot; для подключения;&lt;br /&gt;Преобразование протокола (protocol translation) — известен также как непрозрачный шлюз. Применяется для устройств, которые не могут быть подключены к IoT Hub без шлюза в связи с тем, что не поддерживают один из протоколов HTTP, MQTT, AMQP. Сам IoT Edge &amp;quot;понимает&amp;quot; протоколы этих устройств и преобразует данные этих устройств в формат, понятный IoT Hub. При этом все данные с точки зрения IoT Hub идут от самого IoT Edge;&lt;br /&gt;Преобразование удостоверений (identity translation) — от предыдущего варианта отличается тем, что каждое подчиненное устройство (т.е. подключенное к IoT Edge) имеет свой идентификатор, а данные, с точки зрения IoT Hub, идут от устройств, а не от шлюза.&lt;/p&gt;
						&lt;p&gt;Различия можно увидеть наглядно на рисунке:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Применение IoT Edge в качестве шлюза позволяет кэшировать данные от устройств при отсутствии подключения к облаку, а затем, при возобновлении подключения, отправлять накопленные данные в IoT Hub.&lt;/p&gt;
						&lt;p&gt;Azure SQL Edge&lt;/p&gt;
						&lt;p&gt;Azure SQL Edge (в настоящее время находится в preview) — это движок базы данных, предназначенный для использования совместно с IoT Edge. В основе SQL Edge лежит Microsoft SQL Server Database Engine, т.е. SQL Edge построен на той же базе, что и SQL Server и Azure SQL Database. Для работы с ним используется тот же язык, T-SQL.&lt;/p&gt;
						&lt;p&gt;SQL Edge доступен в виде модуля на Azure Marketplace в двух редакциях: стандартная, для производства, с ограничением в 8 ядер и 64 ГБ памяти, и редакция для разработки (developer), с ограничением в 4 ядра и 32 ГБ памяти.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Из преимуществ SQL Edge отметим:&lt;/p&gt;
						&lt;p&gt;Возможности потоковой обработки данных, подобно Azure Stream Analytics;&lt;br /&gt;Возможности машинного обучения и искусственного интеллекта путем интеграции открытого формата ONNX (Open Neural Network Exchange). Подробнее;&lt;br /&gt;Возможность синхронизации с Azure Blob storage с использованием Azure Data Factory и Azure SQL Database;&lt;br /&gt;Резервное копирование и восстановление данных, репликация.&lt;/p&gt;
						&lt;p&gt;Azure SQL Edge бесплатен в preview, а в коммерческой эксплуатации его использование позволит оптимизировать стоимость решения по сравнению с классическим SQL Server.&lt;/p&gt;
						&lt;p&gt;Практика&lt;/p&gt;
						&lt;p&gt;Для более глубокого понимания, как это все работает, попробуем настроить IoT Edge и все сопутствующие компоненты.&lt;/p&gt;
						&lt;p&gt;По историческим причинам практические руководства по IoT Edge обычно выполняются на Linux, поэтому в качестве демонстрационной ОС мы выбрали именно Windows 10, а точнее, ее специализированный вариант Windows 10 IoT Enterprise LTSC. Подробнее о совместимости IoT Edge с разными ОС можно прочитать здесь&lt;/p&gt;
						&lt;p&gt;Windows 10 IoT Enterprise LTSC (Long-term Servicing Channel) — специализированная ОС для встраиваемых устройств. Выпуски данной редакции ОС поддерживаются в течение 10 лет после релиза, а также имеют специализированные возможности встраивания, такие, как фильтры записи на диск, фильтр клавиатуры, замена оболочки и т. д. (&lt;a href=&quot;https://www.quarta-embedded.ru/we/10/,&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.quarta-embedded.ru/we/10/,&lt;/a&gt; &lt;a href=&quot;https://habr.com/ru/company/quarta/blog/279521/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/company/quarta/blog/279521/&lt;/a&gt;), а стоят раза в 3 дешевле &amp;quot;настольных&amp;quot; аналогов.&lt;br /&gt;Данная ОС особенно широко используется на интерактивных устройствах типа инфокиосков. Установка IoT Edge на такое устройство позволит совместить функции устройства с функциями самого IoT Edge.&lt;/p&gt;
						&lt;p&gt;Обязательным требованием для выполнения практической части является использование Windows 10 x64, строго версии 1809 (сборка 17763). На других сборках контейнеры Moby, необходимые для функционирования IoT Edge, не поддерживаются. На момент написания материала (август 2020) упомянутая сборка Windows является самой свежей в ветке LTSC.&lt;/p&gt;
						&lt;p&gt;Существует большое количество способов настройки IoT Edge, но для целей обучения мы будем использовать наиболее простые из них. Как обычно, предупреждаем, что инструкции из данного руководства не гарантируют безопасности решения, а предназначены только для обучения, поэтому не рекомендуется использовать их в производстве.&lt;/p&gt;
						&lt;p&gt;Подготовка облачных ресурсов&lt;/p&gt;
						&lt;p&gt;Нам понадобится подписка Azure. Если у вас ее нет, оформите пробную совершенно бесплатно.&lt;/p&gt;
						&lt;p&gt;После чего в любом браузере откройте портал Azure, при необходимости зайдите со своей учетной записью. Все дальнейшие инструкции предназначены для английской версии портала, поэтому при необходимости переключите язык в настройках.&lt;/p&gt;
						&lt;p&gt;В верхней строке найдите символ Cloud Shell и кликните его:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Появится окно с командной строкой, в котором мы создадим необходимые ресурсы. Отметим, что также их можно создать в графическом интерфейсе портала.&lt;/p&gt;
						&lt;p&gt;В левом верхнем углу открытого окна выберите Bash.&lt;/p&gt;
						&lt;p&gt;Установите расширения Azure IoT:&lt;/p&gt;
						&lt;p&gt;az extension add --name azure-iot&lt;/p&gt;
						&lt;p&gt;Выполните команду&lt;/p&gt;
						&lt;p&gt;az account list-locations -o Table&lt;/p&gt;
						&lt;p&gt;и убедитесь, что в списке регионов присутствует West Europe. Именно его мы будем использовать для создания тестовых ресурсов, так как географически этот регион ближе всего к нам. Можете использовать любой другой, если он ближе к вам.&lt;/p&gt;
						&lt;p&gt;Создайте группу ресурсов rg-aziotedge-test для экспериментов, выполнив команду&lt;/p&gt;
						&lt;p&gt;az group create --name rg-aziotedge-test --location westeurope -o json&lt;/p&gt;
						&lt;p&gt;Далее нам нужно создать IoT Hub, но его имя должно быть уникальным, поэтому для имени будем пользоваться шаблоном iothub-test-{id}, где вместо {id} подставьте свои инициалы, а также дату выполнения руководства, без знаков препинания и пробелов, т.е. в формате XXYYMMDD, например iothub-test-if200810. Используйте далее тот же id в дальнейшем везде, где встретите {id}.&lt;/p&gt;
						&lt;p&gt;Создайте IoT Hub в группе ресурсов:&lt;/p&gt;
						&lt;p&gt;az iot hub create --name iothub-test-{id} -g rg-aziotedge-test --sku S1 --location westeurope -o json&lt;/p&gt;
						&lt;p&gt;Создайте в IoT Hub регистрацию для устройства IoT Edge с именем edge1:&lt;/p&gt;
						&lt;p&gt;az iot hub device-identity create --device-id edge1 --edge-enabled --hub-name iothub-test-{id} --auth-method shared_private_key&lt;/p&gt;
						&lt;p&gt;Получите строку соединения для устройства, которая понадобится для подключения физического устройства к IoT Hub, выполнив команду:&lt;/p&gt;
						&lt;p&gt;az iot hub device-identity show-connection-string --device-id edge1 --hub-name iothub-test-{id}&lt;/p&gt;
						&lt;p&gt;Скопируйте значение строки соединения из вывода JSON и сохраните ее в текстовом редакторе для дальнейшего использования.&lt;/p&gt;
						&lt;p&gt;Отметим, что все указанные действия можно выполнить и на портале Azure. На главной странице перейдите в Resource Groups, затем к нашей группе rg-aziotedge-test. В ней найдите только что созданный IoT Hub и кликните по его названию.&lt;/p&gt;
						&lt;p&gt;Слева в меню в разделе Automatic Device Management выберите IoT Edge и в появившемся интерфейсе увидите только что созданную регистрацию для устройства IoT Edge. Кликните на нее и на следующем экране увидите значение Primary Connection String, которое выше мы извлекли при помощи командной строки.&lt;/p&gt;
						&lt;p&gt;В данном случае мы используем ручную регистрацию устройства. Оговоримся, что существует также возможность автоматической массовой регистрации устройств через соответствующий сервис.&lt;/p&gt;
						&lt;p&gt;Подготовка Windows 10&lt;/p&gt;
						&lt;p&gt;Так как нам нужна строго определенная версия Windows 10, существует две альтернативы:&lt;/p&gt;
						&lt;p&gt;Используем для устройства IoT Edge виртуальную машину в самой Azure, считая, что это наше локальное устройство;&lt;br /&gt;Установим Windows 10 на виртуальную машину локально.&lt;/p&gt;
						&lt;p&gt;Для нашего руководства мы будем использовать второй способ. Будем использовать VirtualBox последней версии с пакетом расширения.&lt;/p&gt;
						&lt;p&gt;Самостоятельно загрузите и установите Windows 10 Enterprise LTSC 2019 (1809) здесь или запросите здесь. На втором ресурсе можете также запросить набор скриптов для автоматизации, если будете заниматься глубокой настройкой операционной системы.&lt;/p&gt;
						&lt;p&gt;При скачивании необходимо выбрать дистрибутив &amp;quot;ISO — LTSC&amp;quot;&lt;br /&gt;Установка ничем не отличается от таковой для обычной настольной Windows. В настройках виртуальной машины убедитесь, что включена вложенная (Nested) виртуализация. Создайте пользователя с именем по своему усмотрению.&lt;/p&gt;
						&lt;p&gt;Если в качестве альтернативы для тестовых целей вы хотите использовать виртуальную машину непосредственно в Azure, создайте ее при помощи команды:&lt;/p&gt;
						&lt;p&gt;az vm create --resource-group rg-aziotedge-test --name EdgeVM --image MicrosoftWindowsDesktop:Windows-10:rs5-pro:latest --admin-username azureuser --admin-password {password} --size Standard_DS1_v2&lt;/p&gt;
						&lt;p&gt;где {password} — желаемый пароль администратора.&lt;/p&gt;
						&lt;p&gt;К созданной виртуальной машине можно подключиться при помощи RDP.&lt;/p&gt;
						&lt;p&gt;Установка и настройка среды выполнения&lt;/p&gt;
						&lt;p&gt;Войдите в Windows 10 с учетной записью, имеющей права администратора. Запустите PowerShell x64 с учетной записью администратора.&lt;/p&gt;
						&lt;p&gt;Убедитесь, что виртуальная машина подключена к Интернет.&lt;/p&gt;
						&lt;p&gt;Чтобы убедиться, что вы запустили 64-разрядную версию PowerShell, выполните команду&lt;/p&gt;
						&lt;p&gt;(Get-Process -Id $PID).StartInfo.EnvironmentVariables[&amp;quot;PROCESSOR_ARCHITECTURE&amp;quot;]&lt;/p&gt;
						&lt;p&gt;Выполните следующую команду, чтобы проверить версию Windows на совместимость с IoT Edge, включить возможность использования контейнеров, загрузить среду выполнения контейнеров Moby и самого IoT Edge:&lt;/p&gt;
						&lt;p&gt;. {Invoke-WebRequest -useb &lt;a href=&quot;https://aka.ms/iotedge-win}&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://aka.ms/iotedge-win}&lt;/a&gt; | Invoke-Expression; Deploy-IoTEdge&lt;/p&gt;
						&lt;p&gt;Если потребуется перезагрузка машины, согласитесь с этим.&lt;/p&gt;
						&lt;p&gt;Снова войдите в систему и запустите PowerShell x64 от имени администратора. Настройте среду выполнения IoT Edge, выполнив команду:&lt;/p&gt;
						&lt;p&gt;. {Invoke-WebRequest -useb &lt;a href=&quot;https://aka.ms/iotedge-win}&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://aka.ms/iotedge-win}&lt;/a&gt; | Invoke-Expression; `&lt;br /&gt;Initialize-IoTEdge -ContainerOs Windows&lt;/p&gt;
						&lt;p&gt;В процессе выполнения команды появится запрос на строку подключения. Введите строку, которую вы ранее сохранили в текстовом редакторе (без кавычек).&lt;/p&gt;
						&lt;p&gt;Убедитесь, что служба IoT Edge работает, выполнив команду&lt;/p&gt;
						&lt;p&gt;Get-Service iotedge&lt;/p&gt;
						&lt;p&gt;При необходимости отладки службы можете получить доступ к ее журналам:&lt;/p&gt;
						&lt;p&gt;. {Invoke-WebRequest -useb &lt;a href=&quot;https://aka.ms/iotedge-win}&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://aka.ms/iotedge-win}&lt;/a&gt; | Invoke-Expression; Get-IoTEdgeLog&lt;/p&gt;
						&lt;p&gt;Получите список модулей, выполняющихся в IoT Edge, выполнив команду&lt;/p&gt;
						&lt;p&gt;iotedge list&lt;/p&gt;
						&lt;p&gt;Может потребоваться некоторое время, прежде чем модули начнут отображаться в выводе команды.&lt;/p&gt;
						&lt;p&gt;Отметим, что существует возможность установить среду выполнения Edge и без подключения к интернет. Подробности можно найти здесь.&lt;/p&gt;
						&lt;p&gt;Теперь IoT Edge подключен к IoT Hub.&lt;/p&gt;
						&lt;p&gt;Установка тестового модуля на IoT Edge&lt;/p&gt;
						&lt;p&gt;Теперь попробуем установить модуль. Код писать не понадобится, мы будем использовать готовый модуль из Marketplace.&lt;/p&gt;
						&lt;p&gt;Модуль, который мы установим, симулирует показания датчика температуры и нескольких дополнительных датчиков. Для быстрого старта мы используем именно симуляцию датчика, однако при необходимости вы можете доработать модуль для подключения реального датчика. Исходный код модуля открыт.&lt;/p&gt;
						&lt;p&gt;Чтобы установить модуль из Azure Marketplace, выполните следующие шаги.&lt;/p&gt;
						&lt;p&gt;На портале Azure перейдите к вашему IoT Hub и из меню слева в разделе Automatic Device Management выберите IoT Edge. В появившемся интерфейсе выберите edge1.&lt;/p&gt;
						&lt;p&gt;В панели вверху выберите Set Modules.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;В секции IoT Edge Modules нажмите Add и выберите Marketplace Module из выпадающего меню.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;В появившемся окне введите Simulated Temperature Sensor и выберите появившийся модуль.&lt;/p&gt;
						&lt;p&gt;Убедитесь, что модуль SimulatedTemperatureSensor был добавлен в секцию, с желаемым статусом (Desired status) running.&lt;/p&gt;
						&lt;p&gt;Внизу страницы нажмите Next: Routes.&lt;/p&gt;
						&lt;p&gt;На следующем шаге, на закладке Routes, будет предложено настроить маршруты для сообщений модуля. Маршруты определяют, как сообщения пересылаются между модулями и IoT Hub. Маршруты определяются с использованием пар имя-значение. На странице уже заполнены два маршрута.&lt;/p&gt;
						&lt;p&gt;Стандартный маршрут с названием route отсылает все сообщения от всех модулей в IoT Hub ($upstream). Второй маршрут с названием SimulatedTemperatureSensorToIoTHub был создан автоматически, когда вы добавили модуль из Marketplace. Это маршрут отсылает все сообщения только от модуля SimulatedTemperatureSensor в IoT Hub. Стандартный маршрут в нашем случае избыточный, поэтому удалите его, нажав на значок корзины справа от него. Результат показан ниже на рисунке.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Выберите Next: Review + create, чтобы перейти к следующему шагу.&lt;/p&gt;
						&lt;p&gt;На появившейся вкладке Review + create будет показан файл в формате JSON, который определяет все модули и их настройки, которые будут развернуты на устройстве IoT Edge. Обратите внимание, что помимо самого модуля SimulatedTemperatureSensor включены также два модуля среды выполнения, edgeAgent, edgeHub. Ознакомьтесь с файлом и выберите Create.&lt;/p&gt;
						&lt;p&gt;Обратите внимание: Хотя вы только что настроили развертывание для вашего IoT Edge устройства, это еще не привело к загрузке каких-либо данных на это устройство. Вместо этого устройство периодически опрашивает IoT Hub на наличие новых команд. Если устройство находит обновленные инструкции по развертыванию, оно применяет их. Соответствующие модули (точнее, их образы, т.е. набор двоичных файлов) загружаются из облака, а затем запускаются локально. Поэтому сразу после применения новых настроек, перейдя на страницу вашего IoT Edge, вы не увидите, что новые модули выполняются сразу. Вместо этого нужно подождать несколько минут, нажать кнопку Refresh в верхней части страницы, и все модули перейдут в состояние running, как показано на рисунке:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Просмотр данных от датчика&lt;/p&gt;
						&lt;p&gt;Перейдите к тестовой Windows 10 и запустите консоль PowerShell x64 от имени администратора.&lt;/p&gt;
						&lt;p&gt;Убедитесь, что все модули, развернутые по команде из облака, выполняются, введя команду&lt;/p&gt;
						&lt;p&gt;iotedge list&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Просмотрите сообщения, которые отправляются симулированным датчиком в облако:&lt;/p&gt;
						&lt;p&gt;iotedge logs SimulatedTemperatureSensor -f&lt;/p&gt;
						&lt;p&gt;Из формата сообщений видно, что наш датчик на самом деле отправляет два значения температуры: системную и внешнюю.&lt;/p&gt;
						&lt;p&gt;Нажмите Ctrl+C, чтобы остановить мониторинг.&lt;/p&gt;
						&lt;p&gt;Перейдите на портал Azure и запустите Cloud Shell. Выполните команду, чтобы увидеть принимаемые сообщения на стороне IoT Hub:&lt;/p&gt;
						&lt;p&gt;az iot hub monitor-events --hub-name iothub-test-{id} --device-id edge1&lt;/p&gt;
						&lt;p&gt;Не забудьте заменить {id} на идентификатор, который вы выбрали ранее.&lt;/p&gt;
						&lt;p&gt;Убедитесь, что IoT Hub принимает сообщения, и нажмите Ctrl+C, чтобы остановить мониторинг.&lt;/p&gt;
						&lt;p&gt;Если вы не видите сообщений, перезапустите модуль симулированного датчика на Windows 10. Так как датчик тестовый, модуль отсылает только 500 сообщений и останавливает работу. Перезапустить его можно командой PowerShell:&lt;/p&gt;
						&lt;p&gt;iotedge restart SimulatedTemperatureSensor&lt;/p&gt;
						&lt;p&gt;Отметим, что модуль может быть настроен так, чтобы отправлять неограниченное количество сообщений, о чем сказано в журнале самого модуля:&lt;/p&gt;
						&lt;p&gt;To change this, set the environment variable MessageCount to the number of messages that should be sent (set it to -1 to send unlimited messages).&lt;br /&gt;Вы можете также попробовать разработать собственный модуль, воспользовавшись руководством. После разработки собственного модуля он попадает в ваше персональное облачное хранилище модулей (&amp;quot;registry&amp;quot;), откуда может быть развернут на устройство IoT Edge тем же способом, которым был развернут модуль симулированного датчика температуры.&lt;/p&gt;
						&lt;p&gt;Оборачивание служб Azure в модули&lt;/p&gt;
						&lt;p&gt;В модули можно &amp;quot;обернуть&amp;quot; следующие службы Azure:&lt;/p&gt;
						&lt;p&gt;Azure Functions (пример фильтрации данных)&lt;br /&gt;Azure Stream Analytics (пример усреднения данных)&lt;br /&gt;Azure Machine Learning (пример работы облачной модели на &amp;quot;краю&amp;quot;)&lt;br /&gt;Azure Custom Vision (пример классификации изображений)&lt;br /&gt;Azure SQL Server (пример хранения данных на &amp;quot;краю&amp;quot;)&lt;/p&gt;
						&lt;p&gt;В качестве примера рассмотрим усреднение данных симулированного датчика температуры при помощи Stream Analytics. Данный пример даст вам понимание того, как именно облачная служба &amp;quot;оборачивается&amp;quot; в модуль IoT Edge.&lt;/p&gt;
						&lt;p&gt;При помощи Stream Analytics можно &amp;quot;прореживать&amp;quot; данные на &amp;quot;краю&amp;quot;, тем самым уменьшить объем передаваемой в облако телеметрии. Суть настройки сводится к тому, что вначале создается задача Stream Analytics на портале Azure, затем она развертывается на устройство IoT Edge в виде модуля.&lt;/p&gt;
						&lt;p&gt;Пример, который мы рассмотрим, вычисляет среднюю температуру по скользящему 30-секундному окну. Когда среднее значение достигает 70 градусов, модуль генерирует соответствующее предупреждение, которое в производстве можно использовать для выполнения каких-либо действий по предотвращению выхода оборудования из строя.&lt;/p&gt;
						&lt;p&gt;Схематично архитектуру примера можно представить в следующем виде:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Нам понадобится учетная запись хранения для использования с Azure Stream Analytics. Создайте ее на портале Azure, выполнив следующие шаги:&lt;/p&gt;
						&lt;p&gt;На портале Azure из меню выберите Create a resource, затем Storage, затем Storage account.&lt;br /&gt;Укажите следующие значения: Resource group: rg-aziotedge-test, Name: asatest{id}, Region: West Europe, Replication: LRS, оставив остальные по умолчанию.&lt;br /&gt;Нажмите Review + create, затем Create.&lt;/p&gt;
						&lt;p&gt;Создайте задание Stream Analytics:&lt;/p&gt;
						&lt;p&gt;На портале Azure из меню выберите Create a resource, затем Internet of Things, затем Stream Analytics job.&lt;br /&gt;Укажите следующие значения: Job name: asa-iotedge-test, Resource group: rg-aziotedge-test, Location: West Europe, Hosting environment: Edge.&lt;br /&gt;Нажмите Create. По завершению нажмите Go to resource.&lt;br /&gt;Слева в секции Configure выберите Storage account settings, нажмите Add storage account и выберите учетную запись хранения, созданную ранее (asatest{id}). В области Container введите имя контейнера (на ваш выбор, например, asa) и нажмите Save.&lt;/p&gt;
						&lt;p&gt;Настройте задание Stream Analytics:&lt;/p&gt;
						&lt;p&gt;В меню слева в секции Job topology выберите Inputs, затем Add stream input, а в выпадающем меню Edge Hub. В качестве Input alias введите temperature, Event serialization format: JSON, Encoding: UTF-8, Event compression type: None. Нажмите Save.&lt;br /&gt;Аналогично добавьте Output с названием alert, оставив другие значения полей по умолчанию.&lt;/p&gt;
						&lt;p&gt;В секции Job Topology выберите Query и замените код на следующий:&lt;/p&gt;
						&lt;p&gt;SELECT&amp;#160; &lt;br /&gt;&amp;#160; &amp;#160; &#039;reset&#039; AS command&lt;br /&gt;INTO&lt;br /&gt;&amp;#160; &amp;#160;alert&lt;br /&gt;FROM&lt;br /&gt;&amp;#160; &amp;#160;temperature TIMESTAMP BY timeCreated&lt;br /&gt;GROUP BY TumblingWindow(second,30)&lt;br /&gt;HAVING Avg(machine.temperature) &amp;gt; 70&lt;/p&gt;
						&lt;p&gt;И нажмите Save query.&lt;/p&gt;
						&lt;p&gt;Данный код отсылает команду reset в выход alert, если средняя температура системы превысила 70 градусов в 30-секундном скользящем окне.&lt;/p&gt;
						&lt;p&gt;Теперь развернем созданное задание на IoT Edge.&lt;/p&gt;
						&lt;p&gt;На портале Azure перейдите к созданному ранее IoT Edge.&lt;br /&gt;Нажмите в верхней части окна Set modules, затем ниже Add и выберите Azure Stream Analytics Module и в появившемся окне выберите вашу подписку и задание asa-iotedge-test. Нажмите Save.&lt;/p&gt;
						&lt;p&gt;Когда задание будет добавлено в список модулей, кликните на его название, чтобы просмотреть его структуру. Ознакомьтесь с настройками и нажмите Cancel. Затем перейдите на вкладку Routes.&lt;/p&gt;
						&lt;p&gt;Дополнительно к существующему маршруту необходимо ввести следующие:&lt;/p&gt;
						&lt;p&gt;Имя	Значение&lt;br /&gt;alertsToCloud	FROM /messages/modules/asa-iotedge-test/* INTO $upstream&lt;br /&gt;alertsToReset	FROM /messages/modules/asa-iotedge-test/* INTO BrokeredEndpoint(&amp;quot;/modules/SimulatedTemperatureSensor/inputs/control&amp;quot;)&lt;br /&gt;telemetryToAsa	FROM /messages/modules/SimulatedTemperatureSensor/* INTO BrokeredEndpoint(&amp;quot;/modules/asa-iotedge-test/inputs/temperature&amp;quot;)&lt;/p&gt;
						&lt;p&gt;Данные настройки дополнительно направляют поток сообщений в Stream Analytics, а сообщения с выхода соответствующего задания — в IoT Hub.&lt;/p&gt;
						&lt;p&gt;Нажмите Review + Create, затем Create. Периодически обновляйте страницу (Refresh), пока не увидите, что модуль asa-iotedge-test выполняется.&lt;/p&gt;
						&lt;p&gt;Когда увидите, что модуль выполняется, перейдите к тестовой Windows 10 и перезапустите модуль SimulatedTemperatureSensor:&lt;/p&gt;
						&lt;p&gt;iotedge restart SimulatedTemperatureSensor&lt;/p&gt;
						&lt;p&gt;Перейдите к просмотру журнала событий и наблюдайте появление события reset, когда сработают соответствующие условия (для этого понадобится какое-то время).&lt;/p&gt;
						&lt;p&gt;iotedge logs -f SimulatedTemperatureSensor&lt;/p&gt;
						&lt;p&gt;Остановите просмотр журнала, нажав Ctrl+C.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Работа без сети и в качестве шлюза&lt;/p&gt;
						&lt;p&gt;Когда устройство с IoT Edge отключается от сети, сам IoT Edge выполняет три роли:&lt;/p&gt;
						&lt;p&gt;Кэширование сообщений от подчиненных (downstream) устройств. При появлении сети кэшированные сообщения будут отправлены в IoT Hub;&lt;br /&gt;Эмуляция поведения IoT Hub для аутентификации модулей и подчиненных устройств для обеспечения их бесперебойной работы;&lt;br /&gt;Обеспечение коммуникации между подчиненными устройствами, которая при наличии сети происходит через IoT Hub.&lt;/p&gt;
						&lt;p&gt;Типовой сценарий работы без сети включает следующие шаги:&lt;/p&gt;
						&lt;p&gt;Настройка устройств. Сам IoT Edge имеет встроенную поддержку работы без сети. Но для того, чтобы подчиненные устройства могли также работать без сети, пользуясь IoT Edge, необходимо определить соотношение ведущий-подчиненный между ними. Тогда подчиненные устройства будут отсылать все свои сообщения чере ведущий IoT Edge. Соответствующая настройка выполняется на портале, кнопка Manage Child Devices или с применением команд Cloud Shell.&lt;br /&gt;Синхронизация с IoT Hub. Предыдущий шаг выполняется в панели управления IoT Edge на портале Azure. Для того, чтобы IoT Edge получил соответствующие настройки, он изначально должен быть подключен к сети и должен хотя бы единожды получить настройки от IoT Hub.&lt;br /&gt;Отключение от сети. После этого (при правильной настройке) подчиненные устройства работают уже с IoT Edge так, как с IoT Hub. Все сообщения от подчиненных устройств в отсутствие сети сохраняются в IoT Edge. Время хранения может быть определено свойством timeToLiveSecs из набора свойства модуля $edgeHub. Максимальное значение — примерно 68 лет, т.е. практически ограничено лишь объемом памяти устройства, на котором выполняется IoT Edge. Значение по умолчанию — 2 часа.&lt;br /&gt;Повторное подключение к сети и повторная синхронизация с IoT Hub. При этом сохраненные сообщения отправляются в IoT Hub. Также происходит синхронизация свойств устройств.&lt;/p&gt;
						&lt;p&gt;Отметим, что для работы подчиненных устройств через IoT Edge как через шлюз необходимо, чтобы подчиненные устройства &amp;quot;доверяли&amp;quot; ведущему устройству IoT Edge, что достигается специальной настройкой.&lt;/p&gt;
						&lt;p&gt;Убедимся, что IoT Edge кэширует сообщения от модуля SimulatedTemperatureSensor в отсутствие сети. Для этого отключите от виртуальной машины сетевой кабель и перезапустите модуль командой PowerShell:&lt;/p&gt;
						&lt;p&gt;iotedge restart SimulatedTemperatureSensor&lt;/p&gt;
						&lt;p&gt;В Cloud Shell введите команду для мониторинга событий от нашего IoT Edge:&lt;/p&gt;
						&lt;p&gt;az iot hub monitor-events --hub-name iothub-test-{id} --device-id edge1&lt;/p&gt;
						&lt;p&gt;Убедитесь, что сообщения не приходят, затем подключите сетевой кабель к виртуальной машине.&lt;/p&gt;
						&lt;p&gt;Вернитесь в Cloud Shell и наблюдайте, что все сообщения, в том числе сгенерированные в отсутствие сети, были успешно доставлены.&lt;/p&gt;
						&lt;p&gt;Интересующихся подробной настройкой отсылаем к детальному описанию, инструкции из которого при желании можно проделать.&lt;/p&gt;
						&lt;p&gt;SQL Edge&lt;/p&gt;
						&lt;p&gt;В настоящий момент SQL Edge находится в preview и поддерживается только на платформах Linux, поэтому для экспериментов настроим Linux-виртуальную машину в Azure с предустановленным IoT Edge.&lt;/p&gt;
						&lt;p&gt;Специально отметим, что мы будем использовать образ виртуальной машины с уже предустановленной средой выполнения IoT Edge. При желании вы можете самостоятельно установить среду выполнения на собственную виртуальную машину, воспользовавшись инструкциями&lt;br /&gt;Создайте новый экземпляр IoT Edge и получите строку соединения для него, выполнив в Cloud Shell команды:&lt;/p&gt;
						&lt;p&gt;az iot hub device-identity create --device-id edge2 --edge-enabled --hub-name iothub-test-{id} --auth-method shared_private_key&lt;br /&gt;az iot hub device-identity show-connection-string --device-id edge2 --hub-name iothub-test-{id}&lt;/p&gt;
						&lt;p&gt;Сохраните полученную строку подключения.&lt;/p&gt;
						&lt;p&gt;А также создайте виртуальную машину, заменив {password} на выбранный пароль. Используйте надежный пароль.&lt;/p&gt;
						&lt;p&gt;az vm create --resource-group rg-aziotedge-test --name vm-edge2 --image microsoft_iot_edge:iot_edge_vm_ubuntu:ubuntu_1604_edgeruntimeonly:latest --admin-username azureuser --admin-password {password} --size Standard_DS1_v2 --authentication-type password&lt;/p&gt;
						&lt;p&gt;Сразу подключитесь к виртуальной машине прямо из Cloud Shell:&lt;/p&gt;
						&lt;p&gt;ssh azureuser@{publicIpAddress}&lt;/p&gt;
						&lt;p&gt;где {publicIpAddress} — одноименный параметр из вывода предыдущей команды.&lt;/p&gt;
						&lt;p&gt;При возникновении предупреждения ответьте yes. Введите пароль. Игнорируйте информацию об обновлениях Ubuntu, для нашего тестового сценария это неважно.&lt;/p&gt;
						&lt;p&gt;Убедитесь, что среда выполнения IoT Edge установлена, выполнив команду&lt;/p&gt;
						&lt;p&gt;iotedge version&lt;/p&gt;
						&lt;p&gt;Если версия установленного IoT Edge меньше 1.0.9, обновите среду выполнения, последовательно выполнив команды:&lt;/p&gt;
						&lt;p&gt;curl -L &lt;a href=&quot;https://github.com/Azure/azure-iotedge/releases/download/1.0.9/libiothsm-std_1.0.9-1_ubuntu16.04_amd64.deb&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/Azure/azure-iotedge/ &amp;#8230; _amd64.deb&lt;/a&gt; -o libiothsm-std.deb &amp;amp;&amp;amp; sudo dpkg -i ./libiothsm-std.deb&lt;br /&gt;curl -L &lt;a href=&quot;https://github.com/Azure/azure-iotedge/releases/download/1.0.9/iotedge_1.0.9-1_ubuntu16.04_amd64.deb&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/Azure/azure-iotedge/ &amp;#8230; _amd64.deb&lt;/a&gt; -o iotedge.deb &amp;amp;&amp;amp; sudo dpkg -i ./iotedge.deb&lt;/p&gt;
						&lt;p&gt;Если возникнет вопрос о сохранении файла конфигурации, ответьте N (сохранить текущую конфигурацию).&lt;/p&gt;
						&lt;p&gt;После обновления перезапустите демон IoT Edge:&lt;/p&gt;
						&lt;p&gt;systemctl restart iotedge&lt;/p&gt;
						&lt;p&gt;В ответ на появившийся запрос введите пароль, выбранный вами на этапе создания виртуальной машины.&lt;/p&gt;
						&lt;p&gt;Теперь необходимо подключить IoT Edge к IoT Hub, для чего выполните команду&lt;/p&gt;
						&lt;p&gt;sudo /etc/iotedge/configedge.sh &amp;quot;{строка подключения}&amp;quot;&lt;/p&gt;
						&lt;p&gt;соответственно указав строку подключения. Не удаляйте кавычки.&lt;/p&gt;
						&lt;p&gt;Теперь развернем SQL Edge на наше устройство IoT Edge.&lt;/p&gt;
						&lt;p&gt;Перейдите на портал Azure и из главного меню выберите Create a resource.&lt;br /&gt;В поле Search the Marketplace введите Azure SQL Edge и нажмите Enter.&lt;br /&gt;Кликните на Azure SQL Edge — Preview в результатах, выберите вариант Developer и нажмите Create.&lt;br /&gt;На странице Target Devices for IoT Edge Module укажите следующие настройки: Subscription: ваша подписка, IoT Hub: iothub-test-{id}, IoT Edge Device Name: edge2. Нажмите Create.&lt;br /&gt;На странице Set Modules on device перейдите к секции модулей и кликните на модуль AzureSQLEdgePreview.&lt;br /&gt;На вкладке Environment Variables укажите желаемые значения для переменных окружения. Полный список доступен здесь. Укажите SA_PASSWORD: пароль администратора (используйте надежный пароль), MSSQL_LCID: идентификатор языка для SQL Server (1049 для русского языка), MSSQL_COLLATION: параметры сортировки (оставьте значение по умолчанию).&lt;br /&gt;На вкладке Module Settings установите значение Restart Policy: always и Desired Status: running. Нажмите Update.&lt;br /&gt;Нажмите Review + create, затем Create.&lt;br /&gt;Снова перейдите к IoT Edge и дождитесь завершения развертывания.&lt;/p&gt;
						&lt;p&gt;Нам также необходимо открыть порт 1433 виртуальной машины для соединения с экземпляром SQL Edge. Для этого:&lt;/p&gt;
						&lt;p&gt;На портале Azure перейдите в группу ресурсов rg-aziotedge-test.&lt;br /&gt;Найдите группу безопасности vm-edge2NSG. Она была создана автоматически при развертывании виртуальной машины.&lt;br /&gt;Слева в разделе Settings кликните Inbound security rules, затем Add.&lt;br /&gt;В поле Destination port ranges введите значение 1433, Protocol: TCP, Name: SQL, Action: Allow. Остальные значения оставьте по умолчанию. Нажмите Add.&lt;/p&gt;
						&lt;p&gt;Способы подключения к SQL Edge перечислены здесь. Подчеркнем, что к SQL Edge можно подключиться даже из другого модуля на том же самом экземпляре IoT Edge. Для тестирования подключимся к SQL Edge с локального компьютера.&lt;/p&gt;
						&lt;p&gt;Загрузите и установите Azure Data Studio.&lt;br /&gt;В области Start нажмите New Connection.&lt;br /&gt;Server: введите IP-адрес виртуальной машины. Authentication type: SQL Login, User name: sa, Password: пароль SQL Edge, выбранный ранее. Нажмите Connect.&lt;/p&gt;
						&lt;p&gt;При успешном подключении интерфейс программы примет вид:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Нажмите New Query и введите команду получения версии:&lt;/p&gt;
						&lt;p&gt;SELECT @@VERSION&lt;/p&gt;
						&lt;p&gt;Нажмите Run и в области Results ознакомьтесь с результатом выполнения команды:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Создадим базу данных для тестов:&lt;/p&gt;
						&lt;p&gt;CREATE DATABASE TestDatabase;&lt;/p&gt;
						&lt;p&gt;И таблицу в ней. Перед тем, как выполнить код создания таблицы, выберите базу данных TestDatabase в списке баз данных:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Создадим таблицу&lt;/p&gt;
						&lt;p&gt;CREATE TABLE CUSTOMERS( &lt;br /&gt;&amp;#160; &amp;#160;ID&amp;#160; &amp;#160;INT&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; NOT NULL, &lt;br /&gt;&amp;#160; &amp;#160;NAME VARCHAR (20)&amp;#160; &amp;#160; &amp;#160;NOT NULL, &lt;br /&gt;&amp;#160; &amp;#160;AGE&amp;#160; INT&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; NOT NULL, &lt;br /&gt;&amp;#160; &amp;#160;ADDRESS&amp;#160; CHAR (25) , &lt;br /&gt;&amp;#160; &amp;#160;SALARY&amp;#160; &amp;#160;DECIMAL (18, 2),&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;br /&gt;&amp;#160; &amp;#160;PRIMARY KEY (ID));&lt;/p&gt;
						&lt;p&gt;Теперь нажмите Run. Убедитесь, что код выполнился без ошибок:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Если вы знакомы с языком T-SQL, можете продолжить эксперименты.&lt;/p&gt;
						&lt;p&gt;Как видим, работа с SQL Edge не отличается от работы с SQL Server. Более детально о совместимости можно прочитать здесь. Отметим, что мы не рассматривали на практике следующие расширенные возможности SQL Edge:&lt;/p&gt;
						&lt;p&gt;ONNX модели машинного обучения;&lt;br /&gt;потоковую аналитику;&lt;br /&gt;репликацию данных;&lt;br /&gt;резервное копирование и восстановление данных&lt;br /&gt;синхронизация данных с Azure Blob storage с использованием Azure Data Factory и Azure SQL Database&lt;/p&gt;
						&lt;p&gt;Дополнительные инструкции по созданию end-to-end решения на базе SQL Edge находятся здесь.&lt;/p&gt;
						&lt;p&gt;Выводы&lt;/p&gt;
						&lt;p&gt;В завершение практической части просто удалите группу ресурсов rg-aziotedge-test во избежание дополнительных расходов.&lt;/p&gt;
						&lt;p&gt;В данном материале мы рассмотрели базовые возможности IoT Edge и SQL Edge. Мы развернули и настроили IoT Edge и на системе Windows, и на системе Linux.&lt;/p&gt;
						&lt;p&gt;Вы можете продолжить изучение облачных технологий Microsoft в части Интернета вещей, выполнив лабораторные работы.&lt;/p&gt;
						&lt;p&gt;Если у вас еще остались вопросы по облачным технологиям Microsoft и Интернету вещей — обращайтесь к нам в Кварта Технологии.&lt;/p&gt;
						&lt;p&gt;Автор статьи — Сергей Антонович, ведущий инженер Кварта Технологии. Связаться с ним можно по адресу sergant (at) quarta.ru.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 15:34:01 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=57#p57</guid>
		</item>
		<item>
			<title>Будни OEMщика (Часть 1)</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=56#p56</link>
			<description>&lt;p&gt;Спасибо за комментарий, также много прочей информации есть здесь&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 15:33:22 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=56#p56</guid>
		</item>
		<item>
			<title>Будни OEMщика (Часть 2)</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=45#p45</link>
			<description>&lt;p&gt;Для тех, кто не читал первую часть статьи, скажу, что в данной статье под OEMщиком подразумевается специалист, который занимается подготовкой Windows к тиражированию на множество устройств.&lt;/p&gt;
						&lt;p&gt;Из первой части Вы узнали, как быстро создать и развернуть образ системы. Помните, что, сохраняя образ системы по мере ее настройки проще выявлять проблемы, возникающие по мере настройки. Плюс к этому можно сохранить технологический образ системы с базовыми настройками, на основе которого можно будет подготавливать другие образы со специфическими настройками.&lt;/p&gt;
						&lt;p&gt;В этой части мы рассмотрим специализированные настройки, с помощью которых можно настроить устройство фиксированного назначения. К таким устройствам относятся: банкоматы, информационные киоски, рекламные панели, кассы и др. Плюс к этому режим мультикиоска можно настроить для офисного рабочего места, например для оператора колл-центра. При этом лицензия Windows 10 IoT Enterprise позволяет создавать множество учетных записей, а это значит, что на устройстве фиксированного назначения можно создать отдельную учетную запись для отдельного пользователя с индивидуальными настройками.&lt;/p&gt;
						&lt;p&gt;Для экспериментов с системой разверните локализованный образ системы в режиме аудита, который мы подготовили в первой части.&lt;/p&gt;
						&lt;p&gt;Напоминаю, что рассматриваемые настройки будут выполнены с помощью скриптов, которые можно взять здесь, а здесь находится описание скриптов. Но для некоторых настроек понадобится полный набор скриптов, который доступен при приобретении операционных систем линейки Windows 10 IoT в Кварта Технологии.&lt;/p&gt;
						&lt;p&gt;Периодически выходят новые версии скриптов с исправлениями и дополнениями, чтобы узнавать о выходе новых версий подпишитесь на нашу рассылку или присоединяйтесь к нашим группам в соцсетях.&lt;/p&gt;
						&lt;p&gt;Если по мере прочтения статьи у Вас будут появляться дополнительные вопросы по настройкам или по работе скриптов, возможно Вы сможете найти ответы на вопросы в этом видео. Под видео есть перечень демонстрируемых возможностей со ссылками на конкретное время видео.&lt;/p&gt;
						&lt;p&gt;Для каждого, кто тебя знает, ты разный&lt;/p&gt;
						&lt;p&gt;В первой части статьи речь шла о Windows 10 в целом, а теперь, учитывая, что в данной части будет рассмотрена настройка мультикиоска, речь пойдет именно о Windows 10 IoT Enterprise 2019 т.к. в предыдущих версиях Windows 10 с долгосрочным обслуживанием нет поддержки мультикиоска. Если у Вас нет дистрибутива этой системы, то здесь можно скачать пробную версию. У пробной версии системы есть только одно ограничение – она выключается каждый час. Чтобы выключения не были неожиданными, можно добавить уведомление за 5 минут до выключения системы с помощью скрипта «TrialShutdownTimeControl».&lt;/p&gt;
						&lt;p&gt;Различные цифровые обозначения в названии продукта и номере версии часто приводят к путанице. Чтобы избежать путаницы, можно посмотреть версию операционной системы выполнив команду «winver», у Вас должна быть версия системы 1809.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Почему многие компании реализуют свои решения именно на «IoT Enterprise»?&lt;/p&gt;
						&lt;p&gt;В первую очередь это вопрос цены, стоимость лицензии «IoT» зависит от процессора, с которым будет использоваться система. Для низкопроизводительных систем цена «IoT» может быть около 30% от стоимости Windows Pro.&lt;/p&gt;
						&lt;p&gt;Плюс к этому в редакции «Enterprise» максимальный набор возможностей, в отличии от «Pro». Причем это не какие-то ненужные возможности, а возможности, которые помогут создать наиболее защищенное решение:&lt;/p&gt;
						&lt;p&gt;Различные режимы киоска&lt;br /&gt;Блокировка запуска приложений&lt;br /&gt;Блокировка устройств&lt;br /&gt;Защита диска от записи&lt;br /&gt;Блокировка клавиш и ввода символов&lt;br /&gt;Поддержка 10 лет с момента выпуска без перехода на следующую версию&lt;/p&gt;
						&lt;p&gt;Еще одним важным фактором является дополнительный способ активации Windows, который есть только у Windows 10 IoT Enterprise. Это активация с помощью ключа «ePKEA». ePKEA — это ключ множественной активации, который выдается на компанию. С этим ключом будут активироваться все устройства, выпускаемые компанией. С таким ключом доступны все стандартные способы активации, по интернету или по телефону. Данный ключ нужно ввести в систему перед тиражированием и скрыть его.&lt;/p&gt;
						&lt;p&gt;Сочетание максимальных возможностей и минимальной цены делает операционную систему Windows 10 IoT Enterprise очень привлекательной, именно поэтому ее выбирают множество компаний для своих устройств.&lt;/p&gt;
						&lt;p&gt;Пользователи&lt;/p&gt;
						&lt;p&gt;В первой части статьи мы рассмотрели подготовку образа системы без настроек и без пользователей. При настройке устройства фиксированного назначения понадобится создать как минимум две учетные записи. Администратор – для обслуживания системы и пользователь – для использования устройства. При необходимости можно создать множество пользователей с индивидуальными настройками для каждого пользователя.&lt;/p&gt;
						&lt;p&gt;Ограничения для пользователя желательно настраивать не для конкретной учетной записи, а для группы «Пользователи». Тогда, для временного снятия ограничений с пользователя достаточно перевести учетную запись из группы «Пользователи» в группу «Администраторы».&lt;/p&gt;
						&lt;p&gt;Для быстрого создания пользователей можно воспользоваться скриптом «Users», который находится в наборе скриптов. Просто введите имена пользователей в столбик в файл «CreateUserList.txt» и выберите в скрипте пункт меню создания пользователей. Скрипт создаст пользователей, отключит срок действия пароля и переведет пользователей в группу «Администраторы». Для перевода пользователя между группами «Пользователи» и «Администраторы» достаточно выбрать имя пользователя в меню скрипта.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Безвыходных положений не бывает&lt;/p&gt;
						&lt;p&gt;При настройке систем фиксированного назначения нужно знать их типовые проблемы, чтобы понимать, что нужно настроить в системе. Плюс к этому нужно знать, как настроить необходимую возможность или хотя бы знать, где посмотреть информацию о настройке. Как я говорил в первой части статьи, далеко не во всех компаниях есть отдельный специалист по настройке и тиражированию систем. А у начинающих специалистов по настройке систем фиксированного назначения может уйти довольно много времени на поиск необходимой информации. Плюс к этому отсутствие знаний типовых проблем устройства приводит к типовым ошибкам при настройке систем фиксированного назначения.&lt;/p&gt;
						&lt;p&gt;И здесь появляется вопрос. Если есть типовые настройки для устройств фиксированного назначения, то почему бы не сделать инструмент, который автоматически установит типовые настройки системы для устройств фиксированного назначения?&lt;/p&gt;
						&lt;p&gt;Компания Кварта Технологии подготовила набор скриптов, в котором скрипты, отвечающие за типовые настройки могут работать в группе, т.е. за один раз можно включить или выключить множество настроек. Управлять группой скриптов можно с помощью скрипта «SettingsGroup», который находится в корне каталога набора скриптов. С его помощью можно посмотреть текущие значения группы настроек и изменить их. По умолчанию в группе будут работать все скрипты, которые отвечают за типовые настройки. Но при необходимости можно изменить начальный каталог поиска скриптов, которые могут работать в группе, тем самым изменив набор изменяемых настроек. Настройки со значениями, нетипичными для устройств фиксированного назначения будут выделены красным, а настройки с типичными значениями для устройств фиксированного назначения – зеленым.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Если Вы захотите добавить в какой-либо скрипт поддержку работы в группе, то это сделать несложно. Скрипт, который управляет группой скриптов, после выбора пункта меню ищет в указанной папке все скрипты «PS1», в которых есть функция «Lockdown» и отправляет ей параметр в зависимости от выбранного пункта. Один из самых простых примеров реализации функции «Lockdown» в файле «WindowsUpdate.ps1»&lt;/p&gt;
						&lt;p&gt;Типовые настройки для устройств фиксированного назначения&lt;/p&gt;
						&lt;p&gt;В данном разделе краткое описание типовых настроек скриптов, которые могут работать в группе.&lt;/p&gt;
						&lt;p&gt;Схема питания&lt;/p&gt;
						&lt;p&gt;Как правило, устройство фиксированного назначения должно работать постоянно, без засыпаний и отключения экрана. Значит, необходимо отключить все энергосберегающие функции. Скрипт настройки питания не проверяет состояние текущей схемы питания и не перенастраивает текущую схему питания, он создает новую схему питания на основе сбалансированной схемы питания и отключает энергосберегающие функции. Изменения, которые вносятся в создаваемую схему питания, описаны в комментариях к командам в файле «PowerSettings.ps1».&lt;/p&gt;
						&lt;p&gt;Отображение ошибок&lt;/p&gt;
						&lt;p&gt;Чтобы некритические ошибки не мешали использованию устройства, их нужно отключить. Какие сообщения будут отключены, показано на этом видео.&lt;/p&gt;
						&lt;p&gt;Отчеты об ошибках&lt;/p&gt;
						&lt;p&gt;Помимо отображения самих ошибок, система может запрашивать подтверждения на отправку отчетов об ошибках. Для устройств фиксированного назначения такую возможность тоже нужно отключать.&lt;/p&gt;
						&lt;p&gt;Всплывающие уведомления&lt;/p&gt;
						&lt;p&gt;О различных событиях система уведомляет пользователя с помощью всплывающих уведомлений, их тоже нужно отключать. Обратите внимание, что скрипт отключает всплывающие уведомления только для той учетной записи, в которой он запущен.&lt;/p&gt;
						&lt;p&gt;Сценарий службы политики диагностики&lt;/p&gt;
						&lt;p&gt;Если система обнаружит какие-либо проблемы, то служба политики диагностики предложит пользователю возможные варианты решения проблем. Такой функционал нужно отключать.&lt;/p&gt;
						&lt;p&gt;Отображение ошибок при загрузке&lt;/p&gt;
						&lt;p&gt;Если работа системы будет завершена некорректно несколько раз подряд, то при загрузке система сообщит об ошибке и не загрузится самостоятельно. Некорректное завершение работы может быть вызвано сбоем питания, поэтому такие сообщения нужно отключать. Но необходимо учесть, что эта настройка находится в файле конфигурации загрузки, который находится на загрузочном разделе. Т.е. при сохранении образа системного раздела данная настройка будет утеряна. В таком случае, проще всего отключить отображение ошибок с помощью файла ответов для запечатывания.&lt;/p&gt;
						&lt;p&gt;В наборе скриптов есть пример файла ответов для запечатывания с отключением отображений ошибок загрузки «OOBEAuto_IgnoreAllBootFailures.xml»&lt;/p&gt;
						&lt;p&gt;Отображение синего экрана&lt;/p&gt;
						&lt;p&gt;Думаю, что многие из вас видели подборку синих экранов в необычных местах. В подобных случаях лучше, чтобы вместо синего экрана отображался черный, для этого достаточно просто отключить отображение синего экрана.&lt;/p&gt;
						&lt;p&gt;Для проверки поведения системы при появлении синего экрана можно вызвать синий экран вручную. Для включения возможности вызова синего экрана вручную есть скрипт «CrashOnCtrlScroll», который находится в наборе скриптов.&lt;/p&gt;
						&lt;p&gt;Отображение уведомлений об обновлениях&lt;/p&gt;
						&lt;p&gt;Система может показывать различные уведомления, связанные с обновлениями, что тоже будет мешать использованию устройства. Поэтому такие уведомления необходимо отключать.&lt;/p&gt;
						&lt;p&gt;Автоматическое получение обновлений&lt;/p&gt;
						&lt;p&gt;В локальной групповой политике множество настроек, связанных с обновлениями, но чаще всего требуется отключить получение всех обновлений, поэтому скрипт типовой настройки отключает получение всех обновлений.&lt;/p&gt;
						&lt;p&gt;Прокрутка от краев экрана&lt;/p&gt;
						&lt;p&gt;Под данной настройкой подразумевается жест для вызова центра уведомлений Windows. Данный жест необходимо отключать на устройствах с чувствительным экраном. Но т.к. отключение данной возможности не будет мешать настройке устройства, то данный жест можно отключать всегда.&lt;/p&gt;
						&lt;p&gt;Отображение логотипа и анимации в виде крутящихся шариков&lt;/p&gt;
						&lt;p&gt;Во время загрузки системы отображается логотип системы и анимация в виде крутящихся шариков. Довольно часто требуется скрыть данные элементы. Иногда требуется скрыть один из этих элементов.&lt;/p&gt;
						&lt;p&gt;Данные элементы всегда будут отображаться, если система в режиме аудита. Плюс к этому, данная настройка находится в файле конфигурации загрузки, который находится на загрузочном разделе. При тиражировании образа только системного тома, данные настройки не сохранятся, команды отключения отображения процесса загрузки системы лучше добавлять в файл ответов запечатывания.&lt;/p&gt;
						&lt;p&gt;В наборе скриптов есть пример файла ответов для запечатывания с отключением отображения процесса загрузки «OOBEAuto_HideBoot.xml»&lt;/p&gt;
						&lt;p&gt;Отображение процесса входа пользователя в систему&lt;/p&gt;
						&lt;p&gt;Если необходимо, чтобы первое изображение, которое покажет система, было запускаемой оболочкой, то помимо отображения процесса загрузки системы нужно отключить отображение процесса входа пользователя в систему.&lt;/p&gt;
						&lt;p&gt;Режимы киоска&lt;/p&gt;
						&lt;p&gt;В устройстве фиксированного назначения обязательно нужно менять оболочку для пользователя, чтобы вместо оболочки системы запускалось одно приложение или группа приложений. Вы можете настроить запуск приложений любым способом, но Майкрософт предлагает специальные режимы для запуска приложений:&lt;/p&gt;
						&lt;p&gt;Shell Launcher V1 – средство для запуска приложений. Запускает одно классическое приложение вместо оболочки системы и контролирует его работу. При закрытии приложения можно настроить: перезапуск приложения, перезагрузку системы, выключение системы.&lt;br /&gt;Shell Launcher V2 – во второй версии добавлена возможность запуска универсальных приложений.&lt;br /&gt;Ограниченный доступ – запуск одного универсального приложения вместо оболочки системы.&lt;br /&gt;Режим мультикиоска – запуск системы в режима планшета и отображение плиток заранее назначенных приложений.&lt;/p&gt;
						&lt;p&gt;Майкрософт не рекомендует использовать различные режимы киоска одновременно, но если настроить режимы так, чтобы они не мешали друг другу, то они могут работать и одновременно.&lt;/p&gt;
						&lt;p&gt;Shell Launcher V1&lt;/p&gt;
						&lt;p&gt;Для включения средства запуска оболочки нужно добавить компонент средства запуска оболочки в систему и заменить запуск стандартной оболочки «explorer.exe» на запуск средства запуска оболочки «eShell.exe». Без настроек средство запуска оболочки будет запускать только командную строку, поэтому необходимо настроить средство запуска оболочки. В настройках по умолчанию можно указать приложение, которое будет запускаться для пользователя, которому не назначен запуск приложения. Плюс к этому, необходимо добавить настройку запуска оболочки системы для группы «Администраторы» т.к. при настройке запуска приложения для группы «Пользователи» у данной настройки будет приоритет выше, чем у настройки по умолчанию, следовательно, при отсутствии других настроек для группы «Администраторы» будет выполняться приложение, назначенное для группы «Пользователи». Все эти настройки выполнит скрипт «Shell Launcher» при включении средства запуска оболочки.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Для настройки запуска приложения вместо оболочки системы необходимо выбрать в меню скрипта, для кого вы хотите настроить запуск оболочки — для пользователя или для группы, а в следующем меню выбрать имя пользователя или группы. После выбора конкретного пользователя или группы откроется диалоговое окно для выбора запускаемого файла. После выбора запускаемого файла скрипт создаст в реестре ветку с SID’ом выбранного пользователя или группы и пропишет в нее настройки запуска приложения. Скрипт всегда будет прописывать в параметре «DefaultReturnCodeAction» — 0, что означает перезапуск приложения, если Вам необходимо, чтобы были выполнены другие действия при закрытии приложения, установите другое значение параметра «DefaultReturnCodeAction». Допустимые параметры:&lt;/p&gt;
						&lt;p&gt;0 – перезапуск приложения&lt;br /&gt;1 – перезагрузка&lt;br /&gt;2 – выключение&lt;br /&gt;3 – отсутствие действий&lt;/p&gt;
						&lt;p&gt;Программы будут запускаться без прав администратора. Проверить, с какими правами запущено приложение можно с помощью скрипта «TestRunAs.bat», который находится в наборе скриптов в папке «Tools». Просто укажите скрипт в качестве запускаемой программы.&lt;/p&gt;
						&lt;p&gt;Если Вам необходимо настроить запуск множества программ с отдельным контролем работы каждой запущенной программы или необходимо запускать программу от имени администратора, то можно настроить совместную работу средства запуска оболочки и планировщика заданий. Как это сделать можно посмотреть в нашей вики.&lt;/p&gt;
						&lt;p&gt;Созданные задачи в планировщике заданий не будут работать в режиме аудита.&lt;/p&gt;
						&lt;p&gt;Ограниченный доступ&lt;/p&gt;
						&lt;p&gt;Обратите внимание, что настроить режим ограниченного доступа можно только для тех учетных записей, которые находятся в группе «Пользователи» и не находятся в группе «Администраторы». Запускаемое универсальное приложение нельзя закрыть или свернуть, в режиме ограниченного доступа будут заблокированы некоторые горячие клавиши. В данном режиме нет возможности выйти из учетной записи, есть возможность только заблокировать учетную запись и перейти на экран входа в систему. Если после перехода на экран входа в систему не будет никаких действий пользователя 30 секунд, то система автоматически вернется в учетную запись. Время ожидания действий пользователя можно изменить в параметре «IdleTimeOut», подробнее об этом параметре можно узнать в соответствующем разделе нашей вики.&lt;/p&gt;
						&lt;p&gt;Напомню, что в дистрибутиве SAC есть браузер Edge, который можно использовать в режиме ограниченного доступа в различных режимах. Подробнее об этом можно прочитать в этой статье.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Режим мультикиоска&lt;/p&gt;
						&lt;p&gt;Режим мультикиоска можно посмотреть здесь. Настройке режима мультикиоска была посвящена отдельная статья, а здесь скажу об основных моментах. Для настройки мультикиоска был создан отдельный вспомогательный скрипт, который есть в статье посвященной настройке мультикиоска, позже он был интегрирован в общий набор скриптов. В наборе скриптов есть:&lt;/p&gt;
						&lt;p&gt;«ExportTiles.bat» — для экспорта текущей конфигурации расположения плиток в меню «Пуск». Экспорт производится сразу в двух режимах, с указанием ID приложений и указанием полного пути до запускаемого файла.&lt;br /&gt;Примеры конфигурационных файлов для настройки&lt;br /&gt;Файл ответов для запечатывания с решением проблемы запуска режима мультикиоска&lt;/p&gt;
						&lt;p&gt;Учтите, что примеры конфигурационных файлов для настройки мультикиоска рассчитаны только на применение к системе с помощью скрипта. ID профиля и конфигурации связаны простыми одинаковыми строками, перед применением конфигурации скрипт их автоматически поменяет на GUID. При этом в самих файлах конфигурации строки останутся в исходном виде.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;У каждого свой путь&lt;/p&gt;
						&lt;p&gt;Типовые настройки, плюс один из режимов киоска, этого будет достаточно для многих решений, которые не рассчитаны на взаимодействие с пользователем. Хотя, с помощью некоторых настроек, которые будут рассмотрены в третьей части статьи, можно повысить отказоустойчивость системы.&lt;/p&gt;
						&lt;p&gt;А для устройств, которые рассчитаны на взаимодействие с пользователем, это только часть настроек. Для сенсорного экрана настроек немного, поэтому мы не будем их подробно рассматривать в статье. Можно отключить вызов контекстного меню и множественные касания, подробнее об этих настройках можно узнать здесь.&lt;/p&gt;
						&lt;p&gt;При дальнейшей настройке системы мы столкнемся с некоторыми особенностями настроек локальной групповой политики. Чтобы эти особенности были понятными, сделаем небольшое отступление и рассмотрим их.&lt;/p&gt;
						&lt;p&gt;Особенности настроек локальной групповой политики&lt;/p&gt;
						&lt;p&gt;Вся информация, описанная под данным заголовком, будет относиться только к ветке «Административные шаблоны».&lt;/p&gt;
						&lt;p&gt;Изменять настройки локальной групповой политики можно разными способами:&lt;/p&gt;
						&lt;p&gt;С помощью редактора локальной групповой политики «gpedit.msc»&lt;br /&gt;С помощью консольной утилиты LGPO&lt;br /&gt;С помощью настроек реестра&lt;/p&gt;
						&lt;p&gt;При изменении настроек с помощью редактора локальной групповой политики изменения будут действовать на всех пользователей и в редакторе локальной групповой политики будет отображаться актуальное состояние настроек. При изменении настроек с помощью утилиты LGPO ситуация будет такая же.&lt;/p&gt;
						&lt;p&gt;При изменении настроек локальной групповой политики в реестре, актуальные настройки будут видны только в реестре. В редакторе локальной групповой политики будут отображаться неактуальные настройки. При этом изменения настроек конфигурации компьютера — ветка реестра «HKEY_LOCAL_MACHINE», будут действовать на всю систему. А изменения в конфигурации пользователя — ветка реестра «HKEY_CURRENT_USER», будут действовать только на ту учетную запись, в которой были внесены изменения.&lt;/p&gt;
						&lt;p&gt;В наборе скриптов есть скрипт «LGPOMenu» для автоматизации экспорта и импорта настроек локальной групповой политики.&lt;/p&gt;
						&lt;p&gt;Устройство с множеством пользователей&lt;/p&gt;
						&lt;p&gt;Если ваше решение будет рассчитано на множество пользователей, то у пользователей будет доступ на экран входа в систему для возможности входа в необходимую учетную запись. На экране входа в систему можно выборочно отключить элементы, которые находятся в правом нижнем углу. Настроить отображение элементов можно с помощью скрипта «BrandingNeutral».&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Если пользователю доступна клавиша «Shift», обязательно отключите иконку управления питанием, т.к. при перезагрузке системы с удержанием «Shift» можно перейти в среду восстановления. Для отключения иконки выбора сетевого подключения есть отдельная настройка и отдельный скрипт для нее «NetworkSelectionUI».&lt;/p&gt;
						&lt;p&gt;Если у пользователя будет возможность перехода на экран вызываемый по «Alt + Ctrl + Del», необходимо выполнить и его настройку. Все отключенные иконки на экране входа в систему будут отключены и на экране, вызываемом по «Alt + Ctrl + Del». Для отключения кнопок, находящихся над кнопкой «Отмена», есть группа скриптов, которые находятся в папке «Действия по Alt+Ctrl+Del». Во всей группе скриптов есть возможность изменить настройки для всех учетных записей или для конкретной учетной записи. При изменении настройки для всех учетных записей настройка будет изменена с помощью утилиты LGPO, а при изменении настройки только для текущего пользователя, настройка будет изменена в реестре.&lt;/p&gt;
						&lt;p&gt;Если пользователи не будут выходить из учетной записи, а будут просто блокировать ее, то данные незавершенной сессии будут оставаться в оперативной памяти. Во время использования устройства с другой учетной записью данные в незавершенных сессиях будут просто занимать оперативную память, что может привести к ее нехватке. Нехватка оперативной памяти замедлит работу устройства или может привести к некорректной работе системы. Для предотвращения такой ситуации можно запретить быстрое переключение между пользователями, тогда вход в другую учетную запись будет невозможен до завершения предыдущей сессии.&lt;/p&gt;
						&lt;p&gt;После запрета быстрого переключения между пользователями у пользователей будет возможность заблокировать систему, но после блокировки можно будет войти только в ту учетную запись, которая была заблокирована. Если для разных учетных записей пользователей установлены разные пароли, то блокировка учетной записи может привести к невозможности входа в систему другого пользователя, который не знает пароля от заблокированной учетной записи. Чтобы избежать такой ситуации, можно запретить блокировку компьютера.&lt;/p&gt;
						&lt;p&gt;Блокировку компьютера нельзя отключать для учетной записи с режимом ограниченного доступа, иначе режим ограниченного доступа перестанет работать. Это связано с тем, что назначенное приложение запускается поверх экрана блокировки. (по ссылке см. функцию Windows 10 «Ограниченный доступ»)&lt;/p&gt;
						&lt;p&gt;При выходе из учетной записи с открытыми программами, которые требуют реакции пользователя, система покажет экран остановки и сообщит о программах, которые требуют реакции пользователя. Медленно работающие системы могут показать экран остановки не сразу, а через некоторое время после попытки выхода. Это может привести к тому, что пока система будет думать, что ей делать, пользователь успеет уйти, а после его ухода система предложит закрыть открытые программы. Это может привести к входу в учетную запись без ввода пароля, чтобы это предотвратить, нужно отключить остановку завершения работы, тогда при выходе из учетной записи все программы будут закрыты без сохранения данных.&lt;/p&gt;
						&lt;p&gt;Устройство с одним пользователем&lt;/p&gt;
						&lt;p&gt;Самый распространенный вариант использования однопользовательского решения — это запуск классического приложения с помощью «Shell Launcher V1». Напомню, что для удобства настройки и обслуживания устройства, лучше настроить все ограничения не для конкретного пользователя, а для группы «Пользователи», тогда установить и снять ограничения для пользователя можно будет простым переводом учетной записи из одной группы в другую. Т.е. запуск конкретного приложения вместо оболочки системы лучше настроить не для конкретного пользователя, а для группы «Пользователи».&lt;/p&gt;
						&lt;p&gt;Но если в «Shell Launcher V1» будут настройки для запуска конкретного приложения для группы «Пользователи», то система не сможет загрузиться после запечатывания в режиме приветствия (OOBE). Обойти данную проблему поможет скрипт для запечатывания «Sysprep», он временно отключит «Shell Launcher V1» и создаст задачу на его включение после первой загрузки в режиме OOBE. Подробнее эту проблему мы рассмотрим в следующей части статьи.&lt;/p&gt;
						&lt;p&gt;На устройстве с одним пользователем можно не настраивать экран входа в систему и экран вызываемый по «Alt + Ctrl + Del», достаточно просто лишить пользователя возможности перейти на эти экраны. Заблокировать «Alt + Ctrl + Del» и другие горячие клавиши нам поможет фильтр клавиатуры.&lt;/p&gt;
						&lt;p&gt;Фильтр клавиатуры&lt;/p&gt;
						&lt;p&gt;С включением и настройкой фильтра клавиатуры нам поможет скрипт «Keyboard Filter» из набора скриптов. При включении фильтра клавиатуры он добавит компонент фильтра клавиатуры и пропишет в реестр команду запуска службы фильтра клавиатуры при следующей загрузке системы.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Фильтр клавиатуры оказывает влияние на работу режима ограниченного доступа без какой-либо настройки. В режиме ограниченного доступа будут заблокированы горячие клавиши «Alt + Ctrl + Del», перейти на экран входа в систему можно будет только при пятикратном нажатии клавиши разблокировки, по умолчанию это кнопка «Win».&lt;/p&gt;
						&lt;p&gt;С помощью фильтра клавиатуры можно:&lt;/p&gt;
						&lt;p&gt;Запретить использование горячих клавиш специальных возможностей&lt;br /&gt;Запретить использование комбинаций клавиш&lt;br /&gt;Запретить ввод конкретных символов&lt;br /&gt;Запретить использование конкретных клавиш&lt;br /&gt;Назначить клавишу разблокировки системы&lt;/p&gt;
						&lt;p&gt;Обязательно заблокируйте горячие клавиши специальных возможностей, они не нужны для настройки системы, а пользователям дают избыточные возможности. Одна из таких горячих клавиш – многократное нажатие клавиши «Shift», чтобы убедиться, что горячие клавиши специальных возможностей отключены, можно проверить работу этой горячей клавиши до отключения горячих клавиш и после отключения.&lt;/p&gt;
						&lt;p&gt;Чтобы лишить пользователя возможности перехода на экран вызываемый по «Alt + Ctrl + Del» и на экран входа в систему, заблокируйте горячие клавиши «Alt + Ctrl + Del».&lt;/p&gt;
						&lt;p&gt;Настройки фильтра клавиатуры находятся в реестре, для быстрого перехода к настройкам фильтра клавиатуры выберите пункт открытия настроек в меню скрипта. В ветке реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Embedded\KeyboardFilter» находится перечень клавиш и клавиатурных сочетаний, которые можно заблокировать, прописав значение «Blocked».&lt;/p&gt;
						&lt;p&gt;При открытии настроек фильтра клавиатуры с помощью скрипта, в разделе «KeyboardFilter» скрипт создаст еще два подраздела «CustomFilters» и «CustomScancodes».&lt;/p&gt;
						&lt;p&gt;В разделе «CustomFilters» можно добавить любые символы и клавиатурные сочетания, которых нет в разделе «KeyboardFilter» и заблокировать их. Учтите, что для блокировки горячих клавиш с использованием букв, необходимо указывать блокировку для имеющихся раскладок клавиатуры. Например, если в системе русская и английская раскладка, то для блокировки горячих клавиш «Ctrl+X» необходимо добавить еще и блокировку «Ctrl+Ч», чтобы горячие клавиши не работали на русскоязычной раскладке.&lt;/p&gt;
						&lt;p&gt;В разделе «CustomScancodes» можно заблокировать конкретную клавишу, указав ее скан-код. Скан-код клавиши можно узнать с помощью программы «SharpKeys». Чтобы узнать скан-код клавиши запустите программу «SharpKeys», в окне программы нажмите на кнопку «Add», после чего откроется новое окно программы, в нем нажмите на кнопку «Type Key», а затем нажмите на клавишу, скан-код которой Вы хотите узнать. После нажатия на клавишу появится новое окно, в котором будет показан скан-код. В реестр нужно прописать те символы, которые указаны после нижнего подчеркивания.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
						&lt;p&gt;Периодически начинающие задают вопрос, чем отличается блокировка символа и клавиши? При блокировке символа будет запрещен ввод именно символа, независимо от того, на какой клавише он находится. При блокировке символа «Z» можно будет вводить символ «Я», хотя они находятся на одной клавише. При блокировке клавиши, которой назначен ввод символов «Z» и «Я» нельзя будет ввести ни один из этих символов, но если переназначить ввод этих символов на другую клавишу, то их можно будет вводить.&lt;/p&gt;
						&lt;p&gt;Ограничения фильтра клавиатуры будут действовать на всех пользователей, чтобы фильтр клавиатуры не блокировал клавиши администратору, нужно отключить действие фильтра клавиатуры на группу «Администраторы».&lt;/p&gt;
						&lt;p&gt;Как правило, на устройствах фиксированного назначения не используется полноформатная клавиатура, используется либо цифровая, либо цифробуквенная часть. Чтобы лишить пользователя возможности перехода на экран входа в систему, необходимо назначить такую клавишу разблокировки, которой не будет у пользователя. Для изменения клавиши разблокировки необходимо прописать скан-код требуемой клавиши в значение параметра «BreakoutKeyScanCode». Данный параметр находится в разделе «KeyboardFilter». При необходимости отключить клавишу разблокировки в значении укажите «0».&lt;/p&gt;
						&lt;p&gt;Послесловие&lt;/p&gt;
						&lt;p&gt;В данной части описана базовая настройка для устройств фиксированного назначения, хотя в ряде случаев такой настройки может быть достаточно, особенно если Вы настраиваете устройство для сотрудников организации, где нужно предотвратить случайные сбои.&lt;/p&gt;
						&lt;p&gt;А если Вы настраиваете устройство для общего использования, то такой настройки вряд ли будет достаточно, в данном случае лучше предотвратить возможности намеренной порчи системы. На устройствах общего пользования довольно часто приходится видеть систему, настройки которой не рассчитаны на нештатные ситуации. Или у устройства есть общедоступные USB порты, работа которых никак не ограничена.&lt;/p&gt;
						&lt;p&gt;В следующей части мы рассмотрим возможные варианты повышения безопасности системы с помощью штатных средств, а именно: настройку блокировки запуска приложений по белому списку, блокировку работы устройств и защиту диска от записи.&lt;/p&gt;
						&lt;p&gt;Если у вас остались вопросы относительно настройки и лицензирования Windows 10 IoT Enterprise, обращайтесь по адресу mse@quarta.ru или на сайт quarta-embedded.ru. Ответы на некоторые вопросы Вы можете найти в нашей вики или на нашем YouTube-канале&lt;/p&gt;
						&lt;p&gt;Автор статьи: Борисенков Владимир, технический эксперт компании Кварта Технологии.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 15:30:11 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=45#p45</guid>
		</item>
		<item>
			<title>Будни OEMщика (Часть 3)</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=44#p44</link>
			<description>&lt;p&gt;Ждем новых комментариев!)&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 15:25:51 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=44#p44</guid>
		</item>
		<item>
			<title>Azure Custom Vision без Azure, или «где у них маска». Как мы распознав</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=38#p38</link>
			<description>&lt;p&gt;Если нарисовать на лице &amp;quot;маску&amp;quot;, то в данном примере обмануть систему не получится — нарисовал маску на портрете, модель показывает вероятность наличия маски около 70%, у нас установлен порог 90%, именно поэтому нет.&lt;br /&gt;В общем случае — все зависит от качества обучения модели (нужно достаточно много разных правильно размеченных картинок, с маской, без, с &amp;quot;фальшивой&amp;quot; маской и т.п.) и установленных порогов.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 15:12:33 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=38#p38</guid>
		</item>
		<item>
			<title>Обновление и продление поддержки Windows на банкоматах, платежных киос</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=35#p35</link>
			<description>&lt;p&gt;linux, bsd, qnx&amp;#8230; выбирай на любой вкус и цвет и любая будет уже из коробки надёжней и безопасней.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 15:10:35 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=35#p35</guid>
		</item>
		<item>
			<title>Wi-Fi розетка с управлением через Интернет за 60 минут</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=31#p31</link>
			<description>&lt;p&gt;Можно было сэкономить массу времени на разбирательствах «с тулчейнами», если использовать, например, сервис Wifi-Iot.com, где даже в бесплатном режиме легко собирается весьма функуиональная прошивка для ESP. Это если не брать готовые решения от Sonoff (на которые для избавления от облачного рабства накатываются прекрасные прошивки от Tasmota).&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 14:58:09 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=31#p31</guid>
		</item>
		<item>
			<title>Astra Linux Embedded или «Есть ли жизнь после Windows IoT?»</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=4#p4</link>
			<description>&lt;p&gt;Да, поэтому многие производители спрашивают эту наклейку. Ранее Астра убрали наклейки из канала. В Embedded их вводят по-новой.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 14:41:37 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=4#p4</guid>
		</item>
		<item>
			<title>Тестовое сообщение</title>
			<link>https://quarta.mybb.ru/viewtopic.php?pid=1#p1</link>
			<description>&lt;p&gt;Благодарим за выбор нашего сервиса!&lt;/p&gt;</description>
			<author>mybb@mybb.ru (quarta)</author>
			<pubDate>Tue, 30 Jan 2024 14:17:42 +0300</pubDate>
			<guid>https://quarta.mybb.ru/viewtopic.php?pid=1#p1</guid>
		</item>
	</channel>
</rss>
