Plugwise Smile P1 – Data uitlezen met scripts

data uitlezen

Hieronder vind je een aantal scripts om de data uit de PlugWise Smile te halen, dit is een XML dump welke je kan uitlezen en de waarden in een variabele te stoppen.

Info: Plugwise Smile P1 locatie data gegevens.


Firmware 2.0.6x

XML layout [SMILE IP]/core/modules:

Uitlezen met PHP

Resultaat:

 


Firmware 1.1.x en 1.2.x

XML layout [SMILE IP]/smartmeter/modules:

Uitlezen met PHP

Resultaat:

Uitlezen met Java

Wat heb je nodig?

1) jQuery

Heb je bijvoorbeeld een webserver (poort 80) dan kun je dus niet met portforwarding via je router de smile doorzetten omdat deze ook op poort 80 functioneert. Wel kun je dus via je webserver gegevens uit de smile lezen en deze via de browser laten zien (om maar iets te noemen).

Probleem met Javascript! (Java CORS)

Javascript wordt op de client (gebruiker) uitgevoerd, daarom is javascript tegenwoordig aan strikte policies verbonden: “same-origin policy”, zo mag Javascript geen informatie ophalen van externe bronnen tenzij dat op die server zelf is aangegeven dat het mag, in die zin heet dat “cross-origin resource sharing” oftewel CORS.
Dit is als je javascript gebruikt uiteraard een probleem om gegevens van een externe bron af te halen, en je niet altijd even de header kan aanpassen op de server.

Het is uiteraard een probleem om gegevens van de smile af te halen omdat deze als “externe bron” wordt gezien en je op de smile niet even de header kan aanpassen (CORS) in Nginx (webserver op de smile). er zijn truucjes voor!, in dit geval heb ik een PHP script geschreven om gegevens via javascript uit een externe bron te halen, daarom is dit script ook bedoelt om op een webserver te draaien.

Dit is de HTML pagina waar onder andere de javascripts worden geladen: index.html

En dit is het PHP bestand download.php waarmee we de XML dump van de smile afhalen:

Nu heb ik de javascript code gebruikt uit de smile, deze gebruikt de jQuery bibliotheek om een XML bestand te parsen, dus die moet je downloaden (niet de 1.9.x versie), samen met wat eigen inbreng van mijzelf is dit het javascript smiledata.js geworden:

Zet alle bestanden inclusief de jQuery bibliotheek in een folder op je webserver, als je dan je IP adres intikt dan worden de javascripts uitgevoerd en worden er gegevens uit de smile gelezen (kan even duren) en weergegeven op de pagina, dit ziet er ongeveer zo uit: