Jump to content

rtrbt

Administrators
  • Gesamte Inhalte

    1.400
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    127

Posts erstellt von rtrbt

  1. On 6/18/2023 at 9:54 AM, gustavpaula said:

    Jetzt hab ich noch eine Frage: Wäre es nicht sinnvoll, dass das Laden auf Stop geht, wenn das Auto mal sagt "ich bin voll!" und dann manuell wieder gestartet werden muss?

    Schonmal unabhängig vom Rest: Nein, das würde dazu führen, dass wenn sich ein Auto leer steht, nicht nachgeladen wird. Außerdem gibt es Autos (die Teslas z.B. wenn ich mich richtig erinnere), die im Winter ihre Heizung aus Wallbox-Strom betreiben können.

    Wir hatten dieses Verhalten mit dem Lastmanagement mal ausversehen implementiert und dann aber geändert. Siehe hier:

     

  2. Zu der manuellen Ladefreigabe: Das hieß in älteren Firmware-Versionen Auto-Start. Wir haben das geändert und auf die Unterseite gepackt, weil es die meisten Nutzer eher verwirrt hatte.

    Jetzt ist aber die ganze Benennung noch verwirrender. Das müssen wir besser machen.

    Dazu noch grundlegend: Die manuelle Ladefreigabe (ex Auto-Start) als Ladestromgrenze ist wie folgt belegt:

    • Der Taster an der Wallbox blockiert (bei WARP1 immer, bei WARP2 konfigurierbar)
    • Wenn du auf der Statusseite auf Stop klickst, blockiert die Ladestromgrenze, wenn du auf Start klickst, gibt sie frei
    • Wenn du die manuelle Ladefreigabe auf der Ladeeinstellungsseite aktiviert hast, dann wird blockiert, wenn ein Auto abgezogen wird (d.h. du musst den ersten Start manuell freigeben)
    On 6/18/2023 at 10:32 AM, gustavpaula said:

    Man hätte aber irgendwie erwartet, dass wenn ich ein Limit für den nächsten Ladevorgang setze auf der Statusseite, dieses Limti wieder gelöscht wird, wenn ich den Ladevorgang manuell gestoppt habe. Anstatt dessen wird die verbleibende Zeit einfach weiter runter gezählt, selbst wenn der Ladevorgang gestoppt worden ist. Die Logik versteh ich nicht.

    Das ist auch ein Fall von schlechter Benennung: Der Knopf heißt "Stop", er blockiert aber nur die "manuelle Ladefreigabe"-Stromgrenze. Ein Ladevorgang beginnt (im Bezug auf die Zeit/Energielimits und den Ladetracker usw.) wenn du das Auto ansteckst und endet, wenn du es abziehst. (Ausnahme: Wenn du die NFC bzw. Benutzerfreigabe benutzt, dann beginnt der Ladevorgang erst wenn du ein Tag an die Wallbox hältst)

     

  3. Das geht.

    Damit ich das richtig verstehe: Willst du den Zähler neben dem WARP Charger lassen, oder willst du ihn in die Wallbox einbauen? Im ersten Fall kannst du die Teile einfach bestellen, in Fall zwei, schreib stattdessen eine Mail an info@tinkerforge.com mit einem Verweis auf diesen Post und deiner Adresse usw. Dann legen wir dir eine Bestellung auf Rechnung an.

    In jedem Fall brauchst du dafür:

    Wenn du den Zähler neben dem WARP Charger lässt:

    • Ein möglicherweise langes 3-adriges Verbindungskabel zwischen Zähler und RS485-Bricklet. In den Posts unten hat jemand ein Cat-7-Kabel benutzt.
    • Ein Befestigungskit für das RS485-Bricklet: https://www.tinkerforge.com/de/shop/mounting-kit-12mm.html (kannst du auch beim RS485-Bricklet mit auswählen)

    und du musst dann ein Loch ins Gehäuse bohren um das Kabel durchzuführen und 4 Löcher in den Berührschutz um das RS485-Bricklet zu befestigen.

    Wenn du den Zähler in den WARP Charger einbaust:

    • Den Berührschutz für einen WARP Charger Pro. Bei dem sind die Ausschnitte andere, damit der Zähler reinpasst. Den gibt's nicht im Shop, deshalb müsstest du uns dafür die Mail schreiben.
    • Ein Verbindungskabel zwischen Zähler und RS485-Bricklet. Davon haben wir noch welche hier, würden wir dir dann mit reinlegen.

    Das prinzipielle Vorgehen ist:

    • Wallbox stromlos machen
    • Frontdeckel abnehmen, dabei auf das Fronttaster- und Erdungskabel achten
    • Berührschutz ausbauen
    • 4 Löcher reinbohren oder ESP-Brick auf den neuen Berührschutz setzen
    • Die DIP-Schalter auf dem RS485-Bricklet auf Half-Duplex terminated schalten (1, 2, 3 auf ON; 4 auf OFF)
    • RS485-Bricklet mit dem ESP-Brick verkabeln (Es ist egal an welchen Port du das Bricklet anschließt) und auf dem Berührschutz befestigen
    • Loch in die Gehäusewand bohren oder den Klemmenblock ausbauen, stattdessen den Zähler einbauen und verkabeln
    • Zähler mit RS485-Bricklet verbinden: A+ an RX+, B- an RX-, G an GND (siehe auch den Stromlaufplan hier:https://www.warp-charger.com/documents/WARP_Stromlaufplan.pdf)
    • Berührschutz einbauen
    • Frontdeckel aufsetzen und zuschrauben

    In der Software musst du nichts ändern. Das RS485-Bricklet sollte, wenn die Wallbox startet, automatisch gefunden werden.

    Hier haben das schon ein paar Nutzer gemacht:

     

  4. Das sind ja zwei Probleme hintereinander:

    1. Bringt das dritte Tag anscheinend den NFC-Leser durcheinander -> Ich sehe mir den zweiten debug-report gleich an und schreibe dir dann noch was dazu. Im Idealfall können wir das hier reproduzieren und dann hoffentlich fixen.

    2. Wenn der NFC-Leser kurz hängt oder neu startet, kommt die Wallbox-Firmware damit nicht zurecht und crasht. -> Das habe ich behoben, d.h. selbst wenn der NFC-Leser crasht läuft die Wallbox weiter. Der Fix wird in der nächsten Firmware (voraussichtlich Ende der Woche) enthalten sein.

  5. MQTT ist kein Umweg, sondern der offiziell unterstützte Weg, einen WARP Charger mit EVCC zu verbinden. Deshalb dokumentieren sowohl wir, als auch EVCC das so.

    Wenn du über OCPP oder Modbus gehen willst (vermutlich mit dem Hintergedanken, dass du dann keinen MQTT-Broker aufsetzen musst?), dann kannst du das tun.

    Für Modbus-TCP musst du:

    Für OCPP musst du auch EVCC entsprechend konfigurieren, siehe hier: https://docs.evcc.io/docs/devices/chargers#ocpp-16j-kompatible-wallbox-mit-smart-charging-profil

    Die OCPP-Implementierung von EVCC ist aber nur das absolute Minimum (eben weil es nur ein Fallback ist, wenn keine sinnvollere Anbindung existiert), als wir das hier mal getestet hatten, hat das nicht 100%ig überzeugend funktioniert. Siehe z.B. hier: https://github.com/evcc-io/evcc/issues/5055#issuecomment-1305359228

  6. On 6/14/2023 at 2:31 PM, gustavpaula said:

    Wieso OpenHAB regelmäßig eine Nachricht schickt, die aber für euch zu groß ist und was das für Konsequenzen hat (und wer nun das "Problem" hat: die WB oder OpenHAB) ist mir nicht klar. D.h. OpenHAB versucht, last_charges zu schreiben? Oder vllt. ist das auch EVCC?

    Das Problem ist nicht die zu große Nachricht, die wird sowieso ignoriert, eben weil sie a) zu groß ist und b) auf ein Topic geht, dass nicht geschrieben werden darf.

    Ich vermute aber, dass openHAB mehr bzw. alle Topics der Wallbox beschreibt, unter anderem auch evse/stop_charging und evse/start_charging o.Ä.

    EVCC ist das vermutlich nicht.

    • Thanks 1
  7. Deaktiviere mal testweise die MQTT-Kommunikation. Mir ist im Log gerade aufgefallen, dass diese Meldungen

    MQTT: Ignoring message with payload length 2526 for topic warp/SzQ/charge_tracker/last_charges. Maximum length allowed is 2048.

    auch ~alle 45 Sekunden erscheinen und zwar genau zwischen dem Ab- und Anschalten. Das ist an sich schon komisch, weil charge_tracker/last_charges ein State ist, was heißt, dass last_charges von außen sowieso nicht geschrieben werden darf. Die Längenprüfung ist davor, deshalb sehen wir das jetzt im Log, anstatt dass die Nachricht einfach ignoriert wird.

    Etwas zusammengekürzt:

    2023-06-13 13:29:56,780  Charger state changed from 3 to 0
    2023-06-13 13:29:57,167  MQTT: Ignoring message[...]
    2023-06-13 13:29:58,914  Charger state changed from 0 to 2
    2023-06-13 13:30:44,023  Charger state changed from 3 to 0
    2023-06-13 13:30:44,751  MQTT: Ignoring message[...]
    2023-06-13 13:30:46,169  Charger state changed from 0 to 2
    2023-06-13 13:31:31,306  Charger state changed from 3 to 0
    2023-06-13 13:31:32,449  MQTT: Ignoring message[...]
    2023-06-13 13:31:33,495  Charger state changed from 0 to 2

    Kann es sein, dass openHAB regelmäßig (oder z.B. bei Reconnect?) alle MQTT-Topics schreibt, die es findet? Ich weiß das ioBroker das Problem hat, siehe z.B. hier:

    Das hat im Extremfall dazu geführt, dass ioBroker die Wallbox andauernd neugestartet hat, weil es andauernd auf die /reboot-API geschrieben hat :D

  8. Wir haben uns den Debug-Report angesehen, anscheinend passiert folgendes:

    • Der NFC-Leser selbst schickt entweder > eine Sekunde lang keine Daten mehr, oder die Wallbox ansich hängt aus anderen Gründen so lange
    • Das sorgt dafür, dass ein Code-Pfad genommen wird, der definitiv falsch ist (habe ich verbockt, sorry)
    • Das crasht die Wallbox -> sie startet neu

    Ich fixe auf jeden Fall den Code, der da crasht, aber:

    On 6/12/2023 at 10:03 AM, timmy said:

    Ich habe keine relevanten, weiteren Meldungen gesehen, kann auch nicht beschwören, dass ich nachher nochmals den NFC-Leser getestet habe. Muss ich mal nachholen.

    Wenn du das tust: teste bitte nochmal mit genau den NFC-Tags die du davor probiert hast. Falls du mit einem der Tags reproduzierbar den NFC-Leser abschießen kannst, wäre das sehr interessant.

     

  9. On 6/9/2023 at 7:51 PM, kagehisa said:

    Wenn EVCC die Steuerung übernimmt muss an der Wallbox dann trotzdem Lastmanagement aktiviert werden?

    Ja. Das Lastmanagement ist für die Phasenumschaltung notwendig, weil darüber der Ladevorgang gestoppt und das CP-Signal getrennt wird, bevor die Phasenumschaltung durchgeführt wird.

    On 6/9/2023 at 7:51 PM, kagehisa said:

    GIbt es einen speziellen Grund warum das so gemacht wurde?

    Mehrere: Das EVCC-Weltmodell kennt den Energy Manager nicht, er wird praktisch als Teil der Wallbox behandelt und nur für die Phasenumschaltung verwendet. Außerdem ist die Idee, dass EVCC vermutlich bereits eine Solaranlage auslesen und damit besser steuern kann.

    • Thanks 1
  10. Die obligatorische erste Frage: Läuft die aktuelle Firmware (2.1.2) auf der Wallbox? Nicht dass wir alte Bugs jagen.

     

    On 6/9/2023 at 9:13 PM, timmy said:

    Das hat bei zwei Karten funktioniert, dann verlor ich die Verbindung zum Access-Point des WARP2 -- wohl ein reboot. Danach konnte der NFC-Leser wieder keine Karten erkennen und zeigte keine Reaktion.

    Hattest du nach zwei Karten auf Speichern und dann Neu starten geklickt oder ist die Wallbox von sich auch neugestartet? Im zweiten Fall würde ich gerne herausfinden, warum das passiert ist. Dafür müsstest du einen Debug-Report von der Wallbox ziehen.

    On 6/9/2023 at 9:13 PM, timmy said:
    305,337  NFC mode invalid. Did the bricklet reset?

    Bekommst du nach dieser Meldung weitere? Die Meldung wird genau ausgegeben, bevor die Wallbox den NFC-Leser neu initialisiert. D.h. eigentlich sollten spätestens danach wieder Tags erkannt werden.

    On 6/12/2023 at 8:09 AM, timmy said:

    Habe ich es hier mit einem Hardware-Defekt zu tun?

    Möglich. Das muss aber etwas nicht offensichtliches sein, wenn die Kommunikation zum NFC-Bricklet noch funktioniert, es sich aber sporadisch zurücksetzt? (so interpretiere ich das Log erstmal).

    Zieh wie gesagt mal einen Debug-Report von der Wallbox. Ich hoffe, dass wir dann mehr sehen.

  11. Eigentlich sollte

    On 6/10/2023 at 9:16 PM, piwo2 said:

    "qt.qpa.qgnomeplatform.theme: The desktop style for QtQuick Controls 2 applications is not available on the system (qqc2-desktop-style). The application may look broken."

    kein Problem sein, da der Brick Viewer nicht QtQuick sondern QtWidgets benutzt. Du kannst z.B. mal versuchen, die Verwendung des Fusion-Styles (oder jedes beliebigen anderen) zu verwenden mit

    sudo QT_STYLE_OVERRIDE=fusion brickv

     

    Eventuell hilft das hier?: https://wiki.archlinux.org/title/qt#Theme_not_applied_to_root_applications

     

  12. Das kommt darauf an, wie du den maximalen Ladestrom setzt:

    Wenn du evse/global_current_update verwendest, wird die Ladestromgrenze verändert, die auch im Webinterface auf der Statusseite als "Konfigurierter Ladestrom" angezeigt wird. Diese Stromgrenze wird in der Tat im Flash des Ladecontrollers gespeichert.

    Alternativ kannst du in den Ladeeinstellungen die externe Steuerung aktivieren und dann mit evse/external_current_update den Ladestrom setzen. Dieser Wert wird nicht im Flash gespeichert und ist deshalb auch der, der von z.B. EVCC verwendet wird.

  13. Es gibt in esp32-firmware/software das Script coredump.py. Dem kannst du entweder einen Pfad zu einem Debug-Report geben (an den hängen wir den letzten Coredump an) oder mit -p einen seriellen Port an dem ein ESP angeschlossen ist, von dem der Coredump runtergeladen werden soll. Das Script besorgt sich auf eine der beiden Weisen einen Coredump, sucht in esp32-firmware/software/build nach der .elf-Datei die zu der Firmware gehört und startet dann einen gdb der den Stacktrace dekodiert und ihn und die Register usw. ausgibt.

  14. Firmware: WARP Energy Manager 1.0.3

    • Neuen Phasenumschaltungs-Modus "Einphasig PV/Dreiphasig schnell" hinzugefügt
    • Anzeige des Zustands der Phasenumschaltung bei externer Kontrolle hinzugefügt
    • Prüfung auf überlappende Netzwerkbereiche bei IP-Konfiguration von LAN, WLAN und WireGuard hinzugefügt
    • Übersetzungen verbessert
    • Sofortiger Start des WLAN Access Points hinzugefügt, falls keine WLAN-Verbindung konfiguriert und kein Ethernet-Kabel verbunden ist
    • Sichtbarkeit der Nulllinie verbessert
    • Alle 48h-Graphen auf mindestens 1500 Watt skaliert
    • Minimalhöhe der Monatsübersicht auf 10 kWh reduziert
    • Ereignis-Log-Meldungen überarbeitet
    • Generierung des Energie-Manager-Protokolls repariert
    • Verwendung des falschen Minimalstroms bei einphasigem Laden repariert
    • Plötzlichen Ladestop bei geringer PV-Produktion behoben
    • Instabiles Verhalten am Anfang eines Ladevorganges bei teilweise bewölktem Wetter behoben
    • Behoben, dass Daten der dritten und weiterer Wallboxen nicht aufgezeichnet worden
    • Überlappende Balken in Monatsübersicht behoben
    • Abgeschnittenen ersten und letzten Balken in Monatsübersicht behoben

    Hinweis: Version 1.0.3 hat einen Bug der dazu führen kann, dass kein Zugriff auf das Webinterface möglich ist. Bitte direkt 1.0.4 verwenden.

  15. Sorry den Edit hatte ich nicht gesehen. Der ESP crasht in deiner Variante, weil du pixels in der Funktion anlegst. Dann landet das Array auf dem Stack und der ist je nach den Werten von WIDTH und HEIGHT zu klein. Wenn du z.B. das ganze Display füllen willst, also WIDTH 64 und HEIGHT 128, braucht das Array 64 * 128 = 8 kB Speicherplatz. Der Stack ist aber wenn ich mich richtig erinnere nur 6 kB groß.

    Wenn du die Deklaration von pixels aus der Funktion rausziehst, funktioniert es.

  16. Die Funktion hat den Fallstrick, dass die Endwerte jeweils auch Pixelkoordinaten sind. Das heißt, dass wenn du 16*16 Pixel zeichnen möchtest, die Endwerte jeweils der Startwert plus 16 Pixel sind, weil der Startpixel mitzählt.

    #include "Arduino.h"
    
    #include "bindings/config.h"
    #include "hal_arduino_esp32_brick/hal_arduino_esp32_brick.h"
    #include "bindings/errors.h"
    #include "bindings/bricklet_oled_128x64_v2.h"
    
    // Used to report any error encountered while running the example.
    extern "C" void check(int e_code, const char *c) {
        if (e_code == TF_E_OK) {
            return;
        }
    
    #if TF_IMPLEMENT_STRERROR != 0
        tf_hal_printf("Failed to %s: %s (error code %d)\n", c, tf_hal_strerror(e_code), e_code);
    #else
        tf_hal_printf("Failed to %s: %d\n", c, e_code);
    #endif
    }
    
    TF_HAL hal;
    
    static TF_OLED128x64V2 oled;
    
    bool pixels[16*16] = {
        true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true, 
        false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true,
        true,  false, false, false, false, false, false, false, false, false, false, false, false, false, false, true,
        true,  false, true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  false, false, true,
        true,  false, true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  false, false, true,
        true,  false, false, false, false, true,  true,  false, false, false, false, false, false, false, false, true,
        true,  false, false, false, false, true,  true,  false, true,  true,  false, false, false, false, false, true,
        true,  false, false, false, false, true,  true,  false, true,  true,  false, false, false, false, false, true,
        true,  false, false, false, false, true,  true,  false, true,  true,  true,  true,  true,  false, false, true,
        true,  false, false, false, false, true,  true,  false, true,  true,  true,  true,  true,  false, false, true,
        true,  false, false, false, false, true,  true,  false, true,  true,  false, false, false, false, false, true,
        true,  false, false, false, false, true,  true,  false, true,  true,  false, false, false, false, false, true,
        true,  false, false, false, false, true,  true,  false, true,  true,  false, false, false, false, false, true,
        true,  false, false, false, false, false, false, false, false, false, false, false, false, false, false, true,
        true,  false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
        true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true,  true
    };
    
    void setup() {
        Serial.begin(115200);
        delay(3000);
        Serial.println("Hello World!");
    
        check(tf_hal_create(&hal), "hal create");
    
        // Create device object
        check(tf_oled_128x64_v2_create(&oled, NULL, &hal), "create device object");
    
        // Clear display
        check(tf_oled_128x64_v2_clear_display(&oled), "call clear_display");
    
        // Write "Hello World" starting from upper left corner of the screen
        check(tf_oled_128x64_v2_write_line(&oled, 0, 0, "Hello World"), "call write_line");
        // Draw logo to center of screen
        check(tf_oled_128x64_v2_write_pixels(&oled, 56, 24, 56 + 15, 24 + 15, pixels, 16*16), "call write_pixels");
    }
    
    void loop() {
        // Poll for callbacks
        tf_hal_callback_tick(&hal, 0);
    }

     

  17. USB mit einem Industrial Digital Out, IO4, oder ähnlichen Bricklets zu sprechen funktioniert vermutlich nicht. Dafür ist die Kommunikation zwischen ESP und Bricklet zu langsam. Über die Pins auf der Stiftleiste des ESP32 Brick sollte das theoretisch gehen, spontan finde ich aber nur Implementierungen für den ESP32-S2, der USB-Hardware-Support mitbringt.

    Der Ansatz, ein RS232-Bricklet und einen USB-Seriell-Wandler zu verwenden sollte funktionieren.

    Alternativideen:

    • Direkt den USB-Port des ESP-Bricks verwenden. Da musst du das Logging totlegen oder deine Nachrichten speziell markieren, damit der PC sie von den normalen Logs unterscheiden kann
    • Statt USB über das Netzwerk gehen. Du kannst den ESP per WLAN oder wenn es ein ESP-Ethernet-Brick ist auch per LAN ins Netzwerk bringen und die Daten dann über TCP oder UDP übertragen. Noch einfacher für den Anwender ist es, wenn du den Webserver benutzt, dann kann man die Daten z.B. einfach als Dateien herunterladen.
    • Thanks 1
×
×
  • Neu erstellen...