Jump to content

rtrbt

Administrators
  • Gesamte Inhalte

    1.489
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    138

Alle erstellten Inhalte von rtrbt

  1. Ich habe den Code so wie du ihn hast mal mit einem NodeMCU getestet. Musste dafür nur im HAL den MISO_PIN von 16 auf 12 setzen. Damit funktioniert es aber. Die Bilder sind die Anfrage der Bindings, mit dem sie abfragen was an dem Port angeschlossen ist und die Antwort des One Wire Bricklets. Wenn das funktioniert müsstest du die Ausgabe auf der seriellen Konsole sehen: Hello World! Found device GGU of type 2123 at port A Get Device Info: {"devices": [ {"UID":"GGU", "DID":2123, "port":"A"}]} So wie dein Code da steht, gibt es nur kurz Kommunikation, wenn du die Bindings startest, du könntest aber in die Loop noch tf_hal_callback_tick aufrufen, dann prüfen die Bindings permanent, ob die Bricklets Daten schicken wollen. Der Bus sollte mit 1,4 MHz laufen. Alles bis 2 MHz verstehen die Bricklets. Edit: Bilder als Anhang, damit man sie auch lesen kann. Edit2: Das Forum wehrt sich. Klickst du hier: https://imgur.com/a/6mQ0OYF
  2. Liest du SPI zwischen dem ESP und dem HAT oder zwischen HAT und Bricklet? Noch eine Sache die mir auffällt: Dein Beispiel schreibt Daten per SPI an einen Slave, vom Logic-Analyzer-Bild her ist das Pinmapping D0 MISO D1 MOSI D2 CLK D3 CS Jetzt sehe ich da aber Daten auf MISO, nicht auf MOSI. Das scheint falsch herum zu sein. Oder hast du das nur in Sigrok falsch zugeordnet?
  3. Die Verkabelung sieht soweit ich das erkennen konnte richtig aus. Falls du einen Saleae Logic Analyzer hast kannst du dir unseren HLA ansehen: https://www.tinkerforge.com/de/doc/Low_Level_Protocols/Saleae_High_Level_Analyzer.html Ich habe nochmal in deinen HAL gesehen: Es fehlt auf jeden Fall die Zeile hal->hspi = SPIClass(HSPI); vor hal->hspi.begin(CLK_PIN, MISO_PIN, MOSI_PIN); Ich bin mir gerade nicht mehr sicher, ob der SPIClass-Konstruktor außer dem Pin-Mapping noch mehr tut, eventuell war die Zeile wichtig ;)
  4. openHAB kann sich auch zu WiFi Extensions verbinden. D.h. openHAB3 <--> openHAB2 <--> Stack mit Master + Wifi Extension funktioniert auch ohne RED Brick, wenn du die openHAB2-Instanz auf dem selben Rechner laufen lässt wie die openHAB3-Instanz.
  5. Da der Wunsch nach der NFC-Aufrüstung schon mehrfach kam: Ich will nichts versprechen, aber theoretisch sollte NFC mit Einschränkungen auch mit WARP 1 funktionieren. Was nicht gehen wird ist der Ladestop per Tag, weil der Knopf bei WARP 1 nicht deaktiviert werden kann.
  6. Die Doku zu den Remote-openHAB-Binding sagt zumindest, dass es genau für solche Fälle da ist. Ich habe aber keine Ahnung wie viel Aufwand es ist das Binding einzurichten. Im RED-Brick-Image ist aber vermutlich auch eine ältere openHAB-Version, die müsstest du von Hand aktualisieren. Eventuell wäre folgendes einfacher: Die Tinkerforge-Bindings selbst können sich zu einem Brick Daemon verbinden, der nicht lokal läuft, sondern über das Netzwerk. D.h. du könntest da, wo OH3 bei dir läuft, OH2 daneben installieren, dich mit dem Binding zum RED-Brick verbinden (auf dem dann nur der Brick Daemon läuft) und es sollte funktionieren. Ich würde auch erwarten, dass die Performance dann besser ist: Der RED-Brick ist immerhin nur so schnell wie ein Pi 1, openHAB läuft auf dem Brick eher gemächlich.
  7. Moin Stefan, Du meinst die Pins die nicht Chip-Select sind? Die musst du im HAL selbst umbiegen, ja. Du kannst dir in hal_arduino_esp32.cpp in folgendem Block: if (uses_hspi) { hal->hspi = SPIClass(HSPI); hal->hspi.begin(); } if (uses_vspi) { hal->vspi = SPIClass(VSPI); hal->vspi.begin(); } die Pins in den Begin-Aufruf reinpatchen, z.B. so: hal->hspi.begin(CLK_PIN, MISO_PIN, MOSI_PIN); wenn du nur HSPI oder VSPI umbiegst, musst du dann in deiner ports.h alle Ports auf das entsprechende SPI setzen. Das HAT Zero (übrigens auch das große HAT) sind im Endeffekt eine Schaltung + ein Bricklet. Es gibt einen Select-Pin am HAT-Stecker mit dem du mit dem Microcontroller auf dem HAT reden kannst (B-CS4 im Schematic, das ist Pin 22 bzw. GPIO 25 am Pi). Wenn du diesen Pin als normalen Port in deine ports.h packst, funktioniert das alles automagisch, du kannst dann also über tf_hal_get_device_info u.A. die UID abfragen. Weniger zur Codestruktur und mehr ein allgemeiner Hinweis: Du kannst dir die esp32-lib mal ansehen, da sind noch ein paar hilfreiche Konstrukte enthalten, wenn du z.B. Devices nach der Device-(Typ)-ID suchen willst oder Firmwares flashen o.Ä.. Die Lib ist aber darauf ausgelegt in einer Firmware wie der für unsere Wallbox eingesetzt zu werden, da musst du eventuell Zeug rauspatchen für Konstrukte die du nicht hast. Grüße, Erik
  8. Bei WARP 1 reicht es das automatische Laden abzuschalten. Der Taster kann das Laden nur abbrechen, nicht starten.
  9. Moin, Das ist leider garnicht so einfach: Die Wallbox weiß Stand jetzt nicht, wie spät es ist. Für ein paar der geplanten Features müssen wir NTP zur Zeitsynchronisierung implementieren, aber das ist noch Zukunftsmusik. Deshalb kann ich erstmal nicht versprechen, dass es den Rückstellzeitpunkt so geben wird, geschweige denn wann. Ich behalte die Idee aber mal im Hinterkopf und komme darauf zurück, falls es sich ergibt.
  10. Hi, This is indeed possible with the C/C++ bindings for microcontrollers. However those are not finished yet. You can find the latest beta here : Documentation is available here: https://www.tinkerforge.com/en/doc/Software/API_Bindings_uC.html and here for the Voltage/Current Bricklet 2.0: https://www.tinkerforge.com/en/doc/Software/Bricklets/VoltageCurrentV2_Bricklet_uC.html Links to the Bricklet-specific documentation are not generated yet, however you can use the documentation for the "normal" C bindings and then add a u before the last C like this: https://www.tinkerforge.com/en/doc/Software/Bricklets/AirQuality_Bricklet_C.html becomes https://www.tinkerforge.com/en/doc/Software/Bricklets/AirQuality_Bricklet_uC.html
  11. Damit ich das richtig verstehe: Du benutzt bereits die Python-Bindings für unsere Hardware, willst jetzt aber die MQTT-Bindings benutzen? Im Endeffekt funktioniert das wie folgt: Die MQTT-Bindings machen nichts anderes als auf MQTT-Nachrichten zu warten und dann selbst die Python-Bindings aufzurufen. Deshalb müssen die MQTT-Bindings permanent als Programm laufen. Wenn du dann z.B. mit paho-mqtt folgendes machst: mqttc.publish("tinkerforge/request/lcd_128x64_bricklet/AbC/get_identity", "") legen die MQTT-Bindings intern eine Instanz von BrickletLCD128x64 an und rufen darauf .get_identity() auf. Das Ergebnis bekommst du auf das Topic tinkerforge/response/lcd_128x64_bricklet/AbC/get_identity zurückgegeben. Die Topics entsprechen 1:1 den Python-Bindings-Funktionsaufrufen.
  12. Das muss ein /request/ sein statt /callback/. Prinzipiell sind die /register/ und /request/-Topics die, auf die du publisht und /response/ und /callback/ die, auf die die Bindings publishen, also du subscribst.
  13. There was indeed a bug in the streaming logic used by write_frame. Does the attached version work on your side? If yes, the bugfix will be released with the next version of the bindings. Cheers, Erik tinkerforge_mqtt
  14. Hm thats strange. What is the Python version that you are running the MQTT bindings with? Please test again with the attached version of the bindings (and run the bindings with --debug ). I've added some details to the error message. tinkerforge_mqtt Edit: Nevermind I've just managed to reproduce the error. Let me take a look.
  15. Hi Jérémie, I've got two ideas: Did you change the UID from XYZ to the UID of your Bricklet? The UID is shown in Brick Viewer. Please check the quoting of your payload: If you quote with " at the outer-most layer, you have to escape the innner " around frame. However then the single quotes are unnecessary. I'm not sure how this works in MQTT explorer, but I would assume the correct way to quote would be either '{"frame": [255,128,0]}' or "{\"frame\": [255,128,0]}" depending on support for single quotes in MQTT explorer. If this does not help, my next question would be what version of the MQTT bindings you are running. Also you could check whether other functions work correctly. For example get_identity (does not require any parameters, i.e. you can just send an empty message). Cheers, Erik
  16. Das freut zu hören, danke! @Jhonny Dein Edit hatte ich ganz übersehen, sorry. Aber gut, dass es bei dir funktioniert! Die Prüfung des Managers, ob die Clients richtig konfiguriert sind muss ich noch implementieren, es wird dann einen "Testen"-Button o.Ä. geben der die Konfigurationen abklopft. Für die UI auf der Statusseite habe ich ein paar Ideen, aber noch nichts spruchreifes.
  17. rtrbt

    Update auf 1.2.4

    Stand jetzt musst du auf warp-charger.com nachsehen: https://www.warp-charger.com/#firmware Da findest du auch das Changelog. Solange nicht Beta dransteht, gerne jeder. Bei der Lastmanagement-Beta sollten die Grundfunktionen auch alle weiter funktionieren, der möglicherweise instabile Teil ist nur der neue, eben das Lastmanagement. (Aus meiner egoistischen Sicht sollte natürlich auch jeder die Beta testen, das erhöht die Wahrscheinlichkeit Bugs schnell zu finden ;) )
  18. rtrbt

    Update auf 1.2.4

    Ah ja, da bist du in einen sehr unschönen Bug gelaufen. Das Webinterface erlaubt keine Updates während ein Auto angeschlossen ist, weil unter Umständen im Update eine neue Ladecontroller-Firmware enthalten ist. Der Ladecontroller kann aber nur sicher geflasht werden, wenn kein Auto angeschlossen ist ist. Das Problem ist dann, dass die Anzeige für den Fehler nur ganz kurz, wenn überhaupt zu sehen ist (< 1 Sek.). Der Bug ist im Code schon gefixt, der Fix wird mit der nächsten großen Firmware-Version (1.3 oder der zweiten Lastmanagement-Beta) veröffentlicht.
  19. rtrbt

    Update auf 1.2.4

    Moin Michael, Was meinst du damit genau? Das Webinterface wird noch geladen, aber die angezeigte Firmware-Version ist noch 1.2.3? Mit welchem Browser? Auf meinem Handy mit Firefox klappt es. Lade dir von der Box mal Ereignis-Log und Debug-Report herunter und hänge beides hier an. Grüße, Erik
  20. Wieder in B bzw. 1 (IEC und vehicle state)
  21. Nicht direkt. Der Webserver auf der Box hat aber einige Stabilitätsprobleme, deshalb hat die Entwicklung des Lastmanagements so lange gedauert. Ich habe dann die Implementierung komplett ausgetauscht gegen eine, die direkt die Espressif-APIs benutzt und deutlich stabiler läuft. Wenn du das Problem reproduzierbar erzeugen kannst, teste mal bitte, ob es mit der Lastmanagement-Beta verschwindet.
  22. Das ist leider so, ja. Am besten bekäme man das mit z.B. EVCC in den Griff, da sind die meisten Fahrzeug-APIs implementiert. EVCC könnte dann einfach 90% als Ladeziel ansetzen und danach die Wallbox stoppen, oder den Strom runterregeln. Das hieße auch, dass ich alle anderen Stromgrenzen berücksichtigen sollte, also auch die vom User oder von EVCC gesetzte. Ich setze mir mal auf die TODO-Liste damit zu experimentieren. Die Idee mit der Strom- bzw. Leistungsmessung zu arbeiten ist gut, würde aber nur funktionieren, wenn alle Wallboxen einen Stromzähler haben. Wäre natürlich ein gutes Verkaufsargument für die Pro, da muss ich auch mal drüber nachdenken. Danke für den Input!
  23. Stand jetzt verteilt das Lastmanagement auf alle Boxen (die ladebereit sind) den gleichen Strom. D.h. ich ignoriere auch gesetzte Maximalströme auf den Boxen. Das ist noch auf meiner TODO-Liste (ich editiere es mal in die Liste der bekannten Bugs). Den aktuellen Ladestrom kann ich nicht einbeziehen, da den Wallboxen Informationen fehlen: Lädt ein Fahrzeug gerade nicht, weil es voll ist, oder weil es nach einem Zeitplan lädt oder die Batterie gerade zu heiß ist o.Ä.? Zieht ein Fahrzeug gerade nur (noch) z.B. 8 Ampere obwohl 16 zugeteilt sind, weil es fast voll ist oder auch wegen der Batterie? (Das macht einen Unterschied, weil das Auto dann jederzeit mehr Strom akzeptieren könnte, wenn ich ihn zuteile, es gibt aber keinen Kanal auf dem das der Wallbox und damit dem Lastmanagement mitgeteilt werden kann) Die Stromgrenzen an der Wallbox, zumindest die "fixen" also Maximalstrom der Zuleitung und des Ladekabels, werden künftig auf jeden Fall berücksichtigt. Stand jetzt kannst du EVCC und das Lastmanagement parallel benutzen. Das Laden beginnt nur, wenn sowohl EVCC, als auch das Lastmanagement die Ladung freigeben und der Ladestrom ist das Minimum aus beiden. Im folgenden Bild siehst du, wie das genau funktioniert: Die Freigaben sind stufenweise, wobei wenn eine Freigabe weggenommen wird, alle die "danach" kommen auch wieder abgefragt werden. Also wenn der Lastmanager eine Ladung freigibt und später blockiert, kann er noch später die Ladung wieder freigeben, ohne dass der User (oder EVCC) gefragt werden, das Auto muss aber neu Strom anfordern (was typischerweise automatisch passiert). Wenn die User-Freigabe weggenommen wird, muss aber danach der Lastmanager (und das Auto) freigeben. Als "normaler User" ist nur die Einschränkung bezüglich des Einloggens relevant. Der Rest ist betrifft nur Nutzer der HTTP-API. Irgendetwas in die Richtung wird es voraussichtlich geben, da haben wir aber noch keine Details ausgearbeitet. Die einfachste Variante, wenn jede Garage bzw. jede Nutzergruppe die separat abgerechnet werden soll eine eigene Wallbox bekommt, wäre den WARP Charger Pro zu verbauen und dann über den Stromzähler abzurechnen. Da gibt es aber keine Hilfsfunktionen in der Software, man müsste also "händisch" die Zählerstände pro Abrechnungszeitraum abfragen (oder sich ein eigenes Script etc. dafür bauen). Ja Downgrades sind möglich. Falls es da Probleme geben sollte, gib auf jeden Fall Bescheid. Ich höre über mir die Wallbox-Bauer, kurz: wir arbeiten daran ;)
  24. Sorry, I've got no ETA yet. Everyone here is still focused on programming and building the chargers. The project is not dead, but don't expect a new version in the next few months.
  25. Nein gibt es leider nicht, sorry. Das Projekt ist nicht tot, aber Stand jetzt liegt in der ganzen Firma klar der Fokus auf den Wallboxen. Ich gebe aber bescheid, wenn sich wieder etwas tut.
×
×
  • Neu erstellen...