2016-12-19 5 views
1

I in einer Himbeere pi 3, raspbian O arbeite, und ich bin mit dem azur IOT-sdk-cIot Hub-Verbindungszeichenfolge funktioniert nicht in azur-IOT-sdk-c Proben

Ich folgte den Github hier Anweisungen: https://github.com/Azure/azure-iot-sdk-c, ich heruntergeladen und richtig, alle Proben in der iothub_client gebaut/samples Ordner

der Fehler ist, wenn ich die Verbindungszeichenfolge in der iothub_client_sample_http.c

hier setzen:

static const char* connectionString = "[device connection string]"; 

und führen Sie es, erhalte ich viele Fehler wie folgt aus:

Error: Time:Mon Dec 19 14:23:36 2016 File:/home/pi/Desktop/azure-iot-sdk-c/c-utility/adapters/httpapi_curl.c Func:HTTPAPI_ExecuteRequest Line:576 Failure in HTTP communication: server reply code is 401 Info: HTTP Response:{"Message":"ErrorCode:IotHubUnauthorizedAccess;Unauthorized","ExceptionMessage":"Tracking ID:13262df6828d469e9b29e2176a86fad3-G:9-TimeStamp:12/19/2016 22:23:37"} Error: Time:Mon Dec 19 14:23:36 2016 File:/home/pi/Desktop/azure-iot-sdk-c/iothub_client/src/iothubtransporthttp.c Func:DoEvent Line:1626 unexpected HTTP status code (401)

Das ist mein conection Struktur:

static const char* connectionString = "HostName=<myiothub>;DeviceId=<mydevice>;SharedAccessKey=<myaccesskey>"; 

Warum ist es mir geben einen 401, wenn ich direkt die Saiten mit bin bereitgestellt von das azurblaue Portal?

Ich habe jede Verbindungszeichenfolge (hubowner, Service & Gerät) versucht und gibt mir noch 401: C

+0

Ist es möglich, die Zeitzone und/oder Zeit falsch eingestellt ist auf Raspberry Pi? Dies würde Probleme mit dem Ablaufdatum verursachen, das im SAS festgelegt wurde. Ich frage das, weil Ihr SDK den Fehler um 14:23:36 meldet, aber der IoT-Hub-Zeitstempel ist 22:23:37 (UTC). – peterdn

+0

Ich habe sichergestellt, dass die Zeit in der Himbeere stimmt, spielt die Zeitzone eine Rolle? – Valeria

+0

Ja, ich glaube schon. Dieser Link erklärt, wie man die Zeitzone in raspbian einstellt: http://rohankapoor.com/2012/04/americanising-the-raspberry-pi/ – peterdn

Antwort

1

I erzeugt und verwendet, um eine SAS Schlüssel als Verbindungszeichenfolge und alles hat gut funktioniert.

static const char* connectionString ="HostName=<myiothub>;CredentialType=SharedAccessSignature;DeviceId=<mydevice>;SharedAccessSignature=SharedAccessSignature sr=<iothub>&sig=<saskey>&se=<time>&skn=device" 

erzeugen ich die SAS von einer vorkompilierte Version von Device explorer

Das funktionierte, weil, wie in Control access to IoT Hub erklärt:

The only way that IoT Hub authenticates a specific device is using the device identity symmetric key. In cases when a shared access policy is used to access device functionality, the solution must consider the component issuing the security token as a trusted subcomponent.