Umsetzen von OTA

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

pafra
Beiträge: 224
Registriert: 16.05.2018, 21:13
Hat sich bedankt: 8 Mal
Danksagung erhalten: 34 Mal

Umsetzen von OTA

Beitrag von pafra » 24.05.2019, 14:33

Hallo zusammen,

ich möchte gerne mal das Update over the air ausprobieren.

Dazu habe ich mir jetzt mal diese Infos durchgelesen:

https://github.com/alexreinert/Asksin_OTA_Bootloader
https://github.com/pa-pa/AskSinPP/tree/ ... loader/avr

Bevor ich mich jetzt direkt an die Umsetzung mache, hätte ich vorab ein paar Fragen, ob das (so wie ich mir das jetzt gerade vorstelle) auch überhaupt funktioniert.

Mal angenommen ich möchte das bei einem HB-UNI-Sen-CAP-MOIST machen, wäre der Ablauf dann so korrekt?
Die Hardware wäre ein normaler Arduino Pro Mini 3.3V/8MHz, so wie man ihn kaufen kann.

1. Ich baue mir einen Bootloader mit makeota.html:
Ich lade mir die makeota.html herunter und öffne sie unter Windows mit einem Browser.
Eingaben:
MCU Type: ATmega328
Device Model - a 4 digit hex number: F311
HM ID - a 6 digit hex number: F31100
HM-Serial - 10 characters: JPCAPM0000
Config String - max. 32 digit hex number: --> Was muss ich hier angeben?
Firmware: lasse ich leer

Dann klicke ich auf "Create Bootloader" und das File wird gespeichert.

2. Frisch gebauten Bootloader mittels avrdude auf den Arduino flashen

3. HB-UNI-Sen-CAP-MOIST.ino mit Arduino IDE auf den Arduino flashen
// #define USE_OTA_BOOTLOADER auskommentieren

Frage:
Ist die Anpassung hier im Sketch dann überhaupt noch erforderlich?

Code: Alles auswählen

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
  {0xF3, DEVICE_MODEL, 0x00},  // Device ID
  "JPCAPM0000",                // Device Serial
  {0xF3, DEVICE_MODEL},        // Device Model
  0x10,                        // Firmware Version
  as::DeviceType::THSensor,    // Device Type
  {0x01, 0x01}                 // Info Bytes
};
4. Einschalten und geht?


Nun zum nächsten Schritt, dem Erstellen des Update-Files für die CCU:

1. Firmware im hex-Format:
Da hänge ich jetzt gerade etwas.
Lt. der Beschreibung von pa-pa brauche ich dafür eine firmware im hex-format.
Wo bekomme ich die her?

2. Hex-Firmware in *.eq3 konvertieren:
Auch hier lt. Beschreibung von pa-pa Aufrufen der prepareforota.sh:
EDIT: ich clone das Projekt von github auf einen Raspberry.
Dann Aufruf der prepareforota.sh (vorher chmod 755) --> Frage: Was ist mit den *.exe, die mit dem Batchfile aufgerufen werden? Vermutlich auch chmod 755?

prepareforota.sh path_to_firmware.hex

3. Erstellen des tar.gz Files lt der Beschreibung von pa-pa:
Datei "changelog.txt" erstellen --> Was darf da rein und in welchem Format? Einfach irgendetwas rein schreiben?

Datei "info" erstellen.
Inhalt:
TypeCode=62225
Name=HB-UNI-Sen-CAP-MOIST
CCUFirmwareVersionMin=2.27.0
FirmwareVersion=1.1 --> Frage: Was wird dann später in der CCU angezeigt? Das was hier angegeben ist, oder das was im Sketch angegeben war?

Dann das Zip "fwupdate_1.1.tar.gz" erstellen mit folgenden Dateien:
fwupdate_1.1.tar.gz
changelog.txt
info

4. Das Update-File in der CCU hochladen und anschießend updaten.


Jetzt die Fragen aller Fragen:
Funktioniert das so?

Gruß
Franz

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: Umsetzen von OTA

Beitrag von papa » 24.05.2019, 15:00

Ich versuche mal kurz zu kommentieren.

Schritt 1 -> alles i.O.
Schritt 2 -> alles i.O.
Schritt 3 -> i.O. - die Werte für Device ID, Device Serial und Device Model im Sketch werden später nicht mehr beachtet.

Jetzt die Updatefile Schritte

Schritt 1 -> Wo das Hex-File liegt, kann man in der Arduino Textkonsole sehen. Bei neueren Versionen gibt es auch einen extra Menupunkt, um das Hex-File zu erhalten. Ich nutze die ArduinoIDE nicht - kann deshalb auch nicht viel mehr sagen. http://www.theengineeringprojects.com/2 ... duino.html

Schritt 2 -> Bitte prepota.sh verwenden. Das braucht auch keine anderen Programme. Ist aber etwas lahm.

Schritt 3 - Ab jetzt bin ich als FHEM Nutzer raus. Den CCU-Kram muss jemand anders erklären.

Die Version sollte in der Firmware und im CCU-Updatefile auf jeden Fall gleich sein - denke ich.
Anfragen zur AskSin++ werden nur im Forum beantwortet

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Umsetzen von OTA

Beitrag von jp112sdl » 24.05.2019, 15:27

Firmwareversion Sketch sollte Firmware Version im CCU-Update-File sein, sonst wird immer wieder das Update angeboten.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

pafra
Beiträge: 224
Registriert: 16.05.2018, 21:13
Hat sich bedankt: 8 Mal
Danksagung erhalten: 34 Mal

Re: Umsetzen von OTA

Beitrag von pafra » 24.05.2019, 15:55

Hallo Jerome,
Hallo papa,

vielen Dank für das Feedback.
Dann werde ich das mal ausprobieren.

Nur noch eine Frage zu Schritt 1:
Config String - max. 32 digit hex number: --> Was muss ich hier angeben?

Gruß
Franz

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: Umsetzen von OTA

Beitrag von papa » 24.05.2019, 20:48

Das kann einfach leer bleiben. Man kann hier dem Sketch noch zusätzliche Config-Daten aus dem Bootloader mitgeben.
Anfragen zur AskSin++ werden nur im Forum beantwortet

pafra
Beiträge: 224
Registriert: 16.05.2018, 21:13
Hat sich bedankt: 8 Mal
Danksagung erhalten: 34 Mal

Re: Umsetzen von OTA

Beitrag von pafra » 27.05.2019, 12:37

Alles klar.

Ich hab das jetzt am Wochenende mal probiert.
Kann es sein, dass man mit dem Bootloader von makeota.html die Platine nicht seriell über einen FTDI-Adapter den Sketch aufspielen kann?
Hab's mehrfach probiert, allerdings ohne Erfolg.
Schlussendlich hab ich den Sketch dann mit dem ISP rauf geladen.

Was komisch war ist, dass ich dann aber anschließend über die Serielle ganz normal die Ausgaben vom Sketch bekommen habe.

Gruß
Franz

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: Umsetzen von OTA

Beitrag von papa » 27.05.2019, 12:45

Das ist korrekt. Der serielle Standard-Bootloader wird ja durch den OTA-Bootloader ersetzt. Dann kann man auch nicht mehr seriell Flashen.
Wenn Du per ISP programmierst, dann ist aber auch der Bootloader wieder weg. Zumindest ist die Checksumme überschrieben und beim nächsten Reset wird die Firmware nicht gestartet. Bootloader und Fimrware können aber zusammen per makeota.html generiert und beides per ISP geflasht werden. Sonst musst Du mit dem OTA-Bootloader auch gundsätzlich per OTA updaten/flashen.
Anfragen zur AskSin++ werden nur im Forum beantwortet

pafra
Beiträge: 224
Registriert: 16.05.2018, 21:13
Hat sich bedankt: 8 Mal
Danksagung erhalten: 34 Mal

Re: Umsetzen von OTA

Beitrag von pafra » 27.05.2019, 20:54

Hallo papa,

vielen Dank für die Info.
Das erklärt, dass ich seriell was bekommen habe.

Eine Frage:
Was passiert, wenn ich es anders herum mache?
Also zuerst den Sketch via ISP hoch laden und dann den Bootloader mit avrdude schreiben?
Geht das?

Gruß
Franz

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: Umsetzen von OTA

Beitrag von papa » 27.05.2019, 21:11

Nein - die Checksumme wird nur beim prepota.sh berechnet und in Image eingetragen. Du kannst aber in der makeota.html Firmware und Bootloader zusammen als ein Hex-File erzeugen.
Anfragen zur AskSin++ werden nur im Forum beantwortet

pafra
Beiträge: 224
Registriert: 16.05.2018, 21:13
Hat sich bedankt: 8 Mal
Danksagung erhalten: 34 Mal

Re: Umsetzen von OTA

Beitrag von pafra » 27.05.2019, 21:12

Alles klar.
Vielen Dank für die Info.

Gruß
Franz

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“