NPM 2000: Unterschied zwischen den Versionen
Niklas (Diskussion | Beiträge) K (→Protokoll) |
K (Aktualisierung) |
||
(15 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Diese Seite dient der Dokumentation des Reverse-Engineering-Prozesses des NPM 2000. | Diese Seite dient der Dokumentation des Reverse-Engineering-Prozesses des NPM 2000 (Network Power Manager v1.10.1 von Shenzhen Clever Electronics). | ||
==Überblick== | ==Überblick== | ||
Zeile 7: | Zeile 7: | ||
* Hochspannungsteil mit den Relais und einem Trafo zur Versorgnung des Niederspannungsteils. | * Hochspannungsteil mit den Relais und einem Trafo zur Versorgnung des Niederspannungsteils. | ||
* Niederspannungsteil mit µC und einer Netzwerkanbindung auf einer separaten Platine. | * Niederspannungsteil mit µC und einer Netzwerkanbindung auf einer separaten Platine. | ||
Eine grundlegende Doku gibt es hier: [[Media:NPM_Manual.pdf]] | |||
==Anschlüsse== | ==Anschlüsse== | ||
Zeile 12: | Zeile 14: | ||
* COM1 ist RS485 oder RS422 | * COM1 ist RS485 oder RS422 | ||
* COM2 ist RS232 | * COM2 ist RS232 | ||
* Port(1) Switch | |||
* Port(2) Hausbus | |||
* Port(3) Rundumleuchte E-Ecke | |||
* Port(4) frei | |||
* Port(5) frei | |||
* Port(6) frei | |||
* Port(7) frei | |||
* Port(8) Rundumleuchte Raum | |||
==Shell Script zum Ansprechen== | |||
Ein Shell Script zum Ansprechen der NPM findet sich [http://github.com/Niklas974/npm2000 hier] | |||
== npmd (daemon) == | |||
Neben dem Shellscript gibt es nun auch einen daemon, der eine HTTP-API bereitstellt um mit dem NPM zu sprechen. Der Vorteil eines Daemons liegt darin, dass es nun keine Timing-Probleme mehr gibt (der NPM kann nur eine Verbindung und hat ein gewisses Delay bis er diese als geschlossen erkennt) und die Befehle schneller abgearbeitet werden: | |||
http://github.com/raumzeitlabor/npmd | |||
==Hochspannungsteil== | ==Hochspannungsteil== | ||
Zeile 44: | Zeile 64: | ||
* NIC: RTL8109AS 14454T1 | * NIC: RTL8109AS 14454T1 | ||
* EEPROM: CSI 24WC023 0445C | * EEPROM: CSI 24WC023 0445C | ||
* IP: per Default: 192.168.0.178/24 | |||
===TODO=== | ===TODO=== | ||
Zeile 109: | Zeile 130: | ||
etc... | etc... | ||
* Port 1 | |||
** an: 01B7 | |||
** aus: 01C7 | |||
* Port 2 | |||
** an: 02B4 | |||
** aus: 02C4 | |||
* Port 3 | |||
** an: 03B5 | |||
** aus: 03C5 | |||
* Port 4 | |||
** an: 04B2 | |||
** aus: 04C2 | |||
* Port 5 | |||
** an: 05B3 | |||
** aus: 05C3 | |||
* Port 6 | |||
** an: 06B0 | |||
** aus: 06C0 | |||
* Port 7 | |||
** an: 07B1 | |||
** aus: 07C1 | |||
* Port 8 | |||
** an: 08BE | |||
** aus: 08CE | |||
Abfrage Port Status: | |||
(echo -n '5507FFFF123456785A'; sleep 0.1; echo -n 'D103FFFFD2') | netcat 192.168.0.178 4001 | |||
Antwort: | |||
AA03FFFFA9D104FFFF4E9B | |||
Die letzten 4 Zeichen in binär: 0100 1110 1001 1011 | |||
* Port an: 7,4,3,2 aus: 8,6,5,1 | |||
* Die ersten beiden der 4er Gruppen in hex geben in Binär konvertiert den Portstatus an. (hier: 0100 und 1110) | |||
* Die letzen beiden Vierergruppen (hier:1001 und 1011) sind noch unklar. | |||
==Bilder== | |||
{| | |||
| [[Datei:Npm01.jpg|200px|thumb|left|NPM Innenansicht Hochspannungsteil]] | |||
| [[Datei:Npm02.jpg|200px|thumb|left|NPM Innenansicht Hochspannungsteil]] | |||
| [[Datei:Npm03.jpg|200px|thumb|left|NPM Innenansicht Niederspannungsteil]] | |||
|- | |||
| [[Datei:Npm04.jpg|200px|thumb|left|NPM Innenansicht Niederspannungsteil]] | |||
| [[Datei:Npm05.jpg|200px|thumb|left|NPM Rückansicht]] | |||
| [[Datei:Npm06.jpg|200px|thumb|left|NPM Vorderansicht]] | |||
|} | |||
[[Kategorie:Hardware]] |
Aktuelle Version vom 11. September 2012, 20:40 Uhr
Diese Seite dient der Dokumentation des Reverse-Engineering-Prozesses des NPM 2000 (Network Power Manager v1.10.1 von Shenzhen Clever Electronics).
Überblick
Das NPM 2000 besteht aus zwei Platinen:
- Hochspannungsteil mit den Relais und einem Trafo zur Versorgnung des Niederspannungsteils.
- Niederspannungsteil mit µC und einer Netzwerkanbindung auf einer separaten Platine.
Eine grundlegende Doku gibt es hier: Media:NPM_Manual.pdf
Anschlüsse
- COM1 ist RS485 oder RS422
- COM2 ist RS232
- Port(1) Switch
- Port(2) Hausbus
- Port(3) Rundumleuchte E-Ecke
- Port(4) frei
- Port(5) frei
- Port(6) frei
- Port(7) frei
- Port(8) Rundumleuchte Raum
Shell Script zum Ansprechen
Ein Shell Script zum Ansprechen der NPM findet sich hier
npmd (daemon)
Neben dem Shellscript gibt es nun auch einen daemon, der eine HTTP-API bereitstellt um mit dem NPM zu sprechen. Der Vorteil eines Daemons liegt darin, dass es nun keine Timing-Probleme mehr gibt (der NPM kann nur eine Verbindung und hat ein gewisses Delay bis er diese als geschlossen erkennt) und die Befehle schneller abgearbeitet werden:
http://github.com/raumzeitlabor/npmd
Hochspannungsteil
TODO
- Bilder
- Schaltplan
- Bestückungsliste
Niederspannungsteil
- CPU: Atmel AT89C52-24PC (MPC51-kompatibel)
- UART: Exar ST16C550CP D9633
- EEPROM: Atmel 528 24C02 P127
- RTC: Dallas DS1307
- Reset-Controller: Maxim MAX706 EPA0305
- Diverse 74xx
- Pegelkonverter für RS232 und RS485/RS422
TODO
- Bilder
- Schaltplan
- Bestückungsliste vervollständigen
- EEPROM dumpen
- AT89C52 dumpen, sofern möglich (Lockbits?)
Netzwerkanbindung
- CPU: ??? (Beschriftung abgeschliffen)
- NIC: RTL8109AS 14454T1
- EEPROM: CSI 24WC023 0445C
- IP: per Default: 192.168.0.178/24
TODO
- Bilder
- Schaltplan
- Bestückungsliste
- CPU identifizieren
Protokoll
- Das Gerät spricht Ascii
- Dump:
00000000 35 35 30 37 46 46 46 46 31 32 33 34 35 36 37 38 5507FFFF 12345678 00000010 35 41 5A 00000000 41 41 30 33 46 46 46 46 41 39 AA03FFFF A9 00000012 43 32 30 34 46 46 46 46 30 31 43 37 C204FFFF 01C7 0000000A 43 32 30 34 46 46 46 46 30 31 43 37 C204FFFF 01C7 0000001E 35 35 30 37 46 46 46 46 31 32 33 34 35 36 37 38 5507FFFF 12345678 0000002E 35 41 5A 00000016 41 41 30 33 46 46 46 46 41 39 AA03FFFF A9 00000030 43 32 30 34 46 46 46 46 30 32 43 34 C204FFFF 02C4 00000020 43 32 30 34 46 46 46 46 30 31 43 37 C204FFFF 01C7 0000003C 35 35 30 37 46 46 46 46 31 32 33 34 35 36 37 38 5507FFFF 12345678 0000004C 35 41 5A 0000002C 41 41 30 33 46 46 46 46 41 39 AA03FFFF A9 0000004E 43 32 30 34 46 46 46 46 30 33 43 35 C204FFFF 03C5 00000036 43 32 30 34 46 46 46 46 30 31 43 37 C204FFFF 01C7 0000005A 35 35 30 37 46 46 46 46 31 32 33 34 35 36 37 38 5507FFFF 12345678 0000006A 35 41 5A 00000042 41 41 30 33 46 46 46 46 41 39 AA03FFFF A9 0000006C 43 32 30 34 46 46 46 46 30 34 43 32 C204FFFF 04C2 0000004C 43 32 30 34 46 46 46 46 30 31 43 37 C204FFFF 01C7 00000078 35 35 30 37 46 46 46 46 31 32 33 34 35 36 37 38 5507FFFF 12345678 00000088 35 41 5A 00000058 41 41 30 33 46 46 46 46 41 39 AA03FFFF A9 0000008A 42 32 30 34 46 46 46 46 30 31 42 37 B204FFFF 01B7 00000062 42 32 30 34 46 46 46 46 30 31 42 37 B204FFFF 01B7 00000096 35 35 30 37 46 46 46 46 31 32 33 34 35 36 37 38 5507FFFF 12345678 000000A6 35 41 5A 0000006E 41 41 30 33 46 46 46 46 41 39 AA03FFFF A9 000000A8 42 32 30 34 46 46 46 46 30 32 42 34 B204FFFF 02B4 00000078 42 32 30 34 46 46 46 46 30 31 42 37 B204FFFF 01B7 000000B4 35 35 30 37 46 46 46 46 31 32 33 34 35 36 37 38 5507FFFF 12345678 000000C4 35 41 5A 00000084 41 41 30 33 46 46 46 46 41 39 AA03FFFF A9 000000C6 42 32 30 34 46 46 46 46 30 33 42 35 B204FFFF 03B5 0000008E 42 32 30 34 46 46 46 46 30 31 42 37 B204FFFF 01B7 000000D2 35 35 30 37 46 46 46 46 31 32 33 34 35 36 37 38 5507FFFF 12345678 000000E2 35 41 5A 0000009A 41 41 30 33 46 46 46 46 41 39 AA03FFFF A9 000000E4 42 32 30 34 46 46 46 46 30 34 42 32 B204FFFF 04B2 000000A4 42 32 30 34 46 46 46 46 30 31 42 37 B204FFFF 01B7
Dieser Dump schaltet die ersten 4 Ports ein, und dann wieder aus
Dies kann auch mit netcat von Hand durchgeführt werden: Port 1 einschalten:
(echo -n '5507FFFF123456785A'; sleep 0.1; echo -n 'B204FFFF01B7') | netcat 192.168.0.178 4001
Port 1 ausschalten:
(echo -n '5507FFFF123456785A'; sleep 0.1; echo -n 'C204FFFF01C7') | netcat 192.168.0.178 4001
Port 2 einschalten:
(echo -n '5507FFFF123456785A'; sleep 0.1; echo -n 'B204FFFF02B4') | netcat 192.168.0.178 4001
Port 2 ausschalten:
(echo -n '5507FFFF123456785A'; sleep 0.1; echo -n 'C204FFFF02C4') | netcat 192.168.0.178 4001
etc...
- Port 1
- an: 01B7
- aus: 01C7
- Port 2
- an: 02B4
- aus: 02C4
- Port 3
- an: 03B5
- aus: 03C5
- Port 4
- an: 04B2
- aus: 04C2
- Port 5
- an: 05B3
- aus: 05C3
- Port 6
- an: 06B0
- aus: 06C0
- Port 7
- an: 07B1
- aus: 07C1
- Port 8
- an: 08BE
- aus: 08CE
Abfrage Port Status:
(echo -n '5507FFFF123456785A'; sleep 0.1; echo -n 'D103FFFFD2') | netcat 192.168.0.178 4001
Antwort:
AA03FFFFA9D104FFFF4E9B
Die letzten 4 Zeichen in binär: 0100 1110 1001 1011
- Port an: 7,4,3,2 aus: 8,6,5,1
- Die ersten beiden der 4er Gruppen in hex geben in Binär konvertiert den Portstatus an. (hier: 0100 und 1110)
- Die letzen beiden Vierergruppen (hier:1001 und 1011) sind noch unklar.