Hi, ich benutze einen ESP8266 (Wemos D1) und habe mich durch diverse Arduino libs geklickt. Spannend finde ich gerade alles, das kreativ mit dem Flash ROM umgeht. Da habe ich mich gefragt, kann man irgendwie diese beiden Funktionalitäten kombinieren: * Over the air updates * EEPROM Emulation Ich stelle mir das so vor, dass mein Gerät einmal am Tag mit meinem server verbindet und prüft ob eine neue binary zur Verfügung steht. Falls ja, flasht es sich selbst. Außerdem kann man jederzeit einige config-structs im RAM via Terminal ändern (z.B. hostname). Diese werden dann über eine EEPROM Emulation im Flash abgelegt. Bei der Interaktion dieser beiden Funktionen würde ich mir wünschen, dass die config-structs während dem flash-Vorgang im RAM erhalten bleiben. Überall wo sich das Datenformat durch das software update nicht geändert hat (könnte man z.B. über eine Versionsnummer als erste variable im struct erkennen), wird das bekannte struct aus dem RAM nach dem update direkt in den Flash geschrieben. Alle anderen müssen gezwungenermaßen auf ihre neuen defaults gesetzt bleiben. Erst wenn das alles erledigt ist, kann das Gerät neu gestartet werden und das OTA Update ist beendet. Je kleiner man die structs macht, desto weniger settings gehen so durch updates verloren. Gibt es bereits eine library die das alles kann? Zugegebenermaßen sind die die OTA Libs etwas unübersichtlich. Hat jemand von euch so etwas schon mal in einem Arduino verwendet?
Arduino ist wie Ravioli aus der Dose. Das nimmt man so wie es ist, oder gar nicht. Features die in der aktuellen Doku nicht beschrieben sind, sollte man besser nicht benutzen. In den Arduino Bibliotheken ist viel zu viel Bewegung drin, als dass es sich großartig lohnt, ihre Quelltexte zu analysieren und Workarounds drumherum zu bauen. Bei so speziellen Anforderungen würde ich lieber mit dem SDK von Espressif arbeiten. Ist meine persönliche Meinung dazu.
A. S. schrieb: > Ich stelle mir das so vor, dass mein Gerät einmal am Tag mit meinem > server verbindet und prüft ob eine neue binary zur Verfügung steht. > Falls ja, flasht es sich selbst. Ich stelle mir vor, dass eine blutjunge Halle Berry ein mal am Tag nackt vor meiner Tür steht. Passiert auch nicht. Ist aber deutlich wahrscheinlicher als dass DU diese beknackten Anforderungen jemals wirst umsetzen können.
:
Bearbeitet durch User
Cyblord -. schrieb: > Ist aber deutlich wahrscheinlicher als dass DU > diese beknackten Anforderungen jemals wirst umsetzen können. Oh Gott, bist Du scheiße. Hast Du wieder aufgehört Deine Pillen zu nehmen?
A. S. schrieb: > * Over the air updates > * EEPROM Emulation ... > Gibt es bereits eine library die das alles kann? Zugegebenermaßen kenne ich die Arduino-Libs nicht. Aber auch nur halbwegs brauchbaren Libs für sowas kann man sagen in welchen Adressbereichen sie unterwegs sein dürfen. Sofern die Adressbereiche keine Überschneidung haben und man die Flash-Pages beachtet können die auch durchaus koexistieren. Über die Qualität der Arduino-Libs sage ich lieber nichts.
Keine Ahnung wie es gemacht wird, aber Tasmota kann und konnte genau das. Die Konfig bleibt über einen (sogar doppelten) OTA erhalten, würde ja auch gar keinen Sinn machen sonst. Und das Ding könnte sich selber updaten, allerdings finde ich es besser wenn der User an schubsen muss, wobei das über einen Klick auf der Webseite geht oder ein MQTT-Kommando. Da einen Timer dranzufrickeln sollte kein Thema sein. Lief früher unter Arduino auch schon so, aber das Projekt ist mittlerweile so groß und überscihtlich das es auf PlatformIO konvertiert wurde. Hacker Tobi hier aus dem Forum hat auch eine ähnliche Firmware am Start, die ebenfalls OTA und persistente Settings hat. Das ist allerdings natives Espressif-IDE, soweit ich weiß. Muss also irgendwie gehen... ;)
Jens M. schrieb: > Lief früher unter Arduino auch schon so, aber das Projekt ist > mittlerweile so groß und überscihtlich das es auf PlatformIO konvertiert > wurde. Für's Protokoll: Tasmota ist immer noch ein Arduino-Projekt, benutzt aber platformio um Compiler, Ardiuno-Core und Bibliotheken in den passenden Versionen herunterzuladen und zu kompilieren. Zur Frage: mit "ArduinoOTA" und ein bisschen Logik am Server wäre das einfach umzusetzen. Am ESP: https://github.com/esp8266/Arduino/blob/master/libraries/ArduinoOTA/examples/BasicOTA/BasicOTA.ino und der ESP sendet regelmäßig seine aktuelle Versionsnummer an den Server, und wenn der was Neueres hätte, startet der Server den Upload, mit: https://github.com/esp8266/Arduino/blob/master/tools/espota.py Beides Teile vom normalen ESP8266-Arduino-Core.
super, dank euch. Ich dachte schon ich muss den Thread hier auch Minus machen, als der Kollege oben versucht hat lustig zu sein. Dann fange ich mit dem ArduinoOTA an.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.