ESP8266上的Azure IoT中心设备孪生

时间:2018-08-11 14:06:07

标签: c azure esp8266 azure-iot-hub azure-iot-sdk

我已经做了几次尝试,在运气不佳的情况下在ESP8266模块上使用此库。 Microsoft已声明this回购应与ESP8266模块配合使用。起初它根本不起作用。我可以通过关闭日志记录来使其运行。现在它将运行一段时间,但最终会引发异常。 (我通常需要30分钟以上的时间才能获得异常)

iothub_client_sample_device_twin.c

// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

#include <stdio.h>
#include <stdlib.h>
#include "iot_configs.h"
#include "sample.h"

#include <AzureIoTHub.h>
#include <AzureIoTProtocol_MQTT.h>

/*String containing Hostname, Device Id & Device Key in one of the formats:                 */
/*  "HostName=<host_name>;DeviceId=<device_id>;SharedAccessKey=<device_key>"                */
/*  "HostName=<host_name>;DeviceId=<device_id>;SharedAccessSignature=<device_sas_token>"    */
static const char* connectionString = IOT_CONFIG_CONNECTION_STRING;

static char msgText[1024];
static char propText[1024];
static bool g_continueRunning;
#define DOWORK_LOOP_NUM     100

static void deviceTwinCallback(DEVICE_TWIN_UPDATE_STATE update_state, const unsigned char* payLoad, size_t size, void* userContextCallback)
{
    (void)userContextCallback;
        printf("Device Twin update received (state=%s, size=%u): \r\n", 
    ENUM_TO_STRING(DEVICE_TWIN_UPDATE_STATE, update_state), size);
    for (size_t n = 0; n < size; n++)
    {
//        printf("%c", payLoad[n]);
    }
    printf("\r\n");
}

static void reportedStateCallback(int status_code, void* userContextCallback)
{
    (void)userContextCallback;
    printf("Device Twin reported properties update completed with result: %d\r\n", status_code);

    g_continueRunning = false;
}


void iothub_client_sample_device_twin_run(void)
{
    // Result checks are omitted to simplify the sample.
    // Please verify all returns on your production code.    
    IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle;
    g_continueRunning = true;

    IOTHUB_CLIENT_TRANSPORT_PROVIDER protocol = MQTT_Protocol;

    if (platform_init() != 0)
    {
        (void)printf("Failed to initialize the platform.\r\n");
    }
    else
    {
        if ((iotHubClientHandle = IoTHubClient_LL_CreateFromConnectionString(connectionString, protocol)) == NULL)
        {
            (void)printf("ERROR: iotHubClientHandle is NULL!\r\n");
        }
        else
        {
            bool traceOn = false;
            // This json-format reportedState is created as a string for simplicity. In a real application
            // this would likely be done with parson (which the Azure IoT SDK uses) or a similar tool.
            const char* reportedState = "{ 'device_property': 'new_value'}";
            size_t reportedStateSize = strlen(reportedState);

            (void)IoTHubClient_LL_SetOption(iotHubClientHandle, OPTION_LOG_TRACE, &traceOn);
            (void)IoTHubClient_LL_SetDeviceTwinCallback(iotHubClientHandle, deviceTwinCallback, iotHubClientHandle);
            (void)IoTHubClient_LL_SendReportedState(iotHubClientHandle, (const unsigned char*)reportedState, reportedStateSize, reportedStateCallback, iotHubClientHandle);

            do
            {
                IoTHubClient_LL_DoWork(iotHubClientHandle);
                ThreadAPI_Sleep(100);
            } while (g_continueRunning);

            for (size_t index = 0; index < DOWORK_LOOP_NUM; index++)
            {
                IoTHubClient_LL_DoWork(iotHubClientHandle);
                ThreadAPI_Sleep(100);
            }
//            LogInfo("IoTHubClient_LL_Destroy starting");

            IoTHubClient_LL_Destroy(iotHubClientHandle);
//            LogInfo("IoTHubClient_LL_Destroy okay");
        }
        platform_deinit();
    }
}

void sample_run(void)
{
    iothub_client_sample_device_twin_run();
}

日志

Attempting to connect to SSID: ******
scandone
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 5
cnt 

connected with *******, channel 5
dhcp client start...
.ip:1.1.1.1,mask:1.1.1.1,gw:1.1.1.1
.
Connected to wifi
Fetching NTP epoch time failed! Waiting 2 seconds to retry.
Fetched NTP epoch time is: 1533994630
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Device Twin update received (state=DEVICE_TWIN_UPDATE_COMPLETE, size=341): 

Device Twin reported properties update completed with result: 204
Fatal exception 3(LoadStoreErrorCause):
epc1=0x4000bf64, epc2=0x00000000, epc3=0x00000000, excvaddr=0x402561f3, depc=0x00000000

Exception (3):
epc1=0x4000bf64 epc2=0x00000000 epc3=0x00000000 excvaddr=0x402561f3 depc=0x00000000

ctx: cont 
sp: 3fff1c20 end: 3fff2000 offset: 01a0

>>>stack>>>
3fff1dc0:  3fff0f8c 000002ae 000002ae 4010020c  
3fff1dd0:  401050ef 00000053 3fff3a94 40100690  
3fff1de0:  00000000 00000000 00000090 4020fda4  
3fff1df0:  3fff0d3c 00000053 3fff3dec 4020ed8b  
3fff1e00:  3fff8324 3fff5f34 3fff3a94 402100fc  
3fff1e10:  00000053 00000000 3fff0d54 4020f5cc  
3fff1e20:  3fff3dec 3fff3a94 000008ca 3fff2f14  
3fff1e30:  3fff0d3c 00000053 00000000 4020f70d  
3fff1e40:  00000000 00000000 00000d06 40206bd9  
3fff1e50:  3fff1e70 40206532 00000171 3fff5f34  
3fff1e60:  4020a800 000067d8 00000cfb 3fff2f14  
3fff1e70:  402561f3 3fff3a90 ffff8000 000000ae  
3fff1e80:  3fff61a8 00000686 3fff7b6c 40206523  
3fff1e90:  00000000 008f4000 3fff7b6c 00000053  
3fff1ea0:  3fff5f34 3fff2f14 3fff2f14 4020db89  
3fff1eb0:  3fff5f34 3fff2f14 3fff2f14 4020aa15  
3fff1ec0:  3fff6b4c 0000002e 00000000 40206f52  
3fff1ed0:  0000002f 3fff1ee0 00000004 3fff7b6c  
3fff1ee0:  00000000 3fff2f14 00000053 4020b5bd  
3fff1ef0:  00000021 00000000 3fff7b0c 4020c60e  
3fff1f00:  00000004 00000000 00000000 00000000  
3fff1f10:  00000000 3fff3bcc 3fff8fd4 3fff3d54  
3fff1f20:  3fff7b44 3fff74cc 3fff8fd4 40205265  
3fff1f30:  3fff8ff0 3fff3b54 00000004 401004d8  
3fff1f40:  3fff6fe4 008f4000 3fff336c 3fff6fec  
3fff1f50:  3fff6198 3fff6184 3fff6fe4 40205f74  
3fff1f60:  3fff0d38 00000000 3fff6fe4 4020179c  
3fff1f70:  3fff6184 3fff0fd8 4020fe6c 3fff0fe0  
3fff1f80:  3fff6fec 00000064 00000064 4020cbb3  
3fff1f90:  3ffea1e3 00000000 3fff6fe4 3fff0fd8  
3fff1fa0:  3fff0d38 00000000 3fff6fe4 40201100  
3fff1fb0:  3ffea100 5b6ee686 3fff0fac 4020de68  
3fff1fc0:  3fffdad0 00000000 3fff0fd0 40201140  
3fff1fd0:  00000000 00000000 00000001 4020dc64  
3fff1fe0:  3fffdad0 00000000 3fff0fd0 4020feb8  
3fff1ff0:  feefeffe feefeffe 3fff0fe0 40100710  
<<<stack<<<

0 个答案:

没有答案