UDP Steuerungsprotokoll / Control protocol
Verfasst: Montag 5. Oktober 2009, 16:43
UDP Steuerungsprotokoll:
Es sind zwei UDP Kanäle nötig / Two UDP channels are required:
Port 75 zum Senden. Port 77 zum Empfangen (listen) / Port 75 for sending. Port 77 for receiving (listen).
Die Portnummern sind konfigurierbar. UDP Kommunikation muss erlaubt sein (Einstellung/LAN) / The port numbers are configurable. UDP communication must be allowed (Settings / LAN).
Abfragen aller Leisten im Netzwerk / Queries of all devices in the network:
Senden: Broadcast (IP = 255.255.255.255) - „wer da?“ - String.
Antwort /Answer: Port 77 UDP
NET-PwrCtrl:(Name):(I.P):(M.A.S.K):(G.a.t.e.w.a.y):(M.A.C):
(Name der Steckdose Nr. 1 , Schaltzustand {1=on;0=off}):(Name der Steckdose Nr. 2 , Schaltzustand {1=on;0=off}):
(Name der Steckdose Nr. 3 , Schaltzustand {1=on;0=off}):(Name der Steckdose Nr. 4 , Schaltzustand {1=on;0=off}):
(Name der Steckdose Nr. 5 , Schaltzustand {1=on;0=off}):(Name der Steckdose Nr. 6 , Schaltzustand {1=on;0=off}):
(Name der Steckdose Nr. 7 , Schaltzustand {1=on;0=off}):(Name der Steckdose Nr. 8 , Schaltzustand {1=on;0=off}):
Gesperrte_Steckdosen / Locked_sockets :
HTTP-Port:
(Name des IO Nr. 1, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 2, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 3, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 4, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 5, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 6, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 7, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 8, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
Temperatur:
Firmware_Version:
ab FW 6.0
{
Typ {H = HOME; P = PRO,Power; a = ADV; i = IO; h(3) = HUT(3)}:
Power Messung {p = mit Power-Messung / n = ohne}:
}
ab FW 6.1
{
Sensor {s:Temperature:Humidity:Brightness}
:xor (signalisiert XOR verschlüsseltes User+Passwort)
}
(0x0D)(0x0A)
Beispiel / example:
NET-PwrCtrl:NET-CONTROL :192.168.178.148:255.255.255.0:192.168.178.1:0.4.163.10.9.107:Nr. 1,1:Nr. 2,1:Nr. 3,1:Nr. 4,0:Nr. 5,0:Nr. 6,0:Nr. 7,1:Nr. 8,1:0:80:IO-1,0,0:IO-2,0,0:IO-3,0,0:IO-4,0,0:IO-5,0,0:IO-6,0,0:IO-7,0,0:IO-8,0,0:27.7°C:NET-PWRCTRL_06.1:h:p:225.9:0.0004:50.056:0.04:0.00:0.0:1.0000:s:20.61:40.7:7.0:xor
bei Geräten mit Power Messung:
Senden: „pow“ - String.
Antwort:
NET-PwrCtrl:(Name):(I.P):VoltageRMS:CurrentRMS:LineFrequency:ActivePower:ApparentPower:ReactivePower:PowerFactor(0x0D)(0x0A)
Beispiel / example:
NET-PwrCtrl:NET-CONTROL-ONE:192.168.188.75:226.2:0.0004:50.044:0.03:0.00:0.05:1.0000
--------------------------------------------------------------------------------------------------------------------------------
ab FW 6.0 kann User+Passwort (als ganzes) in BASE64 kodiert werden.
ab FW 6.1 kann User+Passwort (als ganzes) in XOR+BASE64 verschlüsselt werden.
c# Beispiel / example:
--------------------------------------------------------------------------------------------------------------------------------
Segment = Steckdosennummer As String;
Passwort = Passwort As String;
User = User As String
Schalten / Switch
“Sw_on" + Segment + User + Passwort //einschalten
“Sw_off” + Segment + User + Passwort //ausschalten
Beispiel / example: Sw_on1adminanel
alle Steckdosen schalten / Switch all sockets
“Sw” + Steckdosen + User + Passwort
Steckdosen = Zustand aller Steckdosen binär als char (unsigned 8 bit) Variable
LSB = Steckdose 1, MSB (Bit 8)= Steckdose 8 (PRO, POWER), Bit 2 = Steckdose 3 (HOME).
Soll nur 1 & 5 eingeschaltet werden=00010001 = 17 = 0x11 (HEX)
Beispiel / example: Swdadminanel
Ascii d=100 decimal = 1100100 binär = Dosen 8,7,3 eingeschaltet 6,5,2,1 ausgeschaltet.
Steckdose zeit-verzögert abschalten / Disconnect the socket with a time delay
“St_off” + Segment + Zeit/Time[Sek] + User + Passwort
Zeit/Time als 16 Bit (unsigned integer) in Sekunden = max. 65535 Sek.
ab FW 6.3
{
Steckdose Intervallschaltung (Blinken) / Socket interval switching (flashing)
“Sw_bl” + Segment + Einschaltzeit/On time[Millisekunden] + Ausschaltzeit/Off time[Millisekunden] + User + Passwort
Zeit/Time als 16 Bit (unsigned integer) in Millisekunden = max. 65.5 Sek.
Blinken ausschalten/Switch off flashing: “Sw_off” + (gleiches/same)Segment + User + Passwort
}
ab FW 6.1
{
IO Richung / IO direction (0=Ausgang; 1=Eingang)
“IO_dir” + IO-dir + User + Passwort
IO-dir = Richtung aller IO‘s binär als char (unsigned 8 bit) Variable
LSB = IO 1, MSB = IO 8, analog zu den Steckdosen
0=Ausgang; 1 = Eingang
Beim eingeschalteten 'IO Pullup Widerstand' und Umschaltung vom Eingang zum Ausgang werden die Eingänge auf '1' "gezogen".
When the 'IO pull-up resistor' is switched on and the input is switched from the input to the output, the inputs are pulled to '1' ".
}
IO schalten / Switch IO
“IO_on" + Segment + User + Passwort //einschalten
“IO_off” + Segment + User + Passwort //ausschalten
alle IO schalten / Switch all IO's
“IO” + IO + User + Passwort
IO = Zustand aller IO‘s binär als char (unsigned 8 bit) Variable
LSB = IO 1, MSB = IO 8, analog zu den Steckdosen
ab FW 6.3
{
IO Intervallschaltung (Blinken) / IO interval switching (flashing)
“IO_bl” + Segment + Einschaltzeit/On time[Millisekunden] + Ausschaltzeit/Off time[Millisekunden] + User + Passwort
Zeit/Time als 16 Bit (unsigned integer) in Millisekunden = max. 65.5 Sek.
Blinken ausschalten/Switch off flashing: “IO_off” + (gleiches/same)Segment + User + Passwort
}
Eingänge können nicht geschaltet werden. „wer da?“ - Frage auf die Adresse der Leiste liefert die Antwort um die Eingänge auswerten zu können.
Inputs can not be switched. wer da?" question on the address of the bar provides the answer to evaluate the inputs.
Reset
"Reset:"+ User + Passwort
Beispiel / example: Reset:adminanel
ab FW 7.0
{
Set NTP Time
"Time" + Timestamp in seconds (10 digits) + User + Passwort
Beispiel / example: Time1603900619adminanel
https://www.timestampconvert.com/
}
LG Andy
Es sind zwei UDP Kanäle nötig / Two UDP channels are required:
Port 75 zum Senden. Port 77 zum Empfangen (listen) / Port 75 for sending. Port 77 for receiving (listen).
Die Portnummern sind konfigurierbar. UDP Kommunikation muss erlaubt sein (Einstellung/LAN) / The port numbers are configurable. UDP communication must be allowed (Settings / LAN).
Abfragen aller Leisten im Netzwerk / Queries of all devices in the network:
Senden: Broadcast (IP = 255.255.255.255) - „wer da?“ - String.
Antwort /Answer: Port 77 UDP
NET-PwrCtrl:(Name):(I.P):(M.A.S.K):(G.a.t.e.w.a.y):(M.A.C):
(Name der Steckdose Nr. 1 , Schaltzustand {1=on;0=off}):(Name der Steckdose Nr. 2 , Schaltzustand {1=on;0=off}):
(Name der Steckdose Nr. 3 , Schaltzustand {1=on;0=off}):(Name der Steckdose Nr. 4 , Schaltzustand {1=on;0=off}):
(Name der Steckdose Nr. 5 , Schaltzustand {1=on;0=off}):(Name der Steckdose Nr. 6 , Schaltzustand {1=on;0=off}):
(Name der Steckdose Nr. 7 , Schaltzustand {1=on;0=off}):(Name der Steckdose Nr. 8 , Schaltzustand {1=on;0=off}):
Gesperrte_Steckdosen / Locked_sockets :
HTTP-Port:
(Name des IO Nr. 1, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 2, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 3, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 4, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 5, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 6, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 7, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
(Name des IO Nr. 8, Richtung {1=Eingang;0=Ausgang}, Schaltzustand {1=on;0=off}):
Temperatur:
Firmware_Version:
ab FW 6.0
{
Typ {H = HOME; P = PRO,Power; a = ADV; i = IO; h(3) = HUT(3)}:
Power Messung {p = mit Power-Messung / n = ohne}:
}
ab FW 6.1
{
Sensor {s:Temperature:Humidity:Brightness}
:xor (signalisiert XOR verschlüsseltes User+Passwort)
}
(0x0D)(0x0A)
Beispiel / example:
NET-PwrCtrl:NET-CONTROL :192.168.178.148:255.255.255.0:192.168.178.1:0.4.163.10.9.107:Nr. 1,1:Nr. 2,1:Nr. 3,1:Nr. 4,0:Nr. 5,0:Nr. 6,0:Nr. 7,1:Nr. 8,1:0:80:IO-1,0,0:IO-2,0,0:IO-3,0,0:IO-4,0,0:IO-5,0,0:IO-6,0,0:IO-7,0,0:IO-8,0,0:27.7°C:NET-PWRCTRL_06.1:h:p:225.9:0.0004:50.056:0.04:0.00:0.0:1.0000:s:20.61:40.7:7.0:xor
bei Geräten mit Power Messung:
Senden: „pow“ - String.
Antwort:
NET-PwrCtrl:(Name):(I.P):VoltageRMS:CurrentRMS:LineFrequency:ActivePower:ApparentPower:ReactivePower:PowerFactor(0x0D)(0x0A)
Beispiel / example:
NET-PwrCtrl:NET-CONTROL-ONE:192.168.188.75:226.2:0.0004:50.044:0.03:0.00:0.05:1.0000
--------------------------------------------------------------------------------------------------------------------------------
ab FW 6.0 kann User+Passwort (als ganzes) in BASE64 kodiert werden.
ab FW 6.1 kann User+Passwort (als ganzes) in XOR+BASE64 verschlüsselt werden.
c# Beispiel / example:
Code: Alles auswählen
string user_password = user + password;
string encr_user_password = EncryptOrDecrypt(user_password, password) + '\0';
.
.
string EncryptOrDecrypt(string text, string key)
{
var result = new StringBuilder();
//XOR
for (int c = 0; c < text.Length; c++)
result.Append((char)((uint)text[c] ^ (uint)key[c % key.Length]));
//Base64
byte[] buffer = Encoding.ASCII.GetBytes(result.ToString());
return Convert.ToBase64String(buffer);
}
Segment = Steckdosennummer As String;
Passwort = Passwort As String;
User = User As String
Schalten / Switch
“Sw_on" + Segment + User + Passwort //einschalten
“Sw_off” + Segment + User + Passwort //ausschalten
Beispiel / example: Sw_on1adminanel
alle Steckdosen schalten / Switch all sockets
“Sw” + Steckdosen + User + Passwort
Steckdosen = Zustand aller Steckdosen binär als char (unsigned 8 bit) Variable
LSB = Steckdose 1, MSB (Bit 8)= Steckdose 8 (PRO, POWER), Bit 2 = Steckdose 3 (HOME).
Soll nur 1 & 5 eingeschaltet werden=00010001 = 17 = 0x11 (HEX)
Beispiel / example: Swdadminanel
Ascii d=100 decimal = 1100100 binär = Dosen 8,7,3 eingeschaltet 6,5,2,1 ausgeschaltet.
Steckdose zeit-verzögert abschalten / Disconnect the socket with a time delay
“St_off” + Segment + Zeit/Time[Sek] + User + Passwort
Zeit/Time als 16 Bit (unsigned integer) in Sekunden = max. 65535 Sek.
ab FW 6.3
{
Steckdose Intervallschaltung (Blinken) / Socket interval switching (flashing)
“Sw_bl” + Segment + Einschaltzeit/On time[Millisekunden] + Ausschaltzeit/Off time[Millisekunden] + User + Passwort
Zeit/Time als 16 Bit (unsigned integer) in Millisekunden = max. 65.5 Sek.
Blinken ausschalten/Switch off flashing: “Sw_off” + (gleiches/same)Segment + User + Passwort
}
ab FW 6.1
{
IO Richung / IO direction (0=Ausgang; 1=Eingang)
“IO_dir” + IO-dir + User + Passwort
IO-dir = Richtung aller IO‘s binär als char (unsigned 8 bit) Variable
LSB = IO 1, MSB = IO 8, analog zu den Steckdosen
0=Ausgang; 1 = Eingang
Beim eingeschalteten 'IO Pullup Widerstand' und Umschaltung vom Eingang zum Ausgang werden die Eingänge auf '1' "gezogen".
When the 'IO pull-up resistor' is switched on and the input is switched from the input to the output, the inputs are pulled to '1' ".
}
IO schalten / Switch IO
“IO_on" + Segment + User + Passwort //einschalten
“IO_off” + Segment + User + Passwort //ausschalten
alle IO schalten / Switch all IO's
“IO” + IO + User + Passwort
IO = Zustand aller IO‘s binär als char (unsigned 8 bit) Variable
LSB = IO 1, MSB = IO 8, analog zu den Steckdosen
ab FW 6.3
{
IO Intervallschaltung (Blinken) / IO interval switching (flashing)
“IO_bl” + Segment + Einschaltzeit/On time[Millisekunden] + Ausschaltzeit/Off time[Millisekunden] + User + Passwort
Zeit/Time als 16 Bit (unsigned integer) in Millisekunden = max. 65.5 Sek.
Blinken ausschalten/Switch off flashing: “IO_off” + (gleiches/same)Segment + User + Passwort
}
Eingänge können nicht geschaltet werden. „wer da?“ - Frage auf die Adresse der Leiste liefert die Antwort um die Eingänge auswerten zu können.
Inputs can not be switched. wer da?" question on the address of the bar provides the answer to evaluate the inputs.
Reset
"Reset:"+ User + Passwort
Beispiel / example: Reset:adminanel
ab FW 7.0
{
Set NTP Time
"Time" + Timestamp in seconds (10 digits) + User + Passwort
Beispiel / example: Time1603900619adminanel
https://www.timestampconvert.com/
}
LG Andy