Plugwise – Firmware downloaden
Ik heb altijd zoiets van “ik moet een backup hebben als iets misgaat”, vooral met het experimenteren op een Linux systeempje is dit handig!, zo kun je weer een backup terugzetten als je iets verprutst hebt, dus ik heb even wat meer onderzoek gedaan hoe de Smile een firmware bestand download, en hoe je deze kan opslaan op je desktop computer.
Als je in het Adobe AIR (flash) van PlugWise zit te purren van en je exporteert alle bestanden en daarna zoek je in alle bestanden naar “firmware” of “update” dan zie je al gauw dat de firmwares opgeslagen zijn op dit adres:
https://update.plugwise.net/images/smile/1.2.8.img
Forbidden?
Maar het intikken van dit adres in je browser resulteert als gauw in een 403 pagina (verboden toegang):
Nu ik via SSH toegang heb tot de Smile, kan ik alle bestanden naar windows kopieren met PSCP (onderdeel van putty tools), na een zoekcommando “firmware” in de smile bestanden krijg ik veel hits, maar na wat logish denken (boeren verstand) is dit het LUA bestand waar het om gaat: \usr\bin\pwupgrade
Bij het openen van dit bestand zie je dat het om een BASH SHELL gaat, dus geprogrammeerd in Linux taal:
1 2 3 4 5 6 7 |
#!/bin/sh # # This is pwupgrade 1.1 # version 1.1 -- does check, download and install in a separate steps. # version 1.0 -- does download and install in a single step. # # download and install a firmware update. |
Dit bestand (oftewel commando) is dus direct uitvoerbaar op de smile!, laten we het eens intypen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pwupgrade 1.1 usage: /usr/bin/pwupgrade [OPTION] [COMMAND] where COMMAND is: check check for update at portal. download download the update announced by most recent 'check' install install the update that was 'download' and OPTION is: -s state: print the current state. This is any of * no_upgrade: no update is found yet. Next action: check * published: update details set in uci. Next action: download * downloading: update is being download. Wait. * downloaded: update is downloaded. Next action: install. * corrupt: downloaded failed. Next action: download. * installing: busy with sysupgrade. Wait. |
Je ziet een optie staan om te checken voor een update, dat maakt het volgende commando: “pwupgrade check”, dan gaan we eens uitproberen met het commando: pwupgrade check
1 2 3 4 5 6 7 8 9 10 11 |
root@smile_custom:/# pwupgrade check executing curl -# --cacert /etc/ssl/GlobalSign.cert --cert /etc/ssl/private/curl-cert.pem -o /tmp/pwupgrade//update-definition.txt "https://update.plugwise.net/check_update?moduleId=csdntrpf¤tVersion=1.1.9&productName=smile&moduleType=smile" ######################################################################## 100.0% Update announcement found: --------------- version: 1.2.8 src: https://update.plugwise.net/images/smile/1.2.8.img md5sum: 5749911cd7063741d77769ebbd498a80 description: (Scroll down for English text) Dit is de nieuwste versie van de Smile. Deze versie is robuuster bij fouten vanuit de slimme meter. Tevens kan deze versie samen met de Stretch in een app worden gebruikt door de licenties te koppelen.***This is the latest version of the Smile. This version is more robust to errors from the smart meter. Also, This version can be used in cooperation with the Stretch by merging two portal licenses into one. --------------- Newest firmware version 1.2.8 registered in uci |
Wat zien we hier?:
In het PAARS: het commando om een check uit te voeren of er nieuwe firmware aanwezig is.
In het ORANJE: Je ziet het linux commando: cURL (meer info hier) en dat er dus met “certificaten” en een “key” gewerkt wordt.
In het GROEN: Hier zie je de URL waar het firmware bestand wordt weggehaald.
Nou, laten we het eens proberen te downloaden!, het commando is dan: pwupgrade download , het resultaat:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
root@smile_custom:/# pwupgrade download Drop cache to free some memory Stop monit Stop portal_poller Stopping portal poller...done. Downloading upgrade image file. executing curl -# --cacert /etc/ssl/GlobalSign.cert --cert /etc/ssl/private/curl-cert.pem -o /tmp/pwupgrade//image-1.2.8.bin "https://update.plugwise.net/images/smile/1.2.8.img" ######################################################################## 100.0% root@smile_custom:/# cd tmp/pwupgrade root@smile_custom:/tmp/pwupgrade# root@smile_custom:/tmp/pwupgrade# ls image-1.2.8.bin update-definition.txt root@smile_custom:/tmp/pwupgrade# |
Wat zien we hier?:
In het PAARS: het commando om nieuwe firmware te downloaden (indien aanwezig).
In het ORANJE: Je ziet het Linux commando: CURL (meer info hier) en dat er dus met “certificaten” en een “key” gewerkt word om het bestand op te halen.
In het GROEN: Hier zie dat de firmware bestanden vanaf het internet gedownload worden in tmp/pwupgrade.
That’s it!, nu hebben we de firmware bestanden gedownload (niet geïnstalleerd), nu de taak om deze op je desktop computer te zetten voor “safe keepings”.
Dit kunnen we doen met PSCP, open een command scherm (CMD) in windows en voer het volgende in voor PSCP:
1 2 |
pscp.exe -pw SMILEWACHTWOORD -scp -p root@[SMILEIP]:/tmp/pwupgrade/image-1.2.8.bin C:\image-1.2.8.bin pscp.exe -pw SMILEWACHTWOORD -scp -p root@[SMILEIP]:/tmp/pwupgrade/update-definition.txt C:\update-definition.txt |
zo kopieer je het bestand: image-1.2.8.bin uit de smile van /tmp/pwupgrade/image-1.2.8.bin naar C:\ op je desktop, etc…
LET OP: Na het downloaden van de firmware en nadat je het gekopieerd hebt op je desktop, wis de bestanden op de smile in tmp/pwupgrade met het commando: rm /tmp/pwupgrade/*.*, als je namelijk nog iets gaat downloaden slaat je Smile op hol, omdat er geen (of weinig) beschikbare schijfruimte is!
Als je nu het BIN bestand opent zie je dat het een Linux header bevat:
Oude firmwares downloaden:
Oudere firmwares etc. kun je ook downloaden (als je immers het versienummer weet) direct met CURL, omdat we immers het commando weten is pwupgrade niet nodig om te downloaden:
CURL commando (uitvoeren op de smile):
1 |
curl -# --cacert /etc/ssl/GlobalSign.cert --cert /etc/ssl/private/curl-cert.pem -o /tmp/pwupgrade//image-[VERSIE].bin "https://update.plugwise.net/images/smile/[VERSIE].img" |
PSCP commando (uitvoeren op de desktop):
1 |
pscp.exe -pw [SMILEWACHTWOORD] -scp -p root@192.168.1.102:/tmp/pwupgrade/image-[VERSIE].bin C:\image-[VERSIE].bin |
Hier is een voorbeeld dat laat zien hoe je firmware download van de Stretch vanaf: https://update.plugwise.net
Wat heb je nodig?
De URL van de stretch firmware is iets anders, voorbeeld firmware v1.0.41 bestand voor Stretch 2.0:
https://update.plugwise.net/images/stretch-home/1.0.41.img
Ps. nu we het truucje kennen om Smile firmware te downloaden, kunnen we in principe elk bestand downloaden vanaf de Plugwise update server als we de certificaten maar met CURL gebruiken!
Dit is de code om de Smile firmware te downloaden (uitvoeren op de smile)
1 |
curl -# --cacert /etc/ssl/GlobalSign.cert --cert /etc/ssl/private/curl-cert.pem -o /tmp/pwupgrade//image-[VERSIE].bin "https://update.plugwise.net/images/smile/[VERSIE].img" |
Dus voor de Stretch 2.0 maakt dit:
1 |
curl -# --cacert /etc/ssl/GlobalSign.cert --cert /etc/ssl/private/curl-cert.pem -o /tmp/pwupgrade//image-[VERSIE].bin "https://update.plugwise.net/images/stretch-home/[VERSIE].img" |
Hier is een voorbeeld:
1 |
curl -# --cacert /etc/ssl/GlobalSign.cert --cert /etc/ssl/private/curl-cert.pem -o /tmp/pwupgrade//image-1.0.41.bin "https://update.plugwise.net/images/stretch-home/1.0.41.img" |
1 |
pscp.exe -pw [SMILEWACHTWOORD] -scp -p root@192.168.1.102:/tmp/pwupgrade/image-1.0.41.bin C:\image-1.0.41.bin |
Nu heb je een kopie van het firmwarebestand op de Desktop in C:\ staan, praktijkvoorbeeld:
Ps. Vergeet niet om de /tmp/pwupgrade leeg te maken nadat je het bestand op de desktop hebt gezet!
Linux commando: rm /tmp/pwupgrade/*.*
Firmware downloaden via een desktop computer met cURL en certificaten
Wat heb je nodig?
1) De certificaten
/etc/ssl/private/curl-cert.pem en
/etc/ssl/GlobalSign.cert van een Smile of Stretch 2.0.
2) Het programma cURL voor windows.
Zet de 2 certificaten in dezelfde folder als cURL, het commando om de firmware cvan de server te downloaden is dan:
1 |
curl -# --cacert GlobalSign.cert --cert curl-cert.pem -o plugwise_smile_firmware_[VERSIE].img "https://update.plugwise.net/images/smile/[VERSIE].img" |
1 |
curl -# --cacert GlobalSign.cert --cert curl-cert.pem -o plugwise_stretch20_firmware_[VERSIE].img "https://update.plugwise.net/images/stretch/[VERSIE].img" |
Praktijkvoorbeeld:
Crawler scripts
Hier zijn een paar Autoit3 script om diverse reeksen firmwares te downloaden vanaf de plugwise server.
1 2 3 4 5 6 7 |
For $versie_laag = 0 to 100 ; Plugwise Smile P1 2.0.xx firmware $bestandsnaam = "plugwise_smile_firmware_2.0." & $versie_laag & ".img" RunWait("curl -# --cacert GlobalSign.cert --cert curl-cert.pem -o " & $bestandsnaam & " " & Chr(34) & "https://update.plugwise.net/images/smile/2.0." & $versie_laag & ".img" & Chr(34), @ScriptDir, @SW_HIDE) If FileGetSize(@ScriptDir & "\" & $bestandsnaam) < 1000 Then FileDelete(@ScriptDir & "\" & $bestandsnaam) TrayTip ("PlugWise downloads", "v2.0." & $versie_laag, 3, 1) Next |
1 2 3 4 5 6 7 8 9 |
For $versie_hoog = 1 to 2 For $versie_laag = 0 to 100 ; Plugwise Smile P1 1.1.xx / 1.2.xx firmware $bestandsnaam = "plugwise_smile_firmware_1." & $versie_hoog & "." & $versie_laag & ".img" RunWait("curl -# --cacert GlobalSign.cert --cert curl-cert.pem -o " & $bestandsnaam & " " & Chr(34) & "https://update.plugwise.net/images/smile/1." & $versie_hoog & "." & $versie_laag & ".img" & Chr(34), @ScriptDir, @SW_HIDE) If FileGetSize(@ScriptDir & "\" & $bestandsnaam) < 1000 Then FileDelete(@ScriptDir & "\" & $bestandsnaam) TrayTip ("PlugWise downloads", "v1." & $versie_hoog & "." & $versie_laag, 3, 1) Next Next |
1 2 3 4 5 6 7 8 9 |
For $versie_hoog = 3 to 3 For $versie_laag = 0 to 100 ; Plugwise Smile P1 15.3.xx $bestandsnaam = "plugwise_smile_firmware_15." & $versie_hoog & "." & $versie_laag & ".img" RunWait("curl -# --cacert GlobalSign.cert --cert curl-cert.pem -o " & $bestandsnaam & " " & Chr(34) & "https://update.plugwise.net/images/smile/15." & $versie_hoog & "." & $versie_laag & ".img" & Chr(34), @ScriptDir, @SW_HIDE) If FileGetSize(@ScriptDir & "\" & $bestandsnaam) < 1000 Then FileDelete(@ScriptDir & "\" & $bestandsnaam) TrayTip ("PlugWise downloads", "v15." & $versie_hoog & "." & $versie_laag, 3, 1) Next Next |
1 2 3 4 5 6 7 8 9 |
For $versie_hoog = 0 to 3 For $versie_laag = 0 to 100 ; Plugwise Stretch 2.0 2.0.xx / 2.1.xx / 2.2.xx / 2.3.xx $bestandsnaam = "plugwise_stretch20_firmware_2." & $versie_hoog & "." & $versie_laag & ".img" RunWait("curl -# --cacert GlobalSign.cert --cert curl-cert.pem -o " & $bestandsnaam & " " & Chr(34) & "https://update.plugwise.net/images/stretch-home/2." & $versie_hoog & "." & $versie_laag & ".img" & Chr(34), @ScriptDir, @SW_HIDE) If FileGetSize(@ScriptDir & "\" & $bestandsnaam) < 1000 Then FileDelete(@ScriptDir & "\" & $bestandsnaam) TrayTip ("PlugWise downloads", "v2." & $versie_hoog & "." & $versie_laag, 3, 1) Next Next |