mikrocontroller.net

Forum: Haus & Smart Home Edimax SP-2101W entclouden


Autor: n9n33r (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Hallo Elektronikfreunde!

Ich habe mir ein Projekt zurechtgelegt und zwar zwei Edimax SP-2101W 
SmartPlugs, ich möchte diese dazu bringen die Daten im LAN statt der 
Cloud abzulegen aber nicht direkt die Firmware modifizieren. Dazu will 
ich in meinem lokalen Netzwerk die Cloud "simulieren". Sprich lokale 
Dienste einrichten, die die gesamte Datenkommunikation mit den 
Smartplugs übernehmen.

Dafür habe ich die Standard-Komponenten frei konfigurierbar vorbereitet
- DNS-Server (per DHCP zur exklusiven Verwendung der Smartplugs)
- Webserver
- DB-Server
- WLAN AP

Danach habe ich den GPL Sourcecode herangezogen und versucht diesen zu 
analysieren. Gerätefirmware Url: 
http://www.edimax-de.eu/edimax/mw/cufiles/files/do...

Nun ist es leider so das dieser "Quellcode" wieder teilweise aus 
präkompilierten Programmen besteht (Anteile die ich für relevant halte, 
bestehen aus bereits kompilierten Bytecode) und daher auch nicht 
besonders geeignet ist um die Protokollbeschaffenheit davon abzuleiten.

Danach habe ich die Smartplug geöffnet (Trotz der Dreieckschrauben), 
darin verstecken sich zwei ProzessorPlatinen, einmal Prolific PL8331 für 
die Leistungsmessung und ein Ralink RA5350F als WLAN Linux Modul für die 
Kommunikation nebst der SMD Wiese.

Mein nächster Ansatz war Reverse Engineering der Protokolle (Klartext & 
Binär).

Zur Analyse habe ich folgende Software/Hardware herangezogen
- MS Message Analyzer (Funktionsumfang erschlägt einen)
- Wireshark (Handlich und eher intuitiv)
- Packet Sender (Um UDP Pakete aus Hexcode abzusenden, habe dazu die 
Netzwerkkarten MAC auf "Edimax" umgestellt 80:1F:02:xx:xx:xx)
- Managed-Switch für die Port-Spiegelung


Als einschlägige Informationsquellen (allgemeine Theorie) habe ich 
bisher folgende herangezogen:
Paper: Reverse Engineering of Protocols from Network Traces
Url: http://www.di.fc.ul.pt/~nuno/PAPERS/WCRE11.pdf
Paper: MS Research - Automatic Protocol Reverse Engineering from Network 
Traces
Url: 
http://research.microsoft.com/en-us/um/people/wdcu...
Paper: MIT - Peer to Peer Communication across NAT
Url: 
https://www.usenix.org/conference/2005-usenix-annu...


Danach habe ich damit begonnen, dass fertig installierte Gerät 
einzuschalten und die IP-Daten mitzuschneiden, welche ins Internet 
gehen.

Festgestellte Abfolge:

S1.) DNS Abfrage nach www.google.com
S2.) kurze TCP-Session zum google server auf Port 80 ohne Nutzdaten zu 
senden
S3.) DNS Abfrage nach NTP-Zeitserver (NTP Pool Europa)
S4.) NTP-Zeitsynchronisierung
S5.) DNS Abfrage nach der Cloud (www.myedimax.com -> Amazon EC2 Cloud)
S6.) UDP Broadcast im LAN mit JSON Klartext Info zu benutztem UDP-Port
S7.) 2 UDP Nachrichten in die Cloud zu Port 8765 mit binärem Inhalt
S8.) UDP Antwort von der Cloud (binäre Daten)
S9.) S1
S10.)S2
S11.)UDP Paket mit Binärdaten an die cloud
-> dieses Paket sieht immer gleich aus, egal wie oft aus/ein oder welche 
der zwei Endgeräte angeschlossen wird.

Die Abfolge S9 bis S11 wiederholt sich nun automatisch alle 60 Sekunden.


Die binären Pakete aus S7 und S8 scheinen zusätzlich kodiert zu sein,
Das erste Byte ist so eine Art Index mit Offset, die restlichen Bytes 
können von Paket zu Paket durch bitweise Rotation (Rechtsshift) 
"umgerechnet" werden und ergeben so "zurecht" gerechnet immer das 
gleiche.

Es gibt immer ein Word (2 Bytes), das sich in allen Paketen wiederholt.
(Grundsätzlich ist es innerhalb eines Pakets immer gleich, nach dem 
"umrechnen" auch zwischen verschiedenen Paketen des selben Senders also 
entweder der Smartplug oder der Cloud)

Dieses Word ist zwischen Smartplug und Cloud verdreht (Highbyte vs 
Lowbyte)
[...]

So das sind erstmal meine Erkentnisse dazu, hat sich damit schon ein 
anderer auch auseinandergesetzt? Im ELV-Forum habe ich zum bauähnlichen 
Gerät SP-1101 bereits eine Menge zu Parametern im JSON Format gefunden 
um das Gerät zu parametrieren und Stati abzufragen. Das ist schon recht 
gut dokumentiert. Zum binären Kommunikationsbedürfniss mit der Cloud 
schweigen sich alle ziemlich aus. g

Na vielleicht hat ja jemand seinen Senf dazu? :)

mfg ngneer

Autor: L33t (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du die UDP Pakete mal hochladen? Nur mit deiner Beschreibung kann 
ich mir den Aufbau schlecht vorstellen.

Dieses regelmäßig übertragene Paket scheint auch nur ein Lebenszeichen 
bzw. eine Synchronisation sein. Interessant wird es wohl erst wenn du 
eine Cloud-Funktion aktivierst und Nutzdaten fließen.

Hast du mal probiert wie stabil das alles läuft?
Aufgebohrter Google-Ping als Verbindungstest(?) und UDP für Messwerte 
hört sich jetzt nicht grade zuverlässig an...

Eine Erkenntnis hat deine Untersuchung immerhin schon ermöglicht: Wenn 
Deutschland sein Smart Grid einschaltet wird Google unter einer massiven 
DDOS-Attacke zusammenbrechen. :)

Autor: Guntram (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Du musst nicht unbedingt die Cloud nachbauen, wenn Du nur an die Daten 
drankommen willst. Dein (Microcontroller/Arduino/Raspberry Pi/Was auch 
immer, das die daten speichert) kann die auch regelmäßig direkt 
abfragen. Mehr Info hier:

http://sun-watch.net/index.php/eigenverbrauch/ipsc...

Autor: Georg F. (n9n33r)
Datum:
Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
L33t schrieb:
> Kannst du die UDP Pakete mal hochladen? Nur mit deiner Beschreibung kann
> ich mir den Aufbau schlecht vorstellen.

Ja, ich habe die angesprochenen Daten bereitgestellt.
Tool:
Wireshark Version 1.12.2 (v1.12.2-0-g898fa22 from master-1.12), Compiled 
(64-bit).

Filter:
Folgende Filter habe ich auf die Daten angewendet um Broadcasts und 
anderen Traffic aus meinem LAN auszublenden:
xx81:
(ip.src == 192.168.0.81) || (ip.dst == 192.168.0.81)
xx80:
(ip.src == 192.168.0.80) || (ip.dst == 192.168.0.80)

Dateien:
2x Bootsequenz vom SmartPlug mit der IP 192.168.0.81:
Edimax_SP-2101W_xx81.zip

2x Bootsequenz vom SmartPlug mit der IP 192.168.0.80:
Edimax_SP-2101W_xx80.zip


Filter:
Folgender Filter um beide Geräte zeitgleich zu analysieren
xx81+82: xx81:
(ip.src == 192.168.0.80) || (ip.dst == 192.168.0.80) || (ip.src == 192.168.0.81) || (ip.dst == 192.168.0.81)

Datei:
1x Bootsequenz von Smartplug IP 192.168.0.80 und IP 192.168.0.81 
gleichzeitig eingesteckt.
Edimax_SP-2101W_xx80+81_Bootup.zip


> Dieses regelmäßig übertragene Paket scheint auch nur ein Lebenszeichen
> bzw. eine Synchronisation sein. Interessant wird es wohl erst wenn du
> eine Cloud-Funktion aktivierst und Nutzdaten fließen.

Darüber habe ich mir auch schon das Hirn zermartert, ich "glaube" dass 
dies eigentlich nur dazu dient einen UDP-IP Kanal am Leben zu halten um 
NAT auszutricksen und ohne dezidierte Firewall Regel einen Rückkanal von 
der Cloud ins Gerät offen zu halten. Auch bekannt unter Port-Punching. 
Eigentlich gehört die SmartPlug damit im LAN in die DMZ.

> Hast du mal probiert wie stabil das alles läuft?
> Aufgebohrter Google-Ping als Verbindungstest(?) und UDP für Messwerte
> hört sich jetzt nicht grade zuverlässig an...

Die App hakelt ein wenig, da ja diese gar nicht selbst auf die cloud 
greift sondern im LAN die SmartPlug als Cloud-Proxy fungiert, komische 
Konfiguration.

Google investiert sehr viel in die 24/7/365 Verfügbarkeit. Nur ob Google 
weiß das es als TCP-Pingserver dient? TCP-Sessions brauchen schon sehr 
viel mehr Ressourcen am Server als stupides Ping.

> Eine Erkenntnis hat deine Untersuchung immerhin schon ermöglicht: Wenn
> Deutschland sein Smart Grid einschaltet wird Google unter einer massiven
> DDOS-Attacke zusammenbrechen. :)

Ohja, auch wenn ST&T sowie Edimax einen Haufen dieser Dosen verkaufen 
werden sich Larry und Sergey wundern wieso ein ganzes Rechenzentrum 
durch leere TCP-Sessions beschäftigt wird... bei 5000 Stk verkaufte 
Dosen sind das hmm 7.2 Mio TCP-Sessions pro Tag

Autor: Georg F. (n9n33r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guntram schrieb:
> Du musst nicht unbedingt die Cloud nachbauen, wenn Du nur an die Daten
> drankommen willst.

Ja, da hast Du natürlich Recht. Streng genommen könnte ich damit viel 
einfacher mein oben genanntes Ziel erreichen. Möglicherweise muss ich es 
am Ende auch so machen und mich auf den Klartext Teil beschränken. 
Vorerst möchte ich mir das als Fallback offen lassen, falls ich Binär 
endgültig scheitere.

Aber das Binäre hat mein Interesse geweckt, da nach einem Hardware-Reset 
die Konfiguration erst dann abgeschlossen ist, wenn die Kommunikation 
übers Internet (zur Cloud) erfolgreich war. Außerdem interessiert es 
mich wahnsinnig welche Daten tatsächlich per Internet hinausgehen :)

Autor: Georg F. (n9n33r)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Achja ich war noch so frei und habe eine Smartplug nochmal zerrissen um 
Fotos der Innereien anzufertigen:
SP-2101W PCB's Rev V1.0 http://imgur.com/a/pDxSF/embed

Autor: Guntram (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Hab mal noch ein bisschen die UDP-Pakete angeschaut; also diejenigen, 
die Daten enthalten und nicht nur 4 Bytes. Du hast völlig recht, das 1. 
Byte gibt einen Zähler an, die andren Bytes sind entsprechend viele Bits 
rotiert. Der Trick ist: die Pakete sind XML Daten, das "echte" 1. Byte 
ist also immer ein '<'. Die Anzahl der Bits, um die die andren Bytes 
rotiert sind, sind zu dem '<' (Hex 3C) addiert. Wenn also das 1. Zeichen 
ein 'A' ist, Hex 41, dann sind die restlichen Bytes um 4 (0x41-0x3c) 
Bits rotiert.

Aus den Nutzdaten des Pakets 18 in Deiner xx80_Bootup1.pcapng wird 
dadurch
$ ./decode 3d38b039b0b61f1eb1b732b2103bb036bab29e11991818181110971f1e9738b039b0b61f
<param><code value="3000" /></param>

Und hier das C-Programm dazu:
char *teststr="41830b930b6bf150e11b7b232b01b30b63ab2be91189818981110179f150"
        "e16b7b232b6301b30b63ab2be9119a826991898189ba110179f150e14b23"
        "01b30b63ab2be911c18189328191320ab1a10aa9110179f150e1a3cb832b"
        "01b30b63ab2be9119a6b0b93a38263ab3b110179f150e10b634b0b9b01b3"
        "0b63ab2be911a2937b1b5b732b93110179f150e1630b734b8301b30b63ab"
        "2be91189c9917189b1c1718171c181110179f150e1630b73837b93a301b3"
        "0b63ab2be911a1c98999b1110179f150e19b7301b30b63ab2be9115a5a5a"
        "5a5a5a5a5a110179f150e12b731b93cb83a34b7b7301b30b63ab2be91181"
        "110179f150e1730ba3a3cb832b01b30b63ab2be911b9110179f150e1232b"
        "b333bbb32b9301b30b63ab2be9118971819919818981818189110179f150"
        "e183937b23ab1ba34b2301b30b63ab2be9112a224a6a0ac2199a82699189"
        "8189ba198971811989718199110179f150e179830b930b6bf1";

int main(int argc, char **argv) {
  char *bytes=teststr;
  if (argc>1)
    bytes=*++argv;
  int rotate=0;
  while (*bytes && bytes[1]) {
    int val;
    sscanf(bytes, "%02x", &val);
    if (rotate==0) {
      rotate=val-'<';
      val='<';
    } else {
      val<<=rotate;
      val=(val&0xff) | ((val&0xff00)>>8);
    }
    putchar(val);
    bytes+=2;
  }
  putchar('\n');
}

Der teststr ist Dein Paket 19, daraus wird
<param>
<code value="1010" />
<model value="SP-2101W" />
<id value="801F02FA64A5" />
<type value="SmartPlug" />
<alias value="Trockner" />
<lanip value="192.168.0.80" />
<lanport value="49136" />
<sn value="KKKKKKKK" />
<encryption value="0" />
<nattype value="7" />
<devfwver value="1.03#010001" />
<productid value="EDIMAX#SP-2101W#1.0#1.03" />
</param>

Und die Antwort der Cloud in Paket 20 ist
<param><code value="1020" /><id value="801F02FA64A5" /><status value="000" /></param>

Die immer gleichen 4 Bytes, die später an die Cloud geschickt werden, 
könnten aus der ID - die mit der MAC der Edimax übereinstimmt - 
generiert werden, aber da bin ich noch nicht sicher.

Autor: Hans Ulli Kroll (elektroman)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Der entsprechende "Client" auf der Edimax ist in

bin/agent
im RootFS
zu finden in den GPL Sourcen unter FW/srcbase/apps/prebuild

Autor: Guntram (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Genau, und wenn man die Datei bei www.onlinedisassembler.com hochlädt, 
findet man einige interessante Funktionen:
0x004193e0  T  choose_random_shiftnum
0x00419504  T  rrotate
0x004195d8  T  lrotate
0x0041968c  T  show_binary
0x0041977c  T  rEncodeBytes
0x00419858  T  lDecodeBytes
0x00419934  T  mk_param

So bin ich auf die oben beschriebene Codierung der XML-UDP-Pakete 
gekommen. Leider liefert der retargetable Decompiler 
(http://decompiler.fit.vutbr.cz/) nichts vernünftiges. Und als ich 
fertig war, hätte ich mir gewünscht, die Beschreibung des 
Threaderstellers von wegen unterschiedlich rotierten Bytes genauer 
beachtet zu haben, das hätte mir erspart, eine Menge ungewohnten 
MIPS-Code zu lesen pfeif

Autor: n9n33r (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein herzliches Danke für die exzellente Ausarbeitung! Das hilft weiter 
:)

Autor: Guntram (Gast)
Datum:
Angehängte Dateien:

Bewertung
3 lesenswert
nicht lesenswert
Ich hab mir jetzt auch 2 Edimaxen besorgt, und damit eine Weile 
rumgespielt.

Solange das Tablet im gleichen Lan ist wie die Edimax, scheinen die 
direkt miteinander zu sprechen. Wenn ich bei meinem Handy WLAN 
ausschalte und nur noch GSM erlaube, geht es über die Cloud. War ja 
anzunehmen.

Sobald das passiert, kommen wirklich von aussen UDP Pakete rein, in 
denen dann Anfragen an die Edimax stehen. Die sind auf die gleiche Art 
und Weise codiert, und enthalten (die X-e sind von mir):
<param><code value="1040" /><devip value="92.211.XX.YYY" /><devport value="58296" /><reqip value="80.187.XX.YYY" /><reqport value="31228" /><connip value="80.187.XX.YYY" /><connport value="31228" /><samelan value="0" /><relayip value="122.248.234.231" /><relaydevport value="8767" /><relayreqport value="8768" /><relayid value="e231d35c.e3b8.fb6abb50.79fc" /><nettype value="D" /><natweight value="14" /><reqfwver value="1.0#010000" /><reqdirport value="0" /><auth value="38f989453c733de4afaf64XXXXXXXXXX" /><seq value="801F02FA70BF141XXXXXXXXXX" /><delay value="500" /><relaytype value="" /><punchingtime value="" /></param>

devip ist dabei die IP meines DSL, connip und reqip meine GSM-IP.

Daraufhin macht die Edimax eine TCP-Verbindung zum relayip:relaydevport 
auf. Über die kommen Anfragen rein, auf die bekannte Art verschlüsselt, 
mit dem Beispielinhalt
<?xml version="1.0" encoding="UTF8"?><SMARTPLUG id="edimax"><CMD id="get"><NOW_POWER><Device.System.Power.NowCurrent></Device.System.Power.NowCurrent><Device.System.Power.NowPower></Device.System.Power.NowPower></NOW_POWER></CMD></SMARTPLUG>

was genau dem entspricht, was man auch via HTTP an die smartplug.cgi auf 
Port 10000 schicken kann, und dies wird dann beantwortet mit
PnvDataLen: 445

.......
wobei die ..... wieder nach dem bekannten Schema verschlüsselte Daten 
sind; entschlüsselt sind die genau das HTTP, das der Server 
zurückschickt (man beachte das Extra < am Anfang das die Verschlüsselung 
nun mal so will):

<HTTP/1.1 200 OK
Content-Type: application/xml; charset=utf-8
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 253
Date: Fri, 05 Dec 2014 21:40:03 GMT
Server: lighttpd/1.4.31

<?xml version="1.0" encoding="UTF8"?><SMARTPLUG id="edimax"><CMD 
id="get"><NOW_POWER><Device.System.Power.NowCurrent>0.7604</Device.Syste 
m.Power.NowCurrent><Device.System.Power.NowPower>148.77</Device.System.P 
ower.NowPower></NOW_POWER></CMD></SMARTPLUG>

Die Cloud-Funktion ist also im Wesentlichen eine Methode, die 
smartplug.cgi von aussen aufzurufen und ein Ergebnis zurückzubekommen.

Ich habe noch einen kleinen Dissector für Wireshark geschrieben, um die 
UDP-Daten gleich im Wireshark entschlüsseln zu können. Unter Linux muss 
die Datei als $HOME/.wireshark/init.lua abgelegt werden. Unter Windows 
muss die vermutlich irgendwo nach %APPDATA%\.wireshark, davon habe ich 
aber nicht wirklich Ahnung ...

Autor: Klaus Scheffer (phoneman)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Der Pfad für die init.lua unter Win7 ist 
C:\Users\XX-USERNAME-XX\AppData\Roaming\Wireshark , wobei 
"XX-USERNAME-XX" durch den eigenen Usernamen zu ersetzen ist. 
Funktioniert bei mir einwandfrei.

Autor: Hans Ulli Kroll (elektroman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir mal die Bilder von  Georg F genauer angesehen ...

Die Anbindung vom Prolific PL8331 läuft per serieller Schnittstelle.
In dem Chip ist laut Datenblatt eine 8052 CPU, das Protokoll dürfte was 
eigenes sein.

Sowie es aussieht ist das mit dem Chip eine Referenzplattform. Dieser 
ist auch im DLINK DWA 215 eingebaut, dort wird aber ein Atheros WLAN Soc 
genutzt

Autor: Triam (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Nochmal ein paar weitere Infos :

Im GPL Paket was Edimax zu verfügung stellt finden sich noch ein paar 
weitere Intressante Dinge. So gibt est bsp in der Webserverconfig eine
Verlinkung auf http:/admin:1234@sp2101w:10000/tnb2 Diese verlinkung
ruft /web/cgi-bin/mapping.cgi auf. Bei einem direkten Browseraufruf 
bekommt man eine gefakte 404 Meldung von mapping.cgi (es wird eine ander 
Schrift und Schriftgröße als beim Webserver genutzt) So wie es von 
String Fileinhalt aussieht ist mapping.cgi (/tnb2) in wirklichkeit eine 
Debbuging Seite.

Unter anderem findet sich im Stringinhalt von mapping.cgi ebenfalls auch 
eine Telnetd ausführung (telnetd -p 1355 -l /bin/sh) Es gibt also eine 
Vorbedinung die mapping.cgi zu leben erwecket.

Intressant auch easyedx, hier finden sich in den Strings auch hinweise 
auf die versteckte Seite (Device.System.HiddenPage.Enable und 
Device.Test.HiddenPag.Enable). Bisher hatte ich jedoch noch kein Glück. 
Werden die Befehle Parameterlos mit Slash am ende in ein XML Telegram 
verpackt, kommt zwar ein OK zurück aber das dann auch :(

Gruß Triam

Autor: Michael Rausch (netadair)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

> eine Telnetd ausführung (telnetd -p 1355 -l /bin/sh) Es gibt also eine

darauf hin wird auf Port 1355 ein telnetd gestartet, der auch gleich 
ohne Login eine Shell liefert...

Ciao
Michael

Autor: Michael Rausch (netadair)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Hallo zusammen,

hier die Anleitung zum "Telnet enable" des SP-2101W:

- Gerät muss im Install-Modus sein ("AP-Mode" reicht nicht)
  - Hard reset (>10sec), oder <CMD id="reset" />

- http://admin:1234@192.168.20.3:10000/tnb2   -> OK
- telnet 192.168.20.3 1355
- nvc set Device.Test.HiddenPage.Enable ON
- Gerät über App konfigurieren (Bastle gerade an direktem Setup)...
- Reboot
- Wieder /tnb2 aufrufen unter der per DHCP zugewiesenen Adresse -> OK
- telnet xxx 1355
- Spass haben :)

Ciao
Michael

Autor: Holger S. (spinne1000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nachdem ich das hier alles gelesen hatte, hab ich mir auch mal einen zum 
Testen bestellt.

Eingerichtet und den Gefrierschrank angeschlossen. Ich hab dann ein 
kleines Shellscript geschrieben um die Verbrauchsdaten abzufragen und in 
ner Datenbank zu speichern. Hat auch funktioniert.... einen Tag lang. 
Dann war der Gefrierschrank ohne Strom. Der Schalter war tot. 
Eingeschickt und nen neuen bekommen (während dessen nochmal 3 bestellt) 
welcher nach einem Tag ebenfalls tot war.

Die 3 anderen funktionierten ca 5 Tage (an 
Kühlschrank/Mikrowelle/Kaffeemaschine, TV, PC). Diese wurden per 
Shellscript alle 5 Sekunden abgefragt. Daraus hab ich dann per PHP 
schöne Diagramme erstellt :-) Funktionierte eigentlich super, aber die 
Schalter liefern keine Messwerte mehr, sie schalten nur noch. Auch über 
die App zeigen sie keinen Stromverbrauch mehr an. Reset bringt auch 
nichts.

Muß ich wohl alle zurückschicken.

Weiß jemand ne Alternative die zuverlässig funktioniert?

lg
Holger

Autor: PanJanek (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Maybe you will be interested in my little project - command line utility 
for controlling Edimax Plugs using undocummented cloud protocol:

https://github.com/panjanek/EdiManager

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ein wirklich sehr interessanter Thread. Gibt es Erkenntnisse zum Thema 
"Einrichtung ohne App"?

Gruß

Arne

Autor: Holger S. (spinne1000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arne schrieb:
> Hi!
>
> Ein wirklich sehr interessanter Thread. Gibt es Erkenntnisse zum Thema
> "Einrichtung ohne App"?

Hallo,

zur Einrichtung nicht, das hab ich initial über die App gemacht. Die 
weitere Benutzung funktioniert dann ohne die App.

lg
Holger

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.