Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

189 lines (148 sloc) 6.632 kB
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 [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==
===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.
==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]]
Jump to Line
Something went wrong with that request. Please try again.