> For the complete documentation index, see [llms.txt](https://mrwheel-docs.gitbook.io/dsmrloggerapi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mrwheel-docs.gitbook.io/dsmrloggerapi/firmware/firmware-flashen.md).

# Firmware Flashen

Versie 4 van de DSMR-logger hardware maakt gebruik van een ESP-12 processor. Deze processor zit op de printplaat van de DSMR-logger gesoldeerd en moet dus, op de printplaat, geflashed worden.

Om de firmware naar de **DSMR-logger Versie 4** te kunnen flashen moet deze eerst voor deze versie van de DSMR-logger geschikt worden gemaakt.

Dit doe je door in de ArduinoIDE de **`#define`**'s in het eerste tab-blad aan te passen.

```
/******************** compiler options  ********************************************/
#define USE_UPDATE_SERVER         // define if there is enough memory and updateServer to be used
//  #define HAS_NO_SLIMMEMETER        // define for testing only!
#define USE_MQTT                  // define if you want to use MQTT
#define USE_MINDERGAS             // define if you want to update mindergas (also add token down below)
//  #define USE_SYSLOGGER             // define if you want to use the sysLog library for debugging
//  #define SHOW_PASSWRDS             // well .. show the PSK key and MQTT password, what else?
/******************** don't change anything below this comment **********************/

```

Vervolgens moeten de `Boards` settings als volgt worden ingevuld:

|   | Instelling        | Waarde                                                     |
| - | ----------------- | ---------------------------------------------------------- |
|   | Board             | "Generic ESP8266 Module"                                   |
|   | Upload Speed      | "115200"                                                   |
|   | CPU Frequency     | "80MHz" (of 160MHz)                                        |
|   | Flash Frequency   | "40MHz"                                                    |
|   | Flash Mode        | "DIO" of "DOUT (compatible)"                               |
|   | Flash Size        | "4MB (**FS: 2MB** OAT:\~1019KB)" **<<== let op! 2MB**      |
|   | Crystal Frequency | "26MHz"                                                    |
|   | Reset Method      | "None"                                                     |
|   | Debug Port        | "Disabled"                                                 |
|   | Debug Level       | "None"                                                     |
|   | IwIP Variant      | "v2 Lower Memory"                                          |
|   | VTables           | "Flash"                                                    |
|   | Exeptions         | "Disabled"                                                 |
|   | Builtin Led       | "2"                                                        |
|   | Erase Flash       | <p>"Only Sketch"<br>(First Time: "All Flash Contents")</p> |
|   | Port              | Bedraad: "Serial Port"                                     |

{% hint style="success" %}
Let op!\
Als je de **Flash Mode** veranderd t.o.v. wat je gebruikt hebt voor de firmware die nu in de DSMR-logger zit en je doet een OTA update van de firmware, dan zal de Flash Mode pas veranderen na een power cycle!
{% endhint %}

#### Firmware Bedraad Flashen <a href="#firmware-bedraad-flashen" id="firmware-bedraad-flashen"></a>

{% hint style="danger" %}
Pas op!\
Koppel de DSMR-logger los van de Slimme Meter vóórdat je de DSMR-logger op de programmer aansluit!!
{% endhint %}

Sluit de [USB->ESP12 programmer](https://mrwheel.github.io/DSMRloggerWS/hardware_V4_Programmer/) aan op de `Program`-header van de *DSMR-logger v4*

1. Druk de **`FLASH`** knop in en houd deze ingedrukt
2. Druk op de **`RESET`** knop
3. Laat de **`RESET`** knop los
4. Laat de **`FLASH`** knop los

De *DSMR-logger v4* staat nu in Flash-mode en blijft in die mode tot er gegevens vanaf de programmer naar de DSMR-logger zijn overgebracht óf tot je nog een keer op de **`RESET`** knop drukt.

Vergeet niet in de Arduino IDE de **`Port`** te selecteren waarop je de USB->ESP12 programmer hebt aangesloten en druk op het *Compile and Upload* icoon.

![](https://mrwheel.github.io/DSMRloggerWS/img/CompileAndUploadIcon.png)

#### Firmware *Over The Air* Flashen <a href="#firmware-over-the-air-flashen" id="firmware-over-the-air-flashen"></a>

Bij het *Over The Air* flashen van de firmware of **`data`**-map kan (moet) de DSMR-logger v4 gewoon op de Slimme Meter aangesloten blijven.

Alle instellingen voor de DSMRloggerAPI firmware blijven gelijk aan de bedrade methode van flashen.

Vervolgens moet je niet op het   **`Compile & Upload`**-Icoon   ![](https://mrwheel.github.io/DSMRloggerWS/img/NotCompileAndUploadIcon.png) &#x20;

klikken maar in he&#x74;**`[Sketch]`**&#x64;rop-down menu de keuze **`Upload Compiled Binary`** selecteren.

![](https://mrwheel.github.io/DSMRloggerWS/img/ExportCompiledBinary.png)

De firmware wordt nu gecompileerd en in de Arduino Sketch map waar de DSMRloggerAPI firmware ook staat neergezet. Het bestand heeft de extensie **`.bin`**.

Als de firmware gecompileerd is klik je op de DSMR-logger pagina op het ![](/files/-Mbp69KHs5oJRWCGK3eE) icoontje.

![](/files/-MbkeItjeinXGpmfLN7T)

In de FSmanager klik je op de knop **`[Update Firmware]`**

Er verschijnt nu een scherm waarin je een firmware bestand (de naam eindigt op **`.bin`** met ergens in de naam ook **`.ino.`**) kunt kiezen door op de bovenste knop **`[Choose File]`** te klikken.

![](/files/-Mboz9_rZEImzS2KgPu6)

Selecteer uit het **`popUp scherm`** dat nu verschijnt het binary file dat je wilt uploaden ..

![](/files/-M2DRevueAP3y9PTSP_Q)

.. klik op **`[Choose]`** (of **`[Open]`**) en daarna op de knop **`[Flash Firmware]`**&#x20;

{% hint style="danger" %}
Let op!\
De firmware heeft áltijd "**.ino.**" in de naam en eindigt áltijd op "**.bin**"!
{% endhint %}

![](https://mrwheel.github.io/DSMRloggerWS/img/DSMR-FlashWait4Reboot.png)

Na enige tijd krijg je de melding dat de upload is geslaagd en dat de DSMR-logger opnieuw opstart.

{% hint style="info" %}
Let op!\
Het komt soms voor dat het scherm niet automatisch ge-refreshed wordt. Klik in dat geval, na ongeveer 3 minuten, op de tekst "*hier*"\
\
&#x20;     *Als het lijkt of er niets gebeurd, wacht dan ongeveer drie minuten en klik daarna **hier***.\
\
Als de verbinding met de server vóór die tijd verbroken wordt klik dan op de \[back] knop van de browser waarna de tekst alsnog (weer) verschijnt. Klik nu op ***hier*** om de DSMRloggerAPI hoofd pagina opnieuw te laden.
{% endhint %}
