Hallo zusammen,
ich versuche mit einem ESP8266 einen Befehl an FHEM abzusetzen.
Meine Config: SSL aktiviert, Basic Authentification aktiviert.
Mein Code sieht folgendermaßen aus (nur die Stelle an der es klemmt, WLAN-Verbindungsaufbau und den Rest spare ich aus):
#include <ESP8266WiFi.h>
WiFiClientSecure client;
void setup() {
const char* host = "192.168.1.1";
int port = 8083;
int failcounter = 300;
Serial.print("Waiting for a connection to host");
while (!client.connect(host, port)) {
delay(100);
Serial.print(".");
if (failcounter <= 0) {
Serial.println();
Serial.println("Giving up.");
shutdown();
}
failcounter--;
}
}
Der WLAN-Verbindungsaufbau funktioniert, zumindest sehe ich das Ding im Router und kann es auch anpingen. Es scheint auch Verbindungen zu FHEM aufbauen zu können, jedenfall wir das Logfile zugemüllt mit Einträgen wie:
2017.03.25 23:07:46 4: Connection accepted from WEB_192.168.1.17_27659
2017.03.25 23:07:46 4: Connection closed for WEB_192.168.1.17_27659: EOF
aber es kommt trotzdem keine Verbindung zustande, irgendwannmal gibt es irgendeinen Speicherüberlauf und das Ding wird mit "Soft WDT reset" resettet. Irgendeine Idee, warum "client.connect" keine funktionierende Verbindung zurückmeldet?
Vielleicht hilft dir hier etwas weiter:
https://www.arduino.cc/en/Reference/WiFi101SSLClient
https://www.arduino.cc/en/Reference/WiFi101ClientConnectSSL
Ausserdem vermisse ich irgendwie die Authentifizierung bei der Verbindungsaufnahme.
Danke, hilft aber nicht weiter. Ich habe mir gestern viele Beispiele angeguckt und so wie es jetzt bei mir ist, müsste es grundsätzlich funktionieren, es scheint aber das entscheidende Detail im Code oder in der FHEM-Konfiguration zu fehlen.
Die Authentifizierung kommt im Übrigen erst später, wenn ich ein GET absetze, aber dafür muss eben erst die Verbindung stehen.
Schau Dir doch zB. mit Wireshark den Verbindungsaufbau an.
Zitat von: dev0 am 26 März 2017, 12:32:09
Schau Dir doch zB. mit Wireshark den Verbindungsaufbau an.
Das sagst Du so einfach :) Mal davon abgesehen, dass ich mich mit dem Tool und den Netzwerkprotokollen nicht auskenne, wo muss ich Wireshark ausführen, damit ich mich in den Netzwerkverkehr einklinken kann (beide Beteiligte sind per WLAN angebunden)? Und erfolgt die Kommunikation bei aktiviertem SSL nicht verschlüsselt?
Ein Möglichkeit wäre einen Access Point auf einem Linuxsystem aufzusetzen, dort kannst Du mitschneiden und auch ssl traffic entschlüsseln (burp, mitmproxy, ...).
Wieso benutzt Du nicht ein fertiges Paket wie ESPeasy oder Sonoff-Tasmota?
Zitat von: Bapt. Reverend Magersuppe am 26 März 2017, 22:43:30
Wieso benutzt Du nicht ein fertiges Paket wie ESPeasy oder Sonoff-Tasmota?
Das ist was Fertiges (c't IoT Button), läuft bei mir nur nicht...
ESPeasy werde ich mir auch noch anschauen, befürchte nur, dass es auch da nicht klappt, wenn irgendwas Grundlegendes fehlt...
Ich habe das Problem nun gelöst, dabei stand es gleich in dem c't-Artikel dabei:
die benutzte Bibliothek kann nur TLS Version 1.1, das wird von FHEM wohl seit Kurzem nicht mehr standardmäßig unterstützt. Setze ich das Attribut "sslVersion" auf die laut CommandRef davor genutzte Voreinstellung "SSLv23:!SSLv3:!SSLv2" funktioniert es. Kann mir vielleicht jemand sagen, hinter welchem der 3 Werte sich TLS 1.1 verbirgt? Direktes Setzen des Attributs auf "TLSv11" funktioniert nämlich nicht.