URL - Steuerung

Antworten
andy
Administrator
Beiträge: 448
Registriert: Dienstag 15. Januar 2008, 11:51
Wohnort: Düsseldorf
Kontaktdaten:

URL - Steuerung

Beitrag von andy » Donnerstag 6. April 2017, 15:04

Über Adressleiste des Browsers kann ein Steuerungsbefehl gesendet werden.

Zu der URL-Adresse als IP oder Hostname wird: ?Befehl=Parameter,(optional)User+Passwort(als ein String - zusammengelegt) gesendet.
Leerzeichen (space) sind nicht erlaubt z.B; ?Sw = 0x55 , AAoIBQ8PCwkN. Richtig ist: ?Sw=0x55,AAoIBQ8PCwkN
User+Passwort kann Klartext, Base64 oder XOR+Base64 kodiert werden.
z. B.:
http://192.168.188.26?Sw=0x55,AAoIBQ8PCwkN
http://net-control?Sw=0b00001111,AAoIBQ8PCwkN

XOR+Base64 wird User+Passwort als ein String mit dem Passwort codiert.
JavaScript Beispiel:

Code: Alles auswählen

function utoa(str) {return window.btoa(unescape(encodeURIComponent(str)))}
function encrypt(str, key){
var ord=[],res="",i
for (i=1;i<=255;i++) ord[String.fromCharCode(i)]=i
for (i=0;i<str.length;i++) res+=String.fromCharCode(ord[str.substr(i, 1)]^ord[key.substr(i%key.length,1)])
return(res)
encrypt(User+Passwort, Passwort)

-------------------------------------------------------------------------------------------------------------
NET-PwrCtrl HOME, PRO, POWER ab Firmware 4.5
NET-PwrCtrl ADV, HUT, IO ab Firmware 6.1

Auf jeden Befehl (außer Reset) kommt eine Antwort per u_res.htm.

-------------------------------------------------------------------------------------------------------------
Bei NET-PwrCtrl HOME, PRO, POWER:

Hostname ; IP ; Name/Position/Funktion ; Uhrzeit ; Sekunden seit dem (Neu)Start ; Typ{P=PRO,POWER;H=HOME} ; Firmware Version ; Temperatur (bei PRO,POWER)<br>
Steckdosen Name ; Schaltzustand {1=on;0=off} ; Sperrung{0=nicht gesperrt;1=gesperrt};
8-mal wiederholt für jede Steckdose (auch bei HOME)

HOME ;192.168.188.26;NET - Power;Do, 06.04.17 15:04:51;10;H;4.5;
Nr. 1;1;0;Nr. 2;0;0;Nr. 3;0;0;Nr. 4;0;1;Nr. 5;0;1;Nr. 6;0;1;Nr. 7;0;1;Nr. 8;0;1;

-------------------------------------------------------------------------------------------------------------
Bei NET-PwrCtrl ADV, HUT, IO:

Hostname ; IP ; Name/Position/Funktion ; NTP-Zeit;Sekunden seit dem (Neu)Start ; Typ{a= ADV;i=IO;h=HUT;f=HUT F};Firmware Version; Temperatur<br>
Steckdosen Name ; Schaltzustand {0=off;1=on} ; Sperrung{0=nicht gesperrt;1=gesperrt};
8-mal wiederholt für jede Steckdose <br>
Name des IO ; Schaltzustand {0=off;1=on} ; Richtung {0=Ausgang;1=Eingang};
8-mal wiederholt für jedes IO <br>
Bei Sensor {s;Temperature;Humidity;Brightness}


NET-H ;192.168.188.87;NET - Power Control;1491485194;19;h;6.1;25.3
Nr.1;0;0;Nr.2;1;1;Nr.3;0;0;Nr.4;1;0;Nr.5;0;0;Nr.6;1;0;Nr.7;0;0;Nr.8;1;0;
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;
s;21.91;41.2;8;

-------------------------------------------------------------------------------------------------------------
bei allen NET-PwrCtrl

Segment = Steckdosennummer oder IO As String;
Passwort = Passwort As String;
User = User As String
Hex Byte 2 stellig = 0x00-0xFF
Hex 16 Bit 4 stellig = 0x0000-0xFFFF
Binär 8 stellig 0b00000000-0b11111111
Die Länge des Befehls darf nicht geändert werden. Keine Leerzeichen dazwischen.

Status der Leiste senden
?Stat=UserPasswort

Relais einschalten
?Sw_on=Segment,UserPasswort
z.B.: ?Sw_on=1,UserPasswort

Relais ausschalten
?Sw_off=Segment,UserPasswort
z.B.: ?Sw_off=1,UserPasswort

Steckdose zeit-verzögert abschalten
?St_off=Segment,Zeit 16bit in Hex,UserPasswort
z.B.: ?St_off=1,0x0030,UserPasswort

alle Steckdosen schalten
?Sw=Steckdosen als Byte Hex oder Binär,UserPasswort
z.B.:
?Sw=0x55,UserPasswort
?Sw=0b00001111,UserPasswort
Steckdosen Nummer = 0b87654321, 0x(8765)(4321)

Reset
?Reset=UserPasswort

nur für NET-PwrCtrl ADV, HUT, IO ab Firmware 6.1

IO Richung (0=Ausgang; 1=Eingang)
?IO_dir=Richtung als Byte Hex oder Binär,UserPasswort
z.B.:
?IO_dir=0x55,UserPasswort
?IO_dir=0b00001111,UserPasswort
IO Nummer = 0b87654321, 0x(8765)(4321)

IO einschalten
?IO_on=Segment,UserPasswort
z.B.: ?IO_on=1,UserPasswort

IO ausschalten
?IO_off=Segment,UserPasswort
z.B.: ?IO_off=1,UserPasswort

alle IO’s schalten
?IO=IO’s als Byte Hex oder Binär,UserPasswort
z.B.:
?IO=0x55,UserPasswort
?IO=0b00001111,UserPasswort
IO Nummer = 0b87654321, 0x(8765)(4321)

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) HEX in Millisekunden = max. 65.5 Sek.
z.B.:
?Sw_bl=1,0x04B0,0x04B0,adminanel

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) HEX in Millisekunden = max. 65.5 Sek.
z.B.:
?IO_bl=1,0x04B0,0x04B0,adminanel
}

paphko
Beiträge: 26
Registriert: Samstag 13. September 2014, 14:12

Re: URL - Steuerung

Beitrag von paphko » Samstag 22. Juli 2017, 22:00

Status der Leiste senden
?Stat=UserPasswort
Werden damit die Zustände der Relais und der IOs zurückgegeben? Wie sieht ein Beispiel aus?

andy
Administrator
Beiträge: 448
Registriert: Dienstag 15. Januar 2008, 11:51
Wohnort: Düsseldorf
Kontaktdaten:

Re: URL - Steuerung

Beitrag von andy » Sonntag 23. Juli 2017, 08:47

Lieber paphko,

Steht doch oben:

NETCONTROL ;192.168.188.60;NET - Power Control;1500803107;136314;h;6.3;25.8
Nr.1;1;0;Nr.2;0;0;Nr.3;0;0;Nr.4;0;0;Nr.5;0;0;Nr.6;0;0;Nr.7;0;0;Nr.8;0;0;
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;

LG Andy

schussda
Beiträge: 1
Registriert: Donnerstag 8. März 2018, 12:56

Re: URL - Steuerung

Beitrag von schussda » Mittwoch 21. März 2018, 14:55

kann man auch den locked Status eines Ports ändern?
Möchte nur entsprechende ports automatisiert markieren (für die GUI sperren), so dass man sieht, dass diese in Benutzung sind.

flobe
Beiträge: 2
Registriert: Montag 9. April 2018, 07:38

Re: URL - Steuerung

Beitrag von flobe » Montag 9. April 2018, 07:50

Die Abfrage des Steckdosenstatus (?Stat) erfordert derzeit immer ein Redirect auf /u_res.htm. Da HTTP zustandslos ist, merkt die Steckdose sich vermutlich die IP-Adresse des ersten Requests? Dadurch ist der Vorgang nicht atomar und es kann zu Problemen kommen, wenn man die Abfrage von mehreren unabhängigen Prozessen parallel durchführt. Gibt es eine URL, mit der die Abfrage des Status ohne Redirect möglich ist?

andy
Administrator
Beiträge: 448
Registriert: Dienstag 15. Januar 2008, 11:51
Wohnort: Düsseldorf
Kontaktdaten:

Re: URL - Steuerung

Beitrag von andy » Montag 9. April 2018, 09:33

Hi flobe,

Wenn zwei Anfragen gleichzeitig kommen kann es Probleme mit der Antwort geben. Das stimmt.

Bei UDP haben wir Broadcast.

Wie sollte die Lösung aussehen?

LG Andy

flobe
Beiträge: 2
Registriert: Montag 9. April 2018, 07:38

Re: URL - Steuerung

Beitrag von flobe » Donnerstag 12. April 2018, 08:00

Hallo Andy,

einfach eine URL anbieten, die eine direkte Abfrage/Kommando ohne Redirect erlaubt mit HTTP Basic Authentication. So wie es die Webseite ja auch macht.

Beispiele:

Abfrage Status: http://net-pwrctrl/api?Stat
Schalten: http://net-pwrctrl/api?Sw_on=1

Die Credentials werden vom Client im HTTP-Header 'Authorization' mitgegeben.

Gruß,
Florian.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast