Silvercrest SWS A1 Wifi: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Anpassung Link)
(Erweitern um die Erkenntnisse aus dem Forum)
Zeile 1: Zeile 1:
{{Infobox Modul
|Name=Silvercrest_SWS_A1_Wifi
|ModPurpose=Schalten der Silvercrest SWS-A1 Steckdose
|ModType=x
<!-- |ModCategory=?? -->
<!-- |ModCmdRef=Silvercrest_SWS_A1_Wifi -- nicht erforderlich, da Modultyp x -->
|ModForumArea=IP
|ModTechName=53_Silvercrest_SWS_A1_Wifi.pm
|ModOwner=JoergOstertag
}}


== Silvercrest SWS-A1 Wifi schaltbare Steckdose ==
== Silvercrest SWS-A1 Wifi schaltbare Steckdose ==
Zeile 8: Zeile 18:


Exemplarisch ist in dem Perl Modul [[53_Silvercrest_SWS_A1_Wifi.pm]]  das ein-/Aus-schalten der Steckdose implementiert.
Exemplarisch ist in dem Perl Modul [[53_Silvercrest_SWS_A1_Wifi.pm]]  das ein-/Aus-schalten der Steckdose implementiert.
===Stromverbrauch===
Laut Forum:
Verbrauch  ca. 0,3 Watt.
Bei angezogenem Relais schwankt es zwischen 0,4 und 1 Watt.
===Web GUI===
Login: admin
Passwort: admin
===PHP Example Code with crypt===
<pre>
#!/usr/bin/php
<?php
function decodePacket($packet) {
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    $key = '0123456789abcdef';
    mcrypt_generic_init($td, $key, $key);
    $result = mdecrypt_generic($td, $packet);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $result;
}
function encodePacket($packet) {
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    $key = '0123456789abcdef';
    mcrypt_generic_init($td, $key, $key);
    $result = mcrypt_generic($td, $packet);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $result;
}
$msg = '4CF75F5A28A181574AC1B563CD51A78D'; // to switch 'on'
echo "Original message: $msg\n";
$decryptedPacket = decodePacket(hex2bin($msg));
echo 'Decrypted packet: ' . bin2hex($decryptedPacket) . "\n";
$reencryptedPacket = encodePacket($decryptedPacket);
echo 'Re-encoded packet: ' . bin2hex($reencryptedPacket) . "\n";
</pre>
===Sniffing-Erkentnisse===
Aus dem Forum von Markus und den Captures von ext23:
Grundsaetzlich laeuft die Kommunikation wohl so:
Das Smartphone kommuniziert direkt mit der Steckdose sofern im LAN angebunden. Das Hinwort vom Smartphone muss von der Steckdose korrekt bestaetigt werden, ansonsten wird wiederholt. Danach Broadcastet die Steckdose den Status im eigenen Subnetz und meldet wohl danach den Staus an den Server im Internet.
Wenn die Taste an der Steckdose gedrueckt wird:
Die Steckdose broadcastet zwei mal ihre Information, dann wird die Info an den Webserver geschickt.
<pre>
Datenwert 25bytes UDP
# Framenummer im Trace
Hin Vom Smartphone zur Steckdose
Rueck Von Steckdose zum Smartphone
BC Broadcast von der Steckdose ins lokale Subnetz
UPL Von der Steckdose zum Server im Internet
Antwort Vom Server im Internet zur Steckdose
1 Indikator App/Steckdose oder Hin/Rueck?
2 MAC Adresse d. Steckdose
3 immer gleich. Evtl nur ein Toggle Befehl?
4 Unklarer Payload
?? Unklar warum gesendet wurde. Evtl Statusupdate?
|-1--|-------2---------|3-|------------------------4---------------------|
4?? Upload 01:40:ac:cf:23:2a:9f:94:10:fc:ba:26:9d:c2:ad:75:be:68:32:43:b9:99:9d:5b:c2
5?? Antwort ACK
6?? Antwort 01:42:ac:cf:23:2a:9f:94:10:29:0b:c8:f9:51:c0:ef:53:88:45:6d:67:a6:8e:ec:d6
7?? Upload ACK
8An Hin 01:40:ac:cf:23:2a:9f:94:10:c8:59:a5:71:10:99:5d:e8:fd:b0:81:ce:08:9f:ac:b1
9An Rueck 01:42:ac:cf:23:2a:9f:94:10:c8:59:a5:71:10:99:5d:e8:fd:b0:81:ce:08:9f:ac:b1
10An Broadcast1 01:42:ac:cf:23:2a:9f:94:10:ee:f5:78:f1:e5:0a:93:9f:f6:a6:3d:e8:32:1c:53:c4
11An Broadcast2 01:42:ac:cf:23:2a:9f:94:10:ee:f5:78:f1:e5:0a:93:9f:f6:a6:3d:e8:32:1c:53:c4
12An Upload 01:42:ac:cf:23:2a:9f:94:10:c1:b2:c8:9c:b2:8b:0c:9b:ef:58:7e:63:b7:a3:96:8f
13An Antwort ACK
14Aus Hin 01:40:ac:cf:23:2a:9f:94:10:cc:52:dc:6b:9f:0d:14:14:5d:5d:69:17:43:13:0c:c9
15Aus Rueck 01:42:ac:cf:23:2a:9f:94:10:2f:ea:1b:ed:aa:fe:16:d4:ac:41:39:b0:ce:4c:02:02 << Antwort nicht identisch Hinwort
16WDH? Hin 01:40:ac:cf:23:2a:9f:94:10:07:d6:a4:53:b0:eb:fc:20:7c:8c:86:11:50:40:2b:1d
17WDH? Rueck 01:42:ac:cf:23:2a:9f:94:10:07:d6:a4:53:b0:eb:fc:20:7c:8c:86:11:50:40:2b:1d
18Aus BC1 01:42:ac:cf:23:2a:9f:94:10:67:78:ff:35:3a:1b:43:c4:3a:04:10:3d:fa:80:88:3a
19Aus BC2 01:42:ac:cf:23:2a:9f:94:10:67:78:ff:35:3a:1b:43:c4:3a:04:10:3d:fa:80:88:3a
20Aus UPL 01:42:ac:cf:23:2a:9f:94:10:19:dd:b9:18:bb:2e:54:00:5b:54:86:18:94:ef:f1:58
21Aus Antw ACK
</pre>
<pre>
26:f1:a2:10:6c:aa:fd:94:2f:eb:5f:2e:16:5b:77:0d
-Daten verschlüsselt mit "AES/CBC/NoPadding" mit Schlüssel "0123456789abcdef"
Enthält folgendes entschlüsselt:
00 00 29 C1 11 71 50 01 00 00 FF FF 04 04 04 04
[…]
Hinweise zu den Paketnummern:
Die Range ist von 00 00 bis FF FF, also 65535. Danach wird der Zähler von der Dose zurückgesetzt.
Die Dose akzeptiert keine Befehle mit Paketnummern kleiner als der interne Zähler.
Man kann aber immer FF FF benutzen, um sicher zu gehen, dass der Befehl akzeptiert wird. (Sofern man auf das Zählen der Pakete verzichten kann)
Auch wenn die Dose einen Befehl identisch als Quittung zurücksendet wird der Paketzähler in der Dose erhöht.
</pre>


== Links ==
== Links ==
* {{Link2Forum|Topic=38112.0|LinkText=Forenthread}}
* {{Link2Forum|Topic=38112.0|LinkText=Forenthread}}
* {{Link2Forum|Topic=38112|Message=379733|LinkText=Download Modul}}


[[Kategorie:IP Components]]
[[Kategorie:IP Components]]

Version vom 26. Dezember 2015, 02:05 Uhr

Silvercrest SWS A1 Wifi
Zweck / Funktion
Schalten der Silvercrest SWS-A1 Steckdose
Allgemein
Typ Inoffiziell
Details
Dokumentation siehe Forum
Support (Forum) IP
Modulname 53_Silvercrest_SWS_A1_Wifi.pm
Ersteller JoergOstertag
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Silvercrest SWS-A1 Wifi schaltbare Steckdose

Die per Wifi schaltbare Steckdose von der Lidl Hausmarke Silvercrest ist nach Erstkonfiguration per UDP steuerbar.

Im Forums Thread ist einiges an interessanten Hinweisen zu der technischen Umsetzung der Steckdose aufgeführt.

Exemplarisch ist in dem Perl Modul 53_Silvercrest_SWS_A1_Wifi.pm das ein-/Aus-schalten der Steckdose implementiert.

Stromverbrauch

Laut Forum: Verbrauch ca. 0,3 Watt. Bei angezogenem Relais schwankt es zwischen 0,4 und 1 Watt.

Web GUI

Login: admin Passwort: admin


PHP Example Code with crypt

#!/usr/bin/php
<?php

function decodePacket($packet) {
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    $key = '0123456789abcdef';
    mcrypt_generic_init($td, $key, $key);
    $result = mdecrypt_generic($td, $packet);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $result;
}

function encodePacket($packet) {
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    $key = '0123456789abcdef';
    mcrypt_generic_init($td, $key, $key);
    $result = mcrypt_generic($td, $packet);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $result;
}

$msg = '4CF75F5A28A181574AC1B563CD51A78D'; // to switch 'on'
echo "Original message: $msg\n";

$decryptedPacket = decodePacket(hex2bin($msg));
echo 'Decrypted packet: ' . bin2hex($decryptedPacket) . "\n";

$reencryptedPacket = encodePacket($decryptedPacket);
echo 'Re-encoded packet: ' . bin2hex($reencryptedPacket) . "\n";


Sniffing-Erkentnisse

Aus dem Forum von Markus und den Captures von ext23:

Grundsaetzlich laeuft die Kommunikation wohl so: Das Smartphone kommuniziert direkt mit der Steckdose sofern im LAN angebunden. Das Hinwort vom Smartphone muss von der Steckdose korrekt bestaetigt werden, ansonsten wird wiederholt. Danach Broadcastet die Steckdose den Status im eigenen Subnetz und meldet wohl danach den Staus an den Server im Internet.

Wenn die Taste an der Steckdose gedrueckt wird: Die Steckdose broadcastet zwei mal ihre Information, dann wird die Info an den Webserver geschickt.


Datenwert 25bytes UDP

#	Framenummer im Trace
Hin	Vom Smartphone zur Steckdose
Rueck	Von Steckdose zum Smartphone
BC	Broadcast von der Steckdose ins lokale Subnetz
UPL	Von der Steckdose zum Server im Internet
Antwort	Vom Server im Internet zur Steckdose
1	Indikator App/Steckdose oder Hin/Rueck?
2	MAC Adresse d. Steckdose
3	immer gleich. Evtl nur ein Toggle Befehl?
4	Unklarer Payload
??	Unklar warum gesendet wurde. Evtl Statusupdate?



		|-1--|-------2---------|3-|------------------------4---------------------|

4??	Upload	01:40:ac:cf:23:2a:9f:94:10:fc:ba:26:9d:c2:ad:75:be:68:32:43:b9:99:9d:5b:c2
5??	Antwort ACK
6??	Antwort	01:42:ac:cf:23:2a:9f:94:10:29:0b:c8:f9:51:c0:ef:53:88:45:6d:67:a6:8e:ec:d6
7??	Upload	ACK


8An	Hin 	01:40:ac:cf:23:2a:9f:94:10:c8:59:a5:71:10:99:5d:e8:fd:b0:81:ce:08:9f:ac:b1
9An	Rueck	01:42:ac:cf:23:2a:9f:94:10:c8:59:a5:71:10:99:5d:e8:fd:b0:81:ce:08:9f:ac:b1
10An Broadcast1	01:42:ac:cf:23:2a:9f:94:10:ee:f5:78:f1:e5:0a:93:9f:f6:a6:3d:e8:32:1c:53:c4
11An Broadcast2	01:42:ac:cf:23:2a:9f:94:10:ee:f5:78:f1:e5:0a:93:9f:f6:a6:3d:e8:32:1c:53:c4
12An	Upload	01:42:ac:cf:23:2a:9f:94:10:c1:b2:c8:9c:b2:8b:0c:9b:ef:58:7e:63:b7:a3:96:8f
13An	Antwort	ACK


14Aus	Hin	01:40:ac:cf:23:2a:9f:94:10:cc:52:dc:6b:9f:0d:14:14:5d:5d:69:17:43:13:0c:c9
15Aus	Rueck	01:42:ac:cf:23:2a:9f:94:10:2f:ea:1b:ed:aa:fe:16:d4:ac:41:39:b0:ce:4c:02:02	<< Antwort nicht identisch Hinwort
16WDH?	Hin	01:40:ac:cf:23:2a:9f:94:10:07:d6:a4:53:b0:eb:fc:20:7c:8c:86:11:50:40:2b:1d
17WDH?	Rueck	01:42:ac:cf:23:2a:9f:94:10:07:d6:a4:53:b0:eb:fc:20:7c:8c:86:11:50:40:2b:1d	
18Aus	BC1	01:42:ac:cf:23:2a:9f:94:10:67:78:ff:35:3a:1b:43:c4:3a:04:10:3d:fa:80:88:3a
19Aus	BC2	01:42:ac:cf:23:2a:9f:94:10:67:78:ff:35:3a:1b:43:c4:3a:04:10:3d:fa:80:88:3a
20Aus	UPL	01:42:ac:cf:23:2a:9f:94:10:19:dd:b9:18:bb:2e:54:00:5b:54:86:18:94:ef:f1:58
21Aus	Antw	ACK

26:f1:a2:10:6c:aa:fd:94:2f:eb:5f:2e:16:5b:77:0d
-Daten verschlüsselt mit "AES/CBC/NoPadding" mit Schlüssel "0123456789abcdef"
 Enthält folgendes entschlüsselt:
00 00 29 C1 11 71 50 01 00 00 FF FF 04 04 04 04
[…]
Hinweise zu den Paketnummern:
Die Range ist von 00 00 bis FF FF, also 65535. Danach wird der Zähler von der Dose zurückgesetzt.
Die Dose akzeptiert keine Befehle mit Paketnummern kleiner als der interne Zähler.
Man kann aber immer FF FF benutzen, um sicher zu gehen, dass der Befehl akzeptiert wird. (Sofern man auf das Zählen der Pakete verzichten kann)
Auch wenn die Dose einen Befehl identisch als Quittung zurücksendet wird der Paketzähler in der Dose erhöht.

Links