PRTG Edimax SP2101W

Verbrauche zu müssen und zu schalten ist ein interessantes Thema, nicht nur in der Hausautomatisation oder Solarsteuerung, sondern auch bei der Überwachung von Servern und notfalls auch zur Fernschaltung. Es gibt verschiedene Ansätze, z.B. Netzwerkdosen mit Ethernet oder z.B. HomeMatic. Interessant ist aber auch eine Netzwerkdose, die den Strom misst und per WIFI kommunizieren kann. Durch den Preisverfall kosten solche Geräte kaum mehr als 40€ und sind damit schon viel billiger als der Einbau einen S0-Zwischenzähler mit Messerfassung.

Hardware

Als Beispiel bin ich hier auf den Edimax 2101W gestoßen, dem Nachfolger des SP1101W, weil in einem Forum von ELV (siehe Weitere Links) die API beschrieben wurde, die sehr nach REST und SOAP aussieht. Und wer natürlich eine Management-System hat, welches per IP die Daten abfragt, kann damit auch aktiv das System direkt schalten.

Generell muss man bei all diesen Geräten etwas sensibel sein. Die Kunden scheinen zu erwarten, dass die Ansteuerung per Smartphone auch "unterwegs" funktioniert. Dazu bedienen sich alle Produkte einem Cloud Service, zu dem sich dann auch das Smartphone verbindet. Sie sicher das bezüglich der Steuerung (Ein/Aus) und der Zugriff auf die gemessenen Daten durch Dritte ist, ist ebenso fraglich wie die Funktion nach Abschalten des Cloud Dienstes (Cloud - Abruptes Ende)

Die komplette Konfiguration erfolgt leider nur in der App und nicht über eine Webseite und auch nach der Integration in das Haus WLAN gibt es keine dokumentierte API zum Auslesen mit anderen Programmen. Sehr unschön. Wenn in ein paar Jahren die App nicht mehr funktioniert, hat man Elektronikschritt im Haus.

Das Edimax-Gerät scheint z.B. ohne Internet nicht zu starten.

Einrichtung

Achtung: Ehe Sie das Gerät in Betrieb nehmen, sollten Sie den gesamten Artikel gelesen haben. das SP2101W spricht ungefragt mit einem Cloud-Service und öffnen Ports. Wenn Sie ihren Stromzähler nicht von "unterwegs" kontrollieren oder schalten wollen, und andere es auch nicht sollen, dann konfigurieren Sie ihren Router mit den entsprechenden Filtern.

Ich habe also ein Gerät bestellt, ausgepackt, eingesteckt und geschaut. Die erste Installation erfolgt wieder wie bei den meisten der WiFi-Geräte, dass Sie ein eigenes offenen WLAN aufspannen, mit dem man sich per Smartphone (IOS oder Android) und einer App verbindet. Damit ist eine erste Steuerung und Messing möglich und natürlich die KonfigurationsÄnderung, damit das Gerät sich als Client ein ein vorhandenes WLAN einbuchen kann. Leider ist die Ersteinrichtung aktuell einfach nur per APP möglich. eine "Browseroberfläche" oder Windows konnte ich für das Gerät nicht finden. Hoffentlich gibt es also die App und die Mobilgeräte "lange" genug, damit aus so einen Gerät nicht ganz schnell Elektronikschrott wird. Da hilft es auch nicht, wenn Edimax Teile des Code unter GPL veröffentlich hat. Ein kleiner Webserver zur Konfiguration wäre sicher universeller.

Sie verbinden also ihr Smartphone mit der installierten App mit dem temporären Wifi-Netzwerk "EdiPlugSetup", welches ihnen dann eine IP-Adresse gibt. Die App kann so das Gerät finden und die Konfiguration abfragen und hinterlegen. Danach bootet das Device und sie haben einen neuen Teilnehmer in ihrem WLAN. Bei einer Firma oder abgesicherten Umgebung sollte das WLAN natürlich nicht grade das allgemeine WLAN sein sondern ein z.B. per WPA2 gesichertes "Management"-WLAN ohne unsichere Clients oder gar Gäste. Entsprechende AccessPoints zum Aufspannen eines solchen kleinen WLAN sind auch für kleines Geld zu haben und die meisten Enterprise-APs können eh mehrere SSIDs.

Ich habe mir erst mal nicht die Mühe gemacht, auch die "Setupphase" des Geräts zu analysieren. Vielleicht hat es einen Zugang per Browser, vielleicht sind es aber auch proprietäre HTTP-Post oder UDP-Pakete. Das hebe ich mir für später oder einen Azubi als Aufgabe aus. Ich gehe in der Folge davon aus, dass das SP2101W im LAN erreichbar ist.

Ich habe aber mit der App auch mal ohne LAN-Verbindung über Internet versucht, das SP2101W anzusprechen, was aber nicht möglich war. Die App spricht direkt mit dem SP2101W und nutzt nicht einen Cloud Dienst als Relais: Aber die Box kommuniziert dennoch mit externen Systemen, was nicht so schön ist, wie die nachfolgende Analyse zeigt.

Firmware Update

Bei der heute schnelllebigen Zeit ist es immer mal sinnvoll zu schauen, ob man die aktuelle Firmware auf dem Gerät hat. Edimax versteckt das Update aber ziemlich gut. Auf den offiziellen Download-Seiten was nichts zu finden und erst eine Google-Suche nach "FWUpgradeTool" hat den Link geliefert.

Es mag für "Privatkunden" einfach sein, eine EXE zu starten, die im LAN nach allen vorhandenen Ediplugs schaut und diese einfach aktualisiert. Eine Übersicht, welche Firmware aber gerade aktuell ist und Release Notes mit den Änderungen sind aber Fehlanzeige.

Schnüffeln und Suchen

Mein Ziel war es ja, diese Gerät auch von einem PC aus auszulesen, um die Verbrauchswerte anderweitig zu erfassen. Also galt es z-B. über die Fritz!Box einen Mitschnitt anzufertigen (unter http://fritz.box/html/capture.html können sie den Mitschnitt starten und dann mit WireShark anschauen. Ich habe die Box auf der WLAN-Schnittstelle "AP2 (2.4 GHz, ath0) - Schnittstelle 0" meiner Fritz!Box 7390 erwischt. Die Pakete habe ich dann über den Filter "wlan.addr == 80:1f:02:fa:71:0d" ausgefiltert.

Dabei sind dann mehrere Verbindungen aufgefallen:

Ich habe dann im Trace die Verbindungen im zeitlichen Ablauf gesucht und analysiert:

  • 192.168.178.1:53/UDP
    Das erste Lebenszeichen von der Box ist eine DNS-Abfrage. Ich vermute fast, dass so einfach geprüft wird, ob eine Internet-Verbindung möglich sein könnte.
  • 173.194.113.17:80/TCP (fra02s19-in-f17.1e100.net)
    Dann wird eine TCP-Verbindung zu einem Host aufgebaut, ohne dass aber Daten übertragen werden.
    Diese letze Verbindung besteht nur aus einem TCP-Handshake und Abbau ohne dass Daten übertragen wurden
  • 122.248.252.67:8765/UDP (ec2-122-248-252-67.ap-southeast-1.compute.amazonaws.com)
    Dann baut das Gerät eine UDP-Verbindung auf, auf die 15 Antworten a 700 Bytes kommen.

    Aus den Daten kann ich nichts auslesen, was das sein könnte. Anscheinend löst die Box die Adresse nicht per DNS auf.
  • DNS-Queries
    Es scheint so, als ob das SP2101W sich noch die uhrzeit holt und dann doch tatsächlich auch noch eine Anfrage auf ein Edimax-System macht

    Wenn man danach sucht, dann findet man sehr wohl diese Webseite, um z.B. eine Edimax Kamera anzuzeigen. Ein Zugriff auf http://801f02fa710d.myedimax.com wird dann auf http://www.myedimax.com/Webindex/Webviewer.php?ID=801f02fa710d umgeleitet. Angezeigt wird diesbezüglich aber nichts.

Das ist aber dennoch ein Hinweis mal zügig das "Default Kennwort" von "admin" und "1234" zu ändern. Ich weiß nicht, wie "sicher" dennoch der Zugriff ist, denn es wäre ein leichtes auf der Webseite ein Zertifikat für "*.myedimax.com" zu nutzen. So aber aber wird nichts verschlüsselt. Daher habe ich der Steckdose in der Fritz!Box erst mal eine statische IP-Adresse gegeben und den Internet Zugriff abgebunden.

  • 255.255.255.255:65422/UDP (und auch andere Ports)
    Über diesen Broadcast scheint das Gerät Daten zu senden, wer auch immer sie hören möchte

    Die Information ändert sich manchmal und auch der Zielport scheint immer mal wieder anders zu sein. Die Nummer im den Daten entspricht aber genau der Portnummer beim UDP. Vielleicht lauscht der Empfänger einfach auf UDP-Broadcasts und fischt sich den Ports raus.

Aber auch dies würde ich nicht gerade als "sicher" ansehen, wenn ein Device auch ohne Verbindung eines Clients per UDP-Subnetzbroadcast unverschlüsselt Informationen verteilt.

  • 122.248.234.231:8767/TCP (ec2-122-248-234-231.ap-southeast-1.compute.amazonaws.com)
    Eine zweite Verbindung in die Cloud. Diesmal per TCP und nicht wirklich was in den Daten zu erkennen.
  • 192.168.178.23:10000/HTTP
    Das ist eine Verbindung der App auf dem Smartphone mit der Box. Diese ist unverschlüsselt und sieht sehr nach einem, HTTP-Interface aus, wenngleich nicht auf Port 80 sondern 10.000

    Es ist sicher nicht schwer hier das Default Kennwort zu extrahieren. Aus "YWRtaW46MTIzNA==" wird lesbar ein "admin:1234".
    Ein einfacher HTTP-GET auf diese Adresse liefert aber keine Daten oder HTML-Seite

Von allen Verbindung ist eigentlich nur eine Verbindung, die per HTTP auf Port 10.000 für die weitere Verwendung interessant. Allerdings finde ich es schon etwas nervig, wenn ein Gerät ohne Angabe von Gründen nach extern kommuniziert und eventuell sogar Daten dort bereitstellt, die man allein über die MAC-Adresse wieder auslesen könnte. Die MAC-Adresse ist ja kein "Geheimnis". Insofern habe ich meinen DSL-Router derart konfiguriert, dass dieses Gerät nicht ins Internet darf.

Ich habe noch einige weitere Pakete mitgeschnitten, z.B. wenn ich auf der App einen "Zeitplan" anschaue oder die historischen Daten abrufe. Anscheinend speichert der SP2101W all diese Daten selbst und sind auch  ohne Cloud abfragbar. für mein Projekt hier ist das aber nicht weiter von Belang.

Steuerung per HTTP-Post

Ich habe dann mir wieder per Netzwerkmittschnitt die unverschlüsselten Pakete und Anfragen angeschaut. Anscheinend setzt der Client immer nur HTTP-PORT-Pakete ab, in denen die Basic Authentication per Default der Benutzername "admin" und das Kennwort "1234" übergeben werden. Das bekommen wir auch per PowerShell einfach hin. Als Payload des Post ist eine XML-Datei vorzusehen, bei denen ich folgende Daten gefunden habe.

Ein/Aus-Schalten 

  • Einschalten der Box

<?xml version="1.0" encoding="utf-8"?>
<SMARTPLUG id="edimax">
  <CMD id="setup">
    <Device.System.Power.State>ON</Device.System.Power.State>
  </CMD>
</SMARTPLUG>

  • Ausschalten der Box

<?xml version="1.0" encoding="utf-8"?>
<SMARTPLUG id="edimax">
  <CMD id="setup">
    <Device.System.Power.State>OFF</Device.System.Power.State>
  </CMD>
</SMARTPLUG>

Hierbei liefert die Box dann einfach ein "OK" zurück

<?xml version="1.0" encoding="UTF8"?>
<SMARTPLUG id="edimax">
  <CMD id="setup">OK</CMD>
</SMARTPLUG>

Aktuellen Zustand abfragen

Wenn ich nicht schalten sondern nur den Zustand abfragen will, dann ist das kein "Setup" sondern ein "get".

<?xml version="1.0" encoding="utf-8"?>
<SMARTPLUG id="edimax">
  <CMD id="get">
    <Device.System.Power.State></Device.System.Power.State>
  </CMD>
</SMARTPLUG>

Hierbei liefert die Box eine Rückmeldung mit dem aktuellen Status

<?xml version="1.0" encoding="UTF8"?>
<SMARTPLUG id="edimax">
  <CMD id="get">
    <Device.System.Power.State>OFF</Device.System.Power.State>
  </CMD>
</SMARTPLUG>

Aktueller Stromverbrauch

Für die Nutzung mit PRTG möchte ich natürlich weniger Schalten sondern die Betriebsdaten auslesen. Auch das kann man mit WireShark auslesen 

<?xml version="1.0" encoding="UTF8"?>
<SMARTPLUG id="edimax">
  <CMD id="get">
    <NOW_POWER></NOW_POWER>
  </CMD>
</SMARTPLUG>

Dann antwortet er z. B. wie folgt. (Die Last ist einfach mal ein Ladegerät eines DECT-Telefons, also ein kleiner Verbraucher und das Gerät habe ich erst wenige Tage)

<?xml version="1.0" encoding="UTF8"?>
<SMARTPLUG id="edimax">
  <CMD id="get"> 
    <NOW_POWER>
      <Device.System.Power.LastToggleTime>20150115221023</Device.System.Power.LastToggleTime>
      <Device.System.Power.NowCurrent>0.0211</Device.System.Power.NowCurrent>
      <Device.System.Power.NowPower>2.71</Device.System.Power.NowPower>
      <Device.System.Power.NowEnergy.Day>0.001</Device.System.Power.NowEnergy.Day>
      <Device.System.Power.NowEnergy.Week>0.001</Device.System.Power.NowEnergy.Week>
      <Device.System.Power.NowEnergy.Month>0.001</Device.System.Power.NowEnergy.Month>
    </NOW_POWER>
  </CMD>
</SMARTPLUG>

Einzelwertabfragen

Wenn man auf der App einen einzelnen Wert anklickt, dann gibt es anscheinend auch eine Option einen einzelnen Wert abzufragen:

<?xml version="1.0" encoding="UTF8"?>
<SMARTPLUG id="edimax">
  <CMD id="get">
    <NOW_POWER>
      <Device.System.Power.NowCurrent/>
    </NOW_POWER>
  </CMD>
</SMARTPLUG

Und die passende Antwort dazu:

<?xml version="1.0" encoding="UTF8"?>
<SMARTPLUG id="edimax">
  <CMD id="get">
    <NOW_POWER>
      <Device.System.Power.LastToggleTime>20150115221023</Device.System.Power.LastToggleTime>
      <Device.System.Power.NowCurrent>0.0211</Device.System.Power.NowCurrent>
    </NOW_POWER>
  </CMD>
</SMARTPLUG> 

Weitere Einstellungen

Damit ist die Funktion des SP2101W aber noch lange nicht erschöpft. Man kann z.B. einen "Historischer Verbrauch" als Grafik sich anzeigen. Über die App kann man sogar ein Diagramm abrufen. Anscheinend kommen diese Daten nicht aus einer Cloud sondern werden im SP2101W gespeichert und durch die App aufbereitet. gleiches gilt für die Alarmierung per Mail beim Überschreiten von Budget-Grenzen. Auch das zeitgesteuerte Ein/Aus-Schalten scheint nicht durch die App ausgelöst zu werden, sondern ist in der Box selbst enthalten. Zumindest lassen die Daten aus Mitschnitten dies vermuten. Ein Post mit folgenden Request:

<?xml version="1.0" encoding="UTF8"?>
<SMARTPLUG id="edimax">
  <CMD id="get">
    <SCHEDULE></SCHEDULE>
  </CMD>
</SMARTPLUG>

Liefert eine Liste von 7 Zeitplänen mit je 360 "0"-Werten, die den Zeitplan darstellen könnten. Eine Beschreibung dieser und weiterer EinstellMöglichkeiten (z.B. NTP-Server, MailServer etc.) ist aber nicht öffentlich und für mein weiteres Projekt auch nicht erforderlich.

Sicherheit und Schalten !

Wenn ich diese Box z.B. nutzen möchte, um den Stromverbrauch von Servern o.ä. zu überwachen, dann ist die Schaltfunktion natürlich ein Risiko. Allzu schnell ist über die App nicht die Anzeige der Daten sondern der Schalter ausgewählt.

Zudem werden alle Steuerungsinformationen unverschlüsselt übertragen. Es ist also ein leichtes die Anmeldedaten per Netzwerkschnüffler mit etwas ARP-Spoofing zu erhalten und dann selbst zu schalten. Es bietet sich für Firmeneinsätze auf jeden Fall an, diese Geräte nicht im normalen Haus-WLAN zu betreiben, sondern in einem eigenen Device-WLAN mit ausreichend guter Verschlüsselung und einem WPA2-PSK-Schlüssel, den wirklich nur wenige Personen können.

Zudem "spricht" mir die App zu intensiv mit einer Cloud, von der ich gar nichts weiß. Einen Vertrag o.ä. gibt es hier nicht zu unterschreiben und welche Daten letztlich gesendet und welche Fernwirkfunktion möglich ist, ist gänzlich unbekannt. Sicherheitshalber habe ich natürlich in meinem DSL-Router diesem Gerät den Zugriff auf das Internet erst mal verboten.

Um das Risiko des Schaltens aber 100% auszuschließen, kann man als Elektronik-Bastler auch zum Lötkolben greifen. Intern hört man beim Schalten ganz deutlich ein Relais und dieses lässt sich natürlich permanent überbrücken. Es kann dann ruhig das Relais schalten, aber die Steckdose bleibt unter Dauerstrom. Die "besonderen" Schraubenköpfe sind für einen gut sortierten Elektronikbastler kein echtes Problem.

Allerdings sind zwei Schrauben sehr tief versenkt, so dass man mit den klassischen Bit-Sortimenten nicht tief genug ran kommt.

Auswerten mit PowerShell

Nachdem ich nun weiß, wie ich die Daten per HTTP direkt von dem SP2101W beziehen kann, war es natürlich klar, dass der Schritt zu einem PowerShell-Script nur kurz ist. Vorarbeiten hatte ich z.B. auf PS HTTPClient schon geleistet. Mein erster Versuch war folgender:

[string] $strUser = 'admin'
[System.Security.SecureString]$strPass = ConvertTo-SecureString -String "1234" -AsPlainText -Force
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($strUser, $strPass)

$data= Invoke-WebRequest `
   -Method post `
   -credential $cred `
   -Uri "http://192.168.178.62:10000/smartplug.cgi" `
   -Body '<?xml version="1.0" encoding="UTF8"?><SMARTPLUG id="edimax"><CMD id="get"><NOW_POWER></NOW_POWER></CMD></SMARTPLUG>'

Ganz so einfach geht es aber dann noch nicht, denn das PowerShell-Kommando macht darauf zwei Pakete und das Device antwortet schon nach dem ersten Paket.

 

Der Fehler ist hier nicht bei der PowerShell, sondern das Device ignoriert den "Content-Length" und antwortet schon, obwohl der Request noch nicht komplett ist.

Alternativ kann man den Invoke-RestMethode nutzen, der etwas mehr "Intelligenz" mit bringt.

[string] $strUser = 'admin'
[System.Security.SecureString]$strPass = ConvertTo-SecureString -String "1234" -AsPlainText -Force
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($strUser, $strPass)

$data= Invoke-RestMethod  `
   -Method post `
   -credential $cred `
   -Uri "http://192.168.178.62:10000/smartplug.cgi" `
   -Body '<?xml version="1.0" encoding="UTF8"?><SMARTPLUG id="edimax"><CMD id="get"><NOW_POWER></NOW_POWER></CMD></SMARTPLUG>'

Auf meinem Notebook geht die Anforderung in einem Paket samt Authentifizierung an das Device, welches dann antwortet.

 

In der Variable "$DATA" sind die Daten dann einfach abzurufen.

Interessant ist auf den ersten Blick hier der Counter "Device.System.Power.NowPower". Der Strom macht ohne die Spannung nicht viel Sinn und die Summenwerte sind für eine Momentanzeige durchaus nett aber natürlich keine Grafik. Interessanterweise kann das identische Skript auf einem Windows 2008R2-Server die Daten wieder nicht abholen, weil der Request aufgeteilt wird und das SP2101W nicht mit einem "1090 Continue" antwortet, sondern den partiellen Request mit einem 417 beendet.

Selbst der Versucht mit dem "System.Net.WebClient" funktioniert auf meinem Windows 7 Notebook aber nicht auf einem Windows 2008R2 Server:

$webclient = new-object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($deviceuser,$devicepass)
[xml]$sp2101wdata = $webclient.UploadString($deviceURL, '<?xml version="1.0" encoding="UTF8"?><SMARTPLUG id="edimax"><CMD id="get"><NOW_POWER></NOW_POWER></CMD></SMARTPLUG>')

Erst der Rückfall noch eins tiefer auf "System.Net.HttpWebRequest" erlaubt es, über den "ServicePoint" das Property "Expect100Continue" auf $false zu setzen und so die getrennte Übertragung von Header und Body zu unterbinden.

PRTG Custom Sensor

Werte per PowerShell auszulesen ist ja nur die halbe Miete. Irgendwo will ich die Werte ja speichern, visualisieren und ggfls. Alarmieren oder darauf reagieren. PRTG ist natürlich nun kein Hausautomatisierungssystem wie FHEM u.a., insofern habe ich nicht vor mit PRTG abhängig von der Produktion der Solarzellen (Siehe PRTG Kostal) dann den SP2101W auch noch zu schalten.

Von den vier Kennzahlen ist der aktuelle Verbraucht natürlich erst mal interessant. Aber der Wert ist eine "Momentaufnahme". Daher kann es durchaus interessant sein, auch die summierten Werte zu nutzen. PRTG kann nämlich auch "Differenz-Werte" ermitteln und damit den Verbrauch eines Intervalls anhand des Start-Werts und End-Werts errechnen. Das hat Vorteile, wenn der Verbraucher stark schwankende Lasten hat oder die Messintervalle größer also die Einschaltdauer sind und damit die Messing ungenau wird. Aber auch die Messung der Differenzen ist nicht problemlos, dann wenn die Intervalle kurz bzw. der Verbrauch niedrig ist, hat sich der Counter gar nicht erhöht und wird als "0" geführt. Der Verbraucher muss dabei aber gar nicht ausgeschaltet gewesen sein. Sein Verbrauch war einfach unterhalb der Messempfindlichkeit des Summenzählers. Hier kann dann der "NoPower"-Counter wieder besser sein. Also werde ich einfach alle vier Kennzahlen auslesen und an PRTG übergeben.

Um z.B. alle 5 Minuten die Daten abzufragen. Ich bediene mich dazu wieder dem PRTG:Custom Sensor. den ich regelmäßig aufrufen lasse, so dass der per PowerShell die XML-Anfrage sendet und die Antwort als XML-Datei weiter sendet. Da es sich hier nur um vier Werte handelt, habe ich auf umfangreiche Vorschleifen verzichtet und einfach über Parameter die URL, username und Kennwort angefragt, dann per HTTPWebRequest die Anfrage gestellt um die Ergebnisse dann als XML an PRTG zu übergeben.

prtg-sp2101w.1.0.ps1

Der Sensor wird als "EXE/XML Custom Sensor" eingerichtet.

Kopieren Sie dazu das PS1-Skript in das EXEXML-Verzeichnis ihrer PRTG Probe (Siehe auch PRTG:Custom Sensor)

Wenn Sie nicht per Parameter die DeviceURI übergeben, sollten Sie im Skript den Default auf ihre Umgebung anpassen. Und schon sollten Sie die vier Messwerte auch sehen. Hier ein Beispiel der ersten Messwerte:

 Das hier angeschlossene System misst übrigens einen kleinen Bautrockner im Keller, der abhängig von der Luftfeuchtigkeit den Kompressor ein und ausschaltet aber der Lüfter als Grundlast immer die Luft umwälzt. Wenn der Wasserbehälter voll ist, dann schaltet er Kompressor und Lüfter ab und braucht nur noch etwas "Standby"-Strom. Hier einmal ein Auszug:

Man sieht die regelmäßigen Ein- und Abschaltvorgänge des Kompressors, der ca. 25Min läuft und dann ca. 20Min Pause macht. Man sieht aber auch, dass der Energieverbrauch auf dem Berg immer noch etwas weiter zunimmt. Die tiefen Spalten zeigen Zeiten, zu denen das Gerät keinen Strom verbraucht hat. Ich habe meine Frau angesprochen und sie hat bestätigt, dass Sie in der Zeit das Gerät ausgeschaltet hatte und einmal das Wasser geleert hat.

Die feine hellblaue in den zeigt den Strom in Ampere und ist nicht wirklich aussagekräftig, es sei denn man möchte erkennen, ob das Gerät wegen Überlast (16A) abschaltet. Wenig hilfreich in der Grafik sind natürlich auch die "Summenwerte", die den Stromverbrauch pro Tag (Day), Woche (Week) oder Monat (Month) ausgeben. Die kann man in der Konfiguration von PRTG aber auch Ausblenden. Erfassen möchte sich sie trotzdem, da man sie später als CSV-Datei exportieren könnte. Hier mal eine längere Auswertung:

Hier ist dann auch gut zu sehen, wie "Mittelwerte" die normale Spitze von ca. 400W absenken und wie die Summencounter für Tag, Woche und Monat als Integral auflaufen und wieder zurück gesetzt werden.

Einschränkungen

Die Box kann per WiFi in ein WPA2-Personalnetz aufgenommen werden. Das geht per App innerhalb von Minuten. Sie misst den Stromverbraucht und kann aus der Ferne geschaltet werden. Das ist der einfach Part. Ein paar Kröten müssen sie aber dennoch schlucken

  • APP only, keine Webseite
    Die Einrichtung des Geräts in ein WLAN ist aktuell nur über die App möglich. Bei den heutigen Entwicklungsschritte bei Mobiltelefonen und Tablets und Updates von Betriebssystemen muss man darauf hoffen, dass Edimax diese App auch immer weiter entwickelt und bereit hält. Leider gibt es nicht mal eine triviale Möglichkeit per Browser bei der Ersteinrichtung die Daten zu setzen oder den aktuellen Status zu sehen. Wenn die API offen gelegt wäre, könnte man ja ein PHP, Perl, PowerShell oder anderes Skript entwickeln und die Abhängigkeit von Smartphones und Apps lösen. So bin ich schon fast sicher, das es nur wenige Jahre dauern wird und das Gerät ist Elektromüll.
  • Stromausfall = Datenreset
    Wenn das Gerät kurz ohne Strom ist, verliert es zwar nicht seine Konfiguration aber die bislang aufgezeichneten Verbrauchsdaten sind alle wieder auf 0 zurück gesetzt. Durch meine PRTG-Erfassung stört mich das nicht, aber wer damit längere Zeiträume ohne PC erfassen will, wird dies nicht mögen.
  • Erzwungene Verbindung zur Cloud
    Dass das Gerät versucht eine Verbindung über eine Edimax-Cloud aufzubauen, damit der Anwender auch unterwegs auf die Daten zugreifen kann, ist ein Zugeständnis an das "Internet der Dinge". Aber dass das Gerät ohne Internet keinen Zeitserver bekommt und dann alle Werte permanent auf "0" stehen, blockiert den Einsatz in einem geschlossenen Netzwerk. Ich hoffe, dass hier ein Update Abhilfe schafft.
  • AGB für Cloud Service
    Wenn ein Gerät schon ungefragt mit der Cloud kommuniziert, dann wären ein paar klärende Worte dazu angebracht. So ganz ohne "Vertrag" ist das vielleicht nicht mit hiesigen Gesetzen konform. Edimax sammelt die Daten sicher nicht um den weltweiten Stromverbrauch zu ermitteln. Wenn ich dann über das Smartphone von unterwegs die Daten einsehen und schalten kann, und die Absicherung nur ein Kennwort ist und eine "bekannte" (TLS) Verschlüsselung scheinbar nicht genutzt wird, dann ist das für mich einen klare Abwertung.
  • Webservice ohne "100 Continue"-Support
    Dann ist es nur noch ein kleiner Bug, dass man beim direkten Zugriff den POST komplett senden muss, weil das Gerät keinen "100 Continue" unterstützt.
  • Messgenauigkeit
    Leider habe ich keine Geräte um die Genauigkeit der Messung zu verifizieren. Es gibt auch seitens Edimax hier keine Aussagen zu, bzw. ich habe sie nicht gefunden. für Abrechnungszweck ist es nicht zu gebrauchen aber als grobes Schätzeisen für Großverbraucher einsetzbar.
  • APP-Reconnect-Probleme
    Bei mir hat sich die App beim Start nicht mit dem Gerät verbinden können. ich musste immer das Gerät erst entfernen und dann wieder anlernen. Auch die App hat dann aber alles mit "0" angezeigt, wenn die Schaltsteckdose nicht mit dem Internet kommunizieren konnte, obwohl dann die App anscheinend dort direkt auf das Gerät zugreift.

Das Thema mit "Internet der Dinge" und Sicherheit wird uns aber sicher noch in Zukunft beschäftigen. Wer weiß, vielleicht kann man dieses Gerät mit einer passenden Firmware zum "Schnüffler" im Haus-LAN erweitern. Es ist damit auf jeden Fall kein Gerät für kritische oder empfindliche Netzwerke und Stromverbraucher. Ich weiß schon, warum ich die Schaltfunktion per Lötbrücke außer Kraft gesetzt habe.

Einschätzung

Ich finde es immer wieder erstaunlich, wie viele Funktionen heute in so kleinen Boxen konzentriert werden können. Das ist ein Embedded-Computer mit Steuerung, Netzwerk und Messeinheit und das alles ist für weniger als 50€ erhältlich. Mag sein, dass ein Smartphone oder Tablet elektronisch noch hochwertiger sind aber die Entwicklung und Produktion, Versand und Vertrieb wollen alle bezahlt sein. Man muss natürlich im Hinterkopf haben, dass Edimax mit dem SP2101W auf der "aktuellen "Internet of Things"-Welle mit schwimmt und zuerst an eine App für Smartphones und Tablets gedacht hat. Was davon zu halten ist, dass diese (und tausende Kopien) ungefragt eine Verbindung zu einem Edimax-Service aufbauen und es dazu kein Hinweisblatt weder im Karton noch in der App gibt, finde ich persönlich bedenklich. Andererseits bin ich vielleicht einfach "älter" und sehe das kritischer als die WhatsApp-Generation.

Andere Stromsteckdosen

Es gibt natürlich immer mehr Geräte, die sich per "App" auslesen lassen. Solange sich diese nicht per Bluetooth direkt verbinden, sondern irgendwie direkt oder indirekt im LAN erscheinen und nicht allzu kryptisch anzusprechen sind, können diese sicher auch eingelesen werden. Hier ein paar Links ohne vollständig zu sein.

Weitere Links