M5Stack Core2 mit homee nutzen

Vielen Dank @danil werde das mal testen ne dir ne Info geben.

:+1::hugs:

Ich hab es heut morgen noch zu Ende gespielt, klappt :smiley:

Connecting to WiFi..
Connected to the WiFi network
Basic dGVzdDo5YmMwY2RhMDYzMzkxYTZkODMwNGEyNTBkNTllZjAwOGYzMDE3OTdlMjM1OWU3MjQ2NGQ1ZjFjOWViMmQxMmQ1ZDQ3ZTAxZjU2YTUzMTdkNWIwZTFmNzI4NGQ1ZDMxMDFmMjgyNzkxMzYzMjM1Y2RkY2QyNjI3OTllMmExOWZlNw==
200
access_token=mykJNlVWED31NYkG3xKhw9xc924ABtFwQBADnmDQoo8r20lXyh3rjLaYUQWRvGMt&user_id=8&device_id=29&expires=31536000

Hier der komplette Code:

#include <Crypto.h>
#include <SHA512.h>
#include <base64.h>

#include <WiFi.h>
#include <HTTPClient.h>

#define HASH_SIZE 64

SHA512 sha512;

const char* ssid = "Majestix";
const char* password =  "3785490774594775";

void array_to_string(uint8_t array[], unsigned int len, char buffer[])
{
    for (unsigned int i = 0; i < len; i++)
    {
        byte nib1 = (array[i] >> 4) & 0x0F;
        byte nib2 = (array[i] >> 0) & 0x0F;
        buffer[i*2+0] = nib1  < 0xA ? '0' + nib1  : 'a' + nib1  - 0xA;
        buffer[i*2+1] = nib2  < 0xA ? '0' + nib2  : 'a' + nib2  - 0xA;
    }
    buffer[len*2] = '\0';
}

void hashPassword(char* password, size_t size, char* hash) {
  uint8_t value[HASH_SIZE];
  sha512.reset();
  sha512.update(password, size);
  sha512.finalize(value, sizeof(value));
  array_to_string(value, HASH_SIZE , hash);
}

void connectWifi() {
  WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) { //Check for the connection
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
 
  Serial.println("Connected to the WiFi network");
}

void setup() {
  Serial.begin(115200);
  Serial.println("Setup");

  connectWifi();

  char username[] = "test";
  char password[] = "abcde1234";
  char hash[HASH_SIZE*2 + 1];

  hashPassword(password, strlen(password), hash);

  char authBuffer[strlen(username) + strlen(hash) + 1 ] = {'\0'};
  sprintf(authBuffer, "%s:%s", username, hash);

  String authString = "Basic " + base64::encode(authBuffer);
  Serial.println(authString);

  HTTPClient http;
  http.begin("http://192.168.199.40:7681/access_token");
  
  http.addHeader("Authorization", authString);
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");
  int httpResponseCode = http.POST("device_name=esp32_1&device_hardware_id=esp32_1&device_os=5&device_type=4&device_app=1}");
  if(httpResponseCode>0){
    
      String response = http.getString(); 
    
      Serial.println(httpResponseCode);  
      Serial.println(response);           
    
  }else{
    
      Serial.print("Error on sending POST: ");
      Serial.println(httpResponseCode);
    
  }
}

void loop() {
  // put your main code here, to run repeatedly:


  sleep(5);
}

Edit: Code kompiliert nun auch in der Arduino IDE

3 „Gefällt mir“

Du bist ja gut dann werde ich das mal umbauen im M5Stack.
Danke dir fur die Arbeit.

Ja vor allem dir vielen Dank für deinen Einsatz :+1:
Ich bin ja froh wenn ich auch mal was beisteuern kann :slight_smile:

1 „Gefällt mir“

Jetzt geht es! Danke @danil.

1 „Gefällt mir“

Hallo @SteffenTM, wie kann ich meinen M5Stack Core2 dazu bringen, die gespeicherte Verbindung kplt. zu vergessen und erneut das eigene WLAN aufzuspannen?

Der einfachste weg ist die Spannungsversorgung deines Routers zu kappen :wink:

Ansonsten die IP des M5stack aufrufen und eine falsche ssid oder Passwort speichern.

Das heißt: Wenn sich der Stack nicht mit einen WLAN verbinden kann, startet er den AP automatisch.

Grüße

Moinsen @SmartHomer, wie @chrisLE schon geantwortet hatte. Einfach ungültige Zugangsdaten eintragen und Stack neu starten. Dann versucht sich der Stack ins WLAN einzuwählen. Wenn dies fehl schlägt, dann macht er einfach sein eigenes auf und du kannst über die IP vom Stack dich wieder verbinden.

Hallo @SteffenTM Hallo @chrisLE,

Danke für Eure Antworten. So hätte ich mir das auch vorgestellt.
Leider ist es so, dass sowohl mein M5Stack Core2 wie auch mein M5paper nach der Kompilierung und Übertragung in einer Endlos Reboot-Schleife hängenbleiben.
@Micha (Danke nochmals) hatte freundlicherweise auch schon mal per TeamViewer draufgeschaut, konnte auf die Schnelle aber auch keine Ursache erkennen.
Ich habe dann Arduino kplt. gelöscht, neu installiert, die Bibliotheken neu eingebunden und die Sketches neu runtergezogen - leider alles ohne Erfolg :thinking:.

Sobald ich einen Sketch übertrage, der auf die neue Funktion des WebUI zugreift (M5homeeWebUi0.7 und aufwärts), endet dies in einem Endlos-Reboot :roll_eyes: und das Display bleibt dunkel.
Wenn ich einen anderen Sketch übertrage (zB WebUiButton), dann läuft alles super prima.
Ich hatte zunächst gedacht, dass es mit einem Update der FB 7590 (neue User-Authentifizierung ab 7.25) zusammenhängt, aber auch an einem anderen Router in anderer Netzwerk-Umgebung ist es leider das selbe. Strange ist eben, dass der M5Stack Core 2 einige Zeit ganz wunderbar mit M5homeeWebUi0.7.2 funktioniert hat, erst nach erneutem Kompilieren und Übertragen hängt auch der in der Reboot-Schleife.
Dazwischen waren wie schon geschrieben Updates der Lib’s und Update der FB.

Das sieht für mich so aus, dass du ein Problem mit dem NVM bzw. EEPROM hast. Beim erneuten übertragen wird diese ja nicht gelöscht. Dafür gibt es extra Tools, ich schaue da heute Abend Mal nach. Muss noch bisschen schaffen.

1 „Gefällt mir“

Das wäre super - Danke Dir im Voraus und frohes Schaffen

Habe mal geschaut, es gibt ein esptool mit erase_flash. Findest du unter https://github.com/espressif/esptool
Musst allerdings ein System haben, wo Python läuft. Ich würde da einen Raspi nehmen, vielleicht hast du einen zur Hand?!

1 „Gefällt mir“

Ich danke Dir für Deine Mühen - leider Nein (kein Python) - wäre ja auch zu schön gewesen :roll_eyes:

Ich schau mal, ob ich dir ein fixen Sketch zum Löschen der relevanten Bereiche zusammenschreibe.

1 „Gefällt mir“

:face_with_hand_over_mouth:
Das wäre der Hammer, Danke
:+1: :relaxed:

Ohne mich hier dazwischen drängeln zu wollen. Will @SteffenTM nur die Mühe ersparen…

Versuche es mal mit dem M5Burner. Der hat auch einen Erase-Button. Dort wählst du die Schnittstelle aus und kannst löschen.

1 „Gefällt mir“

Welche lib hast du denn geupdatet?

Oh je - wenn ich das noch wüsste. Als anständiger „Windows-Nutzer“ mache ich halt auch immer die Updates, wenn Arduino welche vorschlägt. Das ist wohl nicht empfehlenswert?

Danke Dir,

der M5Burner war leider nicht der Burner zu meinem Problem

grafik

Danach trotzdem Endlos-Schleife im seriellen Monitor:

Evtl ist dies hier interessant. Dann müsste man vor dem ersten lesen von Flash ein kleines Delay einfügen… ein Versuch währe es wert.