Экономичное Решение Для Интернета Вещей. Центр Интернета Вещей Azure + Функции Azure



Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

Одна из самых дорогих услуг в стандартном IoT-решении от Azure — Stream Analytic. Чтобы обойти этот дорогостоящий сервис, который больше подходит для разработки корпоративных решений, вы можете использовать возможности Функций Azure. Как создать центр Интернета вещей и подключить к нему Arduino? я уже
писал раньше .

Теперь давайте удешевим решение.

Давайте заменим Stream Analytic функциями Azure. Под катом вы найдете инструкцию How-To. Сначала давайте перейдем к конечным точкам нашего Центра Интернета вещей и возьмем из конечной точки с именем Events имя, совместимое с концентратором событий.



Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

Давайте скопируем и сохраним.

Он понадобится позже.

Теперь давайте создадим новую функцию

Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

Экономичнее будет выбрать в качестве плана хостинга «План потребления», если количество обращений к вашей функции не особенно велико.

Стоимость 20 центов за миллион запусков функций.

Затем создайте пользовательскую функцию, например IoT Hub (Event Hub).



Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

В качестве языка я выбрал C#, но вы можете выбрать другой язык, который вам ближе.



Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

В строке имени Центра событий введите значение, которое мы скопировали из Центра Интернета вещей.

Нажав на «новый» устанавливаем значение для подключения.



Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

Следующий код будет автоматически сгенерирован как код шаблона функции:

  
   

using System; public static void Run(string myIoTHubMessage, TraceWriter log) { log.Info($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}"); }

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

Если все настроено правильно, то в окне лога мы получим следующий лог:

2017-12-17T16:20:40.486 Функция запущена (Id=63b0dbda-1624-4e2c-b381-47442e69b853) 2017-12-17T16:20:40.486 Триггерная функция C# IoT Hub обработала сообщение: {"deviceId":"ArduinoAzureTwin", "iotdata":581} 2017-12-17T16:20:40.486 Функция завершена (успех, идентификатор = 63b0dbda-1624-4e2c-b381-47442e69b853, продолжительность = 0 мс)


Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

Функция работает, но нам нужно сохранить данные в базу данных.

В качестве базы данных я использую SQL Server. Вы можете использовать любой другой тип базы данных.

Зайдем в существующую базу данных или создадим новую.

В пункте меню «Строки подключения» выберите строку ADO.NET.

Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

Теперь в нашей функции переходим в «Настройки приложения».



Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

Мы не собираемся хранить нашу строку подключения в коде C#, не так ли? Сохраняем его в строках подключения приложения, не забывая менять логин и пароль.



Экономичное решение для Интернета вещей.
</p><p>
 Центр Интернета вещей Azure + функции Azure

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

Достаточно стандартная версия кода выглядит так:

#r "System.Configuration" #r "System.Data" #r "Newtonsoft.Json" using System; using System.Configuration; using System.Data.SqlClient; using System.Threading.Tasks; using System.Net; using Newtonsoft.Json; public static async Task Run(string myIoTHubMessage, TraceWriter log) { log.Info($"Message: {myIoTHubMessage}"); var e = JsonConvert.DeserializeObject<EventData>(myIoTHubMessage); var str = ConfigurationManager.ConnectionStrings["SQLServerDB_connection"].

ConnectionString; using (SqlConnection conn = new SqlConnection(str)) { conn.Open(); var text = "INSERT INTO [dbo].

[SensorData] (DeviceName, SensorValue) Values (@deviceId, @iotdata);"; using (SqlCommand cmd = new SqlCommand(text, conn)) { cmd.Parameters.AddWithValue("@iotdata", e.iotdata); cmd.Parameters.AddWithValue("@deviceId", e.deviceId); var result = await cmd.ExecuteNonQueryAsync(); log.Info($"Inserted: {result.ToString()}"); } } } public class EventData { public string deviceId { get; set; } public int iotdata { get; set; } }

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

Кроме того, вы можете создать бесплатное веб-приложение Azure для визуализации данных.

Цена решения немного превышает стоимость базы данных.

То есть, если вы используете базу данных размером 2 Гб, вы будете получать чуть больше 5 долларов в месяц.

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

Теги: #azure #iot #functions #Serverless #Интернет вещей #Microsoft Azure #Разработка для Интернета вещей

Вместе с данным постом часто просматривают: