Vhih mit ESP32

Das scheint wohl ein esp8266 Problem zu sein.
Gibt mehrer Meldungen dazu bei github.
Schau mal danach ob es eine Lösung dort gibt.

Ich verstehe die Welt nicht mehr …

Es geht um den JSON-Kram
Ich habe mir eine Funktion geschrieben, der ich eine payload als String übergebe.
In dieser Payload ist ein ganzer Knoten inklusive der ganzen Attribute drin.
Wenn ich mir die payload ausgebe, sehe ich dort auch die 7 Attribute. Wenn ich jetzt allerdings die Attribute in ein eigenes JSON Dokument kopieren will, stehen dort nur noch 4 Attribute drin.

Warum?

Codeauszug:

    Serial.println("length = " + String(payload.length()));                               // Länge ist korrekt
    DynamicJsonDocument nodeDoc(payload.length());                                        // Dynamisches JSON Dokument erstellen mit der vorgegebenen länge

    Serial.println("payload = " + String(payload));                                       // Hier stehen 7 Attribute drin
    deserializeJson(nodeDoc, payload);  
    Serial.println("nodeDoc = " + String(nodeDoc.as<String>()));                          // Hier stehen nur noch 4 Attribute drin
    Serial.println("nodeDocAttributes = " + String(nodeDoc["attributes"].as<String>()));  // Hier stehen auch nur noch 4 Attribute drin

und hier ist das Ergebnis

length = 2250
payload = {"id":48,"name":"Steckdose%20Entertainment%20Wohnzimmer","profile":13,"image":"nodeicon_tv","favorite":0,"order":39,"protocol":1,"routing":0,"state":1,"state_changed":1657823553,"added":1583865649,"history":1,"cube_type":1,"note":"","services":7,"phonetic_name":"","owner":2,"security":0,"attributes":[{"id":179,"node_id":48,"instance":0,"minimum":0,"maximum":1,"current_value":1,"target_value":1,"last_value":1,"unit":"","step_value":1,"editable":1,"type":1,"state":1,"last_changed":1658131412,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"can_observe":[300],"automations":["toggle"],"history":{"day":35,"week":5,"month":1,"stepped":true}}},{"id":180,"node_id":48,"instance":0,"minimum":0,"maximum":0,"current_value":0,"target_value":0,"last_value":0,"unit":"text","step_value":1,"editable":0,"type":44,"state":1,"last_changed":1591979445,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"3.52","name":""},{"id":181,"node_id":48,"instance":0,"minimum":0,"maximum":0,"current_value":0,"target_value":0,"last_value":0,"unit":"text","step_value":1,"editable":0,"type":45,"state":1,"last_changed":1591979445,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"25.25","name":""},{"id":182,"node_id":48,"instance":0,"minimum":0,"maximum":50000,"current_value":732.24,"target_value":732.24,"last_value":732.23,"unit":"kWh","step_value":1,"editable":0,"type":4,"state":1,"last_changed":1658129421,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"history":{"day":1,"week":26,"month":6}}},{"id":183,"node_id":48,"instance":0,"minimum":0,"maximum":9,"current_value":9,"target_value":9,"last_value":9,"unit":"","step_value":1,"editable":1,"type":47,"state":1,"last_changed":1591979626,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":""},{"id":184,"node_id":48,"instance":0,"minimum":0,"maximum":8,"current_value":8,"target_value":8,"last_value":8,"unit":"","step_value":1,"editable":1,"type":48,"state":1,"last_changed":1591979626,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":""},{"id":185,"node_id":48,"instance":0,"minimum":0,"maximum":3000,"current_value":11.6,"target_value":11.6,"last_value":7.6,"unit":"W","step_value":1,"editable":0,"type":3,"state":1}]}

nodeDoc = {"id":48,"name":"Steckdose%20Entertainment%20Wohnzimmer","profile":13,"image":"nodeicon_tv","favorite":0,"order":39,"protocol":1,"routing":0,"state":1,"state_changed":1657823553,"added":1583865649,"history":1,"cube_type":1,"note":"","services":7,"phonetic_name":"","owner":2,"security":0,"attributes":[{"id":179,"node_id":48,"instance":0,"minimum":0,"maximum":1,"current_value":1,"target_value":1,"last_value":1,"unit":"","step_value":1,"editable":1,"type":1,"state":1,"last_changed":1658131412,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"can_observe":[300],"automations":["toggle"],"history":{"day":35,"week":5,"month":1,"stepped":true}}},{"id":180,"node_id":48,"instance":0,"minimum":0,"maximum":0,"current_value":0,"target_value":0,"last_value":0,"unit":"text","step_value":1,"editable":0,"type":44,"state":1,"last_changed":1591979445,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"3.52","name":""},{"id":181,"node_id":48,"instance":0,"minimum":0,"maximum":0,"current_value":0,"target_value":0,"last_value":0,"unit":"text","step_value":1,"editable":0,"type":45,"state":1,"last_changed":1591979445,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"25.25","name":""},{"id":182,"node_id":48,"instance":0,"minimum":0,"maximum":50000,"current_value":732.24,"target_value":732.24,"last_value":732.23,"unit":"kWh","step_value":1,"editable":0,"type":4,"state":1,"last_changed":1658129421,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"history":{"day":1,"week":26}}}]}

nodeDocAttributes = [{"id":179,"node_id":48,"instance":0,"minimum":0,"maximum":1,"current_value":1,"target_value":1,"last_value":1,"unit":"","step_value":1,"editable":1,"type":1,"state":1,"last_changed":1658131412,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"can_observe":[300],"automations":["toggle"],"history":{"day":35,"week":5,"month":1,"stepped":true}}},{"id":180,"node_id":48,"instance":0,"minimum":0,"maximum":0,"current_value":0,"target_value":0,"last_value":0,"unit":"text","step_value":1,"editable":0,"type":44,"state":1,"last_changed":1591979445,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"3.52","name":""},{"id":181,"node_id":48,"instance":0,"minimum":0,"maximum":0,"current_value":0,"target_value":0,"last_value":0,"unit":"text","step_value":1,"editable":0,"type":45,"state":1,"last_changed":1591979445,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"25.25","name":""},{"id":182,"node_id":48,"instance":0,"minimum":0,"maximum":50000,"current_value":732.24,"target_value":732.24,"last_value":732.23,"unit":"kWh","step_value":1,"editable":0,"type":4,"state":1,"last_changed":1658129421,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"history":{"day":1,"week":26}}}]

Was mache ich da noch falsch?
Die Länge habe ich geprüft. Die stimmt.

Die Länge von String entspricht nicht zwangsläufig der Größe von den JSON … kennst du den Rechner?

Da kannst du das mal prüfen.

Edit: 4096 empfiehlt der Assistent…

Supi, vielen Dank.
Die kleinen Sünden bestraft der Liebe Gott sofort.
Einmal einen Rückgabewert nicht ausgewertet (vom deserializeJson()) und schon läuft man in diese böse Fallen.

Hätte man ihn ausgewertet, hätte man gleich gesehen, das zu wenig Speicherplatz reserviert wurde.

Da ich jetzt aber natürlich nicht weiß, wie groß die vom homee gesendeten Strings sind, kann ich auch keine richtge Größe des JSCON-Dokuments festlegen. Ich habe das jetzt mal pauschal auf 3 * String.length() gemacht. Korrigieren tue ich das mit dann nachher mit shrinkToFit()

    DynamicJsonDocument nodeDoc(payload.length() * 3);                                    // Dynamisches JSON Dokument (String-Länge ungefähr multipliziert mit 3)
    DeserializationError error = deserializeJson(nodeDoc, payload);  

    if (error) 
    {
      Serial.println("deserializeJson() failed: " + String(error.f_str()));
      Serial.println("Increase multiplicator");
      return;
    }
       
    nodeDoc.shrinkToFit();                                                                // Reduziert den Speicherverbrauch auf das richtige Maß

bis jetzt funktioniert das so.

Vielen Dank

Hallo, liebe homee-Freunde,

ich habe gerade einen neuen smarten Wasserzähler bekommen und sofort angeschlossen.
Die Auflösung ist 1 Tick pro Liter.

Mein Zählerstand zeigt aber im homee nur die Qubikmeter an.

Screenshot 2022-09-20 163312

Ich hätte diese Anzeige gerne mit drei Nachkommastellen. Geht das irgendwie?

Konfigurieren tue ich das so:

myVirtualHomee->createNodeAttributes(newNode, MyVirtualHomee::CAAttributeTypeCurrentEnergyUse,     "Zählerstand (Volumen [V])",              0,   0, 10000,  "m³");

Du musst da ein Attribut suchen das drei stellen hinter dem Komma aufweist.

Oder als Kubikdezimeter anzeigen also x 1000 rechnen

Ja, so mach ich das jetzt auch. Ist aber keine so „schöne“ Lösung.
Ich habe eine Zeile mit dem Zählerstand m³ und eine mit ltr.

Screenshot 2022-09-21 102756

Hallo,

ich bekomme leider immer diesen Fehler!

d:\Arduino\libraries\homee-api-esp32-master\src/virtualHomee.hpp:44:24: error: 'AsyncWebSocketJsonBuffer' has not been declared
     void sendWSMessage(AsyncWebSocketJsonBuffer * jsonBuffer, AsyncWebSocketClient *client);

Ich kann damit leider nichts anfangen. Habe in der Adruino (2.0) Libraries folgende Ordner
image

Als Board habe ich das
image

Wäre sehr dankbar wenn ihr mir helfen könnt.

Zweiter Versuch:
Habe jetzt VSCode und Plattform IO genommen.
Mit dem Bespiel https://github.com/DanielKnoop/homee-co2-sensor funktionert das übertragen auf den ESP8266 ohne Probleme.
Ich bekomme im serialMonitor auch die IP Adresse angezeigt. Auch wird immer geschrieben …Keine Antwort vom Sensor erhalten… ist ja klar habe auch nichts angeschlossen.

Das Problem ist, dass ich mit homee keine Verbinung hergestellt bekomme.
In „homee in homee“ versuche ich über die IP und irgendein Benutzername und Passwort mich zu verbinden abr es klappt nicht. Er findt kein homee.

Das Ganze läuft nur auf einem ESP32, der 8266 ist zu schwach auf der Brust.

Nein es geht auch mit dem esp8266.
Welche Lib hast du installiert?
Du musst die von @danil nehmen.
VG

Wie sieht denn der Code dazu aus den du aufspielen willst.
Scheint ein Declarationsfehler zu sein und dazu muss man den Code sehen.

1 „Gefällt mir“

Ich habe auch einen ESP32 Development Board (Wroom 32)versucht. Klappt aber auch nicht.
In dem BeispielSketch (homee-CO2-sensor-master) ist ein wemos_d1_mini32 mini drin. Kann es daran liegen?

Was meinst du mit Lib?
Das hier ?

plerup/EspSoftwareSerial@^6.12.3

[env:wemos_d1_mini32]
platform = espressif32
board = wemos_d1_mini32
framework = arduino
monitor_speed = 115200
lib_deps = 
	https://github.com/DanielKnoop/homee-api-esp32.git#0.2.1
	plerup/EspSoftwareSerial@^6.12.3
build_flags = ${wlancredentials.build_flags_wlan}

Ich habe das Beispiel 1:1 von @danil genommen. Ausser die WlanDaten habe ich nichts geändert.

Ich bekomme auch eine Verbindung nach dem Upload hin. Der ESP ist im Wlan

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13132
load:0x40080400,len:3036
entry 0x400805e4
.
WiFi connected.
IP address:
192.168.5.129
Keine Antwort vom Sensor erhalten
Keine Antwort vom Sensor erhalten
Keine Antwort vom Sensor erhalten

Na dann sollte doch alles funktionieren.
Es ist schwierig anhand diese Bilder und Daten was zu sagen.
Du bekommst also lediglich die Verbindung zum homee nicht hergestellt ?

Kannst du einmal in der platformio.ini die Version auf #0.2.7 hoch setzen bitte?

Hallo @danil erstmal danke für deine Hilfe. Ich denke ich habe ein generels Problem mit dem homee. Ich kann auch unter iobroker und nodered keinen neunen homee anlernen.
Es lässt sich im homee aeinfach kein neuer virtueler homee einbinden.
Wenn Nod-Red schon nicht klappt dann denke ich das was mit dem homee nicht stimmt.
Hättest du eine Lösungsansatz für mich? Ohne den homee neu aufzusetzen?

Ich würde einen Neustart als erstes probieren. Wenn das nichts hilft komplett runterfahren und kurz warten und neu starten.
Hast du denn schon vhih integriert ?
Wenn ja , dann schau mal in der Liste welche das sind.
VG