PpmpUnide Error in WlanConnect_WPA
Antwort
16.11.18 15:46

Funktioniert das XDK-Beispiel PpmpUnide aus der Workbench?
Ich habe die Workbench 3.4.0 installiert, im Projekt PpmpUnide in AppController.h 
#define WLAN_SSID                           "WIFI-Name ABC"
#define WLAN_PSK                            "Passwort123"
#define WLAN_STATIC_IP                      false
gesetzt, geflasht und bekomme folgenden Fehler ausgegeben:


 INFO | XDK DEVICE 2: WLANPersonalWPA2Connect : Connecting to YourWifiNetwork 
 INFO | XDK DEVICE 2:  WLANPersonalWPA2Connect : Error in WlanConnect_WPA 
 INFO | XDK DEVICE 2: AppControllerEnable : Failed 
 INFO | XDK DEVICE 2: Error in WLAN package.
 INFO | XDK DEVICE 2:     Package ID: 10    Module ID: 2    Severity code: 2    Error code: 67
 INFO | XDK DEVICE 2: asserted at Filename C:/Users/ABC/XDK-Workspace/PpmpUnide/source/AppController.c , line no  590 

Der Verbindungsaufbau sollte funktionieren, wenn die WLAN_SSID und WLAN_PSK stimmen? Was ist hier wohl das Problem?

0 (0 Stimmen)
RE: PpmpUnide Error in WlanConnect_WPA
Antwort
19.11.18 14:19 als Antwort auf Stefan Maier.
Hallo Stefan,

ja der Verbindungsaufbau sollte funktionieren, sobald die SSID und PSK stimmen.
Der Fehler liegt vermutlich darin, dass die Zugangsdaten an der falschen Stelle eingegeben, beziehungsweise definiert wurden.
Alle Workbench-Beispiele haben meist in den Headerfiles bereits ein existierendes define für die WLAN_SSID und auch das WLAN_PSK.
Aus diesen Files werden dann auch die notwendigen Informationen bezogen.
Ich bitte Sie daher, die Zugangsdaten innerhalb der PPMPExampleConfig zu ändern, sowie dir eigenen defines wieder zu löschen. Dies sollte das Problem beheben.

Falls sich weitere Probleme ergeben, zögern Sie bitte nicht sich zu melden.

Freundliche Grüße,
Franjo

Dear Community,

Stefan's question was about the PpmpUnide example of the Workbench Version 3.4.0.
He has an issue with the WLAN package and asked, if the connection is working, if the WLAN_SSID and WLAN_PSK has been added correctly.
I suggested him to use the predefined header files for adding the necessary credentials regarding the Wi-Fi connection.

Kind regards,
Franjo
0 (0 Stimmen)
RE: PpmpUnide Error in WlanConnect_WPA
Antwort
19.11.18 16:33 als Antwort auf Franjo Stjepandic.

Dankeschön. Das Problem ist gelöst. Im Passwort ist ein Sonderzeichen, vor das ich einen Backslash setzen musste, damit es funktioniert. 

#define WLAN_PSK                            "PasswortMit\Sonderzeichen"

Eine weitere Frage: Wie könnte der XDK mit Bosch Insights über PpmpUnide verbunden werden? Ich habe das Python-Skript aus dem Bosch Insights User Guide heruntergeladen und angepasst, damit funktioniert es, nur wie ich das auf den XDK übertragen kann, ist mir stark unklar. Im Detail, wie können die Credentials gesetzt werden und die Authentifizierung durchgeführt werden?

SFDE_USERNAME = "zz000..."

SFDE_PASSWORD = "..."

 sfde_b_auth = basics_auth(SFDE_USERNAME, SFDE_PASSWORD)
    r.add_header('Authorization', sfde_b_auth)
    r.add_header('Content-Type', 'application/json')
    r.add_header('Accept', 'application/json')

Url = "https://bosch-iot-insights.com/data-recorder-service/v2/"

0 (0 Stimmen)
RE: PpmpUnide Error in WlanConnect_WPA
Antwort
20.11.18 16:35 als Antwort auf Stefan Maier.
Hallo Stefan,

es freut mich, dass Du das Wi-Fi-Problem lösen konntest.
Das PpmpUnide Beispiel aus der XDK-Workbench, ist leider nicht dafür gedacht, sich mit dem HTTP Data Recorder Service seitens Bosch IoT Insights zu verbinden.

Der Data Recorder Service seitens Bosch IoT erfordert zum Entgegennehmen geposteter Daten eine HTTPS-Verbindung, was etwas Eigenarbeit mit dem Sourcecode erfordert. Als Basis empfehle ich Dir eine Abwandlung des klassischen HTTP-POST-Requests, welcher als FullCodeExample auf der XDK-Knowledgebase   unter dem Menüpunkt Protocols und HTTP nach einer freien Benutzerregistrierung zur Verfügung steht.

Bei Verwendung des HTTP POST-Request-Beispiels wird die Authentifizierungsmethode identisch sein.

Zur Erstellung des HTTP-Headers, rate ich Dir, die Zeile
static const char* header1 = "TheHeader\r\n"
aus dem neuen AppController.c Files zu ändern.

Die Authentifizierung mittels Header bildet sich aus einer Base64-Verschlüsselung, bestehend aus Username und Password, welche mit einem Doppelpunkt voneinander getrennt werden.
Gibst Du also bei dem Base64-Encoder DeinUsername\:DeinPassword ein, ist Dein Header schon fast fertig.

Als Beispiel:
static const char* header1 = "Authorization: Basic DIE_BASE64_VERSCHLÜSSELUNG\r\n"
Wichtig ist auch, dass Du den Content-Type im Header mitsendest. Dies kann verwirklicht werden, indem innerhalb der For-Schleife der Funktion void createAndSendPostMessage(void) der Code um die Zeile HttpMsg_setContentType(msg_ptr,Http_ContentType_App_Json); ergänzt wird. Diese Zeile sollte an einer Position eingebunden werden, bevor der Request gesendet wird.

Anschließend ist noch die DataRecorderURL einzubinden, welche wie folgt zu ändern ist:

HttpMsg_setReqUrl(msg_ptr, "/data-recorder-service/v2/DEINE_ID");
Auch diese Zeile sollte wie folgt angepasst werden:

Ip_convertOctetsToAddr(139, 15, 6, 103, &destAddr);
Um Aus dem HTTP ein HTTPS zu ermöglichen, muss wie in dem HTTPS-Artikel der XDK-Knowledgebase gezeigt, das Sicherheitszertifikat SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 eingebunden werden.
Auch das Einbinden eines Timestamps ist unabdingbar. Auch dabei hilft der bereits erwähnte HTTPS-Artikel.

Falls Du auf die Lösung mit IoT Insights verzichten möchtest, kannst Du bei dem bereits erforschten PpmpUnide Beispiel bleiben, benötigst allerdings einen aufgesetzten PPMP-Server.

Mit freundlichen Grüßen,
Franjo
 
Hello community,
Stefan asked for a solution to connect the PpmpUnide example with IoT Insights.
Since a HTTPS connection is required, I told him to adapt the HTTP example from the XDK-Knowledgebase for a POST request and to use the HTTPS article for including the security CA and the timestamp in order to connect via HTTPS. I also mentioned, that he could use the PpmpUnide example, but would require a PPMP server to connect to.
0 (0 Stimmen)