Repository navigation
Releases
v0.3.4 — het instelnetwerk is beveiligd
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
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.cging 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
statichoort te zijn, en losseprintf'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
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
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
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
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
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.