Skip to content

Releases

v0.3.4 — het instelnetwerk is beveiligd

Choose a tag to compare

@github-actions github-actions released this 05 Sep 14:21
df87548

Het instelnetwerk staat niet meer open

Tot nu toe maakte het apparaat bij het instellen een onbeveiligd wifinetwerk, en ging de
pagina waarop u uw gegevens intypt over gewoon HTTP. Uw wifi-wachtwoord en de API-sleutels waren
dus af te luisteren door iedereen binnen bereik.

Dat netwerk heeft nu WPA2 met een wachtwoord dat per apparaat verschilt.

U merkt er niets van. De QR-code op het scherm draagt het wachtwoord mee, dus uw telefoon komt
er nog steeds zonder typen op. Wie liever handmatig zoekt, leest naam en wachtwoord van het
scherm:

SETD-CB8B90   K7RQ4MZP

Ook de naam verschilt nu per apparaat. Het zijn de laatste drie tekens van het MAC-adres,
dezelfde die op de About-pagina onder Apparaat staan — zo weet u in een huis met twee
apparaten welk apparaat u instelt.

Het wachtwoord wordt bij het eerste gebruik gemaakt, blijft daarna hetzelfde, en overleeft een
fabrieksreset. Zo blijft kloppen wat er ooit op een sticker of in een administratie is beland.

Dit was bevinding C5 uit de review.

Twee dingen rechtgezet op het instelbeeld

  • De regel met naam en wachtwoord liep dwars door de QR-code heen. Hij stond aan de onderkant
    vastgezet en groeide daardoor omhoog zodra het twee regels werden.
  • De QR-code kon te klein worden als u eerst de About-pagina had bekeken; die maat werd niet
    gezet maar overgenomen.

Besloten: geen flash encryption en geen secure boot

Niet uit gemak, maar omdat de apparaten na de pilot terugkomen en volledig herbruikbaar moeten
zijn. Flash encryption in release mode maakt een apparaat blijvend onherprogrammeerbaar via de
kabel, en dat is elektronisch afval.

De volledige afweging staat in
docs/BESLUIT-c5-h5.md,
inclusief wat het besluit zou veranderen. Nieuw is ook
docs/SLEUTELS.md,
voor als het besluit ooit anders uitvalt.

Voor apparaten op v0.2.x

Zij halen deze versie zelf op, over de lucht, zonder kabel.

Voor wie het apparaat gebruikt:
docs/handleiding.md.

v0.3.3 — beter leesbaar, en opgeruimd

Choose a tag to compare

@github-actions github-actions released this 05 Sep 12:54
c393aad

Op het scherm

De beelden zeggen nu dat het over de groep gaat, en niet over uw eigen huis:

Was Wordt
Energie over Energie over in de groep
Energie inkopen Energie inkopen voor groep

Het vermogen staat in een veel groter lettertype — Montserrat 36 tegen 14 — en lager in beeld,
zodat het van een paar meter afstand te lezen is.

Ernaast staat een pijl: omhoog bij een overschot, omlaag bij een tekort, aan de kant waar hij
heen wijst. Dat is de tweede manier om te zeggen welke kant het op gaat. Kleur is de eerste, en
die werkt niet voor iedereen: bij rood-groen kleurenblindheid is groen tegenover geel het enige
verschil tussen "over" en "inkopen".

Onder de motorkap

De hele L-rij van de review is opgeruimd:

  • L4 Een LICENSE-bestand: alle rechten voorbehouden, met Espressif's dns_server.c
    uitgezonderd
  • L5 De pagina's van het portaal staan niet langer als tekst in de C-code maar in main/web/.
    wifi_web.c ging van 1069 naar 799 regels
  • L6 Zeven keer hetzelfde JSON-parseerblok werd een tabel met één lus
  • L7, L8 Dode code weg, en een URL die op twee plekken stond nog op één
  • L11, L12 Een globale die static hoort te zijn, en losse printf's die drie lege regels
    vóór elk antwoord in de log zetten

Daarmee zijn 41 van de 47 bevindingen dicht. Open blijven alleen C5 (het
provisioning-netwerk is open) en H5 (credentials liggen leesbaar in flash) — twee besluiten
over het productieproces die vóór de eerste serie horen te worden genomen.

Voor apparaten op v0.2.x

Zij halen deze versie zelf op, over de lucht, zonder kabel.

Voor wie het apparaat gebruikt:
docs/handleiding.md.

v0.3.2 — een kapotte uitgave kan het apparaat niet meer vastdraaien

Choose a tag to compare

@github-actions github-actions released this 05 Sep 09:23
6449b84

Deze versie beschermt het apparaat tegen een uitgave die niet blijft staan — ook tegen een
toekomstige uitgave van onszelf.

Wat er mis kon gaan

Een versie die opstart maar geen netwerk vindt, zet het apparaat vast. De proeftijd loopt nooit
af, en het apparaat valt niet vanzelf terug: de proeftijd markeert alleen goed, nooit fout,
en herstart nooit. Pas als iemand de stekker eruit trekt valt het terug op de vorige versie — en
die installeert vijf minuten later dezelfde kapotte uitgave opnieuw.

Elke stroomonderbreking kocht zo ongeveer vijf werkende minuten. Een fabrieksreset maakte het
erger: die wist de gegevens, niet de updatelogica.

Wat deze versie doet

Vóór de herstart schrijft het apparaat op welke versie het installeert. Komt bij de volgende
start iets anders op, dan krijgt die versie een streep. Bij de tweede streep wordt zij
overgeslagen
, met een regel in de log die zegt waarom.

Niet bij de eerste: een prima versie zakt door haar proeftijd als de router toevallig uit staat,
en die voor altijd weigeren zou een ergere fout zijn dan de fout die we voorkomen.

Dit staat in een eigen plek in de opslag die de fabrieksreset niet wist. Een hogere versie
komt er gewoon door, dus een reparatie bereikt het apparaat altijd nog.

Zie H16 in
docs/REVIEW.md
en "De lus die nooit mag ontstaan" in
docs/OTA.md.

Ook nieuw

docs/NVS.md
beschrijft wat het apparaat in flash bewaart en welke regels gelden als die indeling verandert.
De kern: een apparaat kan lang offline staan en in één sprong van v0.3.2 naar veel later gaan,
dus een migratie is een keten van stappen die stuk voor stuk gelopen worden — en er wordt
toegevoegd, nooit verwijderd.

Voor apparaten op v0.2.x

Zij halen deze versie zelf op, over de lucht, zonder kabel.

Voor wie het apparaat gebruikt:
docs/handleiding.md.

Nog steeds open, en bewust: C5 (het provisioning-netwerk is open) en H5 (credentials
liggen leesbaar in flash).

v0.3.1 — de basis, met de terugval gerepareerd

Choose a tag to compare

@github-actions github-actions released this 05 Sep 08:19
0ac940f

Gebruik deze versie en niet v0.3.0.

Waarom

v0.3.0 kopieerde bij het bijwerken de wifigegevens naar de nieuwe indeling met drie slots, en
wiste daarna de oude sleutels. Het bijwerken zelf ging goed. Maar een apparaat dat over de
lucht bijwerkt houdt de oude versie in zijn andere slot, en zakt de nieuwe versie door de
proeftijd, dan start die oude weer op — en die zoekt naar sleutels die er niet meer zijn.
Portaal aan, apparaat offline, iemand moet ernaartoe met een telefoon.

Dat is precies verkeerd om: de terugval bestaat om een apparaat te redden als een nieuwe versie
stuk is.

v0.3.1 laat de oude sleutels staan en houdt ze bij: het netwerk dat het laatst werkte staat
er altijd onder. Oudere firmware vindt daardoor een netwerk dat het kort geleden nog deed.

Zie H15 in
docs/REVIEW.md.

Voor apparaten op v0.2.x

Zij halen deze versie zelf op, over de lucht, zonder kabel. Vijf minuten na het opstarten en
daarna elk uur; wie niet wil wachten drukt op Nu bijwerken op de About-pagina.

De rest van deze reeks

v0.3.x is de basis: de toestand van de gemeenschap met de hoeveelheid in kW, instellen via een
portaal met QR-code, drie onthouden wifinetwerken gekozen op basis van een scan, netwerken
beheren en vergeten, bijwerken over de lucht met terugval, en een statusscherm.

Voor wie het apparaat gebruikt:
docs/handleiding.md.

Nog steeds open, en bewust: C5 (het provisioning-netwerk is open) en H5 (credentials
liggen leesbaar in flash). Beide raken het productieproces en zijn na uitlevering niet meer aan
te zetten.

v0.3.0 — vervangen door v0.3.1

Choose a tag to compare

@github-actions github-actions released this 05 Sep 07:44
4b82fed

Gebruik deze versie niet. Zij wist bij het bijwerken de wifisleutels van de oude indeling.
Zakt de nieuwe versie daarna door haar proeftijd, dan valt het apparaat terug op firmware die
zijn netwerk niet meer kan vinden. Zie H15 in
docs/REVIEW.md.

Neem v0.3.1.


Deze versie is de basis: de eerste die doet wat de klant als eerste vroeg.

  • De toestand van de gemeenschap op het scherm, met de hoeveelheid in kW erbij
  • Instellen via een portaal op het apparaat, met een QR-code om erop te komen
  • Drie onthouden wifinetwerken, gekozen op basis van een scan
  • Netwerken beheren en vergeten vanuit het portaal
  • Bijwerken over de lucht, met terugval naar de vorige versie als het misgaat
  • Een statusscherm dat zegt wat het apparaat weet, zonder seriële kabel

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 01 Sep 19:22
8415ac3

Firmware v0.2.1 for the Energy Owl.

Devices that run this firmware or newer install this release by
themselves, within an hour of publication.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 19:07
e5ee0f3

Firmware v0.2.0 for the Energy Owl.

Devices that run this firmware or newer install this release by
themselves, within an hour of publication.