У меня есть Stream Analytics, который в зависимости от того, что он получает, выводит некоторые данные в функцию Azure в C #. Эта функция должна отправлять JSON на устройство, и когда он читает JSON, он запускает локальный метод в зависимости от полученных данных. Моя проблема в том, что я не могу найти способ сделать это.
Я уже сделал это на Java, но я не могу найти способ сделать это в C #. Я делаю это с помощью триггера HTTP и кода ниже.
Вот как я десериализирую полученные данные:
String body = request.getBody().get().toString().replace("[", "").replace("\"", "\'");
JSONObject bodyJson = new JSONObject(body);
String deviceMac = bodyJson.getString("deviceid");
deviceId = bodyJson.getString("receiveruuid");
И вот как я отправляю результат вустройство:
DeviceMethod methodClient = DeviceMethod.createFromConnectionString(iotHubConnectionString);
Map<String, Object> payload = new HashMap<String, Object>() {
{
//PAYLOAD DATA
}};
MethodResult result = methodClient.invoke(deviceId, methodName, responseTimeout, connectTimeout, payload);
Спасибо за помощь
ОБНОВЛЕНИЕ
Я наконец решил проблему всюда.
var serviceClient = ServiceClient.CreateFromConnectionString(iotHubConnectionString);
var methodname = new CloudToDeviceMethod("method_defatult").SetPayloadJson(" {\"message\": \""+ message +"\"}");
await serviceClient.InvokeDeviceMethodAsync("moviltest", methodname);
С помощью первой строки вы создаете строку подключения к iotHub. Вторая строка создает CloudToDeviceMethod, а также вы устанавливаете полезную нагрузку. Убедитесь, что JSON верен. Наконец, вызывает метод в устройстве.