FHEM Forum

Verschiedenes => Bastelecke => ESP Familie => Thema gestartet von: tndx am 25 März 2017, 23:14:37

Titel: ESP8266: Befehl an FHEM absetzen
Beitrag von: tndx am 25 März 2017, 23:14:37
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?
Titel: Antw:ESP8266: Befehl an FHEM absetzen
Beitrag von: digiart am 26 März 2017, 09:40:59
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.
Titel: Antw:ESP8266: Befehl an FHEM absetzen
Beitrag von: tndx am 26 März 2017, 11:10:52
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.
Titel: Antw:ESP8266: Befehl an FHEM absetzen
Beitrag von: dev0 am 26 März 2017, 12:32:09
Schau Dir doch zB. mit Wireshark den Verbindungsaufbau an.
Titel: Antw:ESP8266: Befehl an FHEM absetzen
Beitrag von: tndx am 26 März 2017, 20:40:09
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?
Titel: Antw:ESP8266: Befehl an FHEM absetzen
Beitrag von: dev0 am 26 März 2017, 22:36:17
Ein Möglichkeit wäre einen Access Point auf einem Linuxsystem aufzusetzen, dort kannst Du mitschneiden und auch ssl traffic entschlüsseln (burp, mitmproxy, ...).
Titel: Antw:ESP8266: Befehl an FHEM absetzen
Beitrag von: Bapt. Reverend Magersuppe am 26 März 2017, 22:43:30
Wieso benutzt Du nicht ein fertiges Paket wie ESPeasy oder Sonoff-Tasmota?
Titel: Antw:ESP8266: Befehl an FHEM absetzen
Beitrag von: tndx am 27 März 2017, 11:47:55
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...
Titel: Antw:ESP8266: Befehl an FHEM absetzen
Beitrag von: tndx am 31 März 2017, 23:46:31
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.