NEWS
[gelöst] Surveillance Station Home Mode steuern
-
Ich habe es nun geschafft, eine Information zum Request auszugeben.
Jetzt kann man das Problem weiter eingrenzen. Das Einloggen funktioniert problemlos, ebenso das Ausloggen. Testweise habe ich anstatt des Schaltens des Home Modes die GetInfo-Anweisung genommen. Als Ergebnis der Error Code 119 geschmissen. Leider finde ich nirgens die Erklärung des Fehlers.
Kann mir da jemand weiterhelfen? Kann es unter Umständen daran liegen, dass in unterschiedlichen Ebenen aufgerufen werden, sodass beim GetInfo-Befehl der Login "vergessen" wurde? Als Alternative könnte man doch sicher auch eine JavaScript Funktion schreiben und als Block einfügen, doch leider müsste mir da jemand helfen, da ich keine Ahnung von JavaScript-Programmierung habe.
-
Hast du die Befehle mal nacheinander im Browser eingegeben um zu sehen ob die da funktionieren?
Kann es eventuell auch sein das ein Timeout zwischen Login und nächstem Befehl benötigt wird?
-
Ich habe alle Befehle händisch im Browser ausprobiert und da funktionieren sie so, wie sie sollen. Es spielt auch keine Rolle, wieviel Zeit zwischen den Befehlsausführungen vergeht. Allerdings habe ich gesehen, dass eine SID ausgegeben wird. In einem anderen Thema habe ich gesehen, dass diese ausgelesen wurde und zusätzlich an die Befehls mit &sid="SID" angehangen wurde. Kann es sein, dass dies eine Art Sitzungszugang ist, der bei Geräten wie beim RasPi erforderlich ist?
Kann mir dann bitte jemand (einfach und verständlich) erklären, wie ich die SID aus der Rückgabe erxtrahiere und dem Befehlslink anfüge? Das wäre die einzige Möglichkeit die mir noch in den Sinn kommt.
-
Ich bin da nicht so firm aber ich könnte mir vor stellen das die Session verloren geht.
Jeder Block macht sozusagen einen neuen Browser auf und sendet seinen request.
Also "Browser auf" - Anmelden - "Browser zu"
"Browser auf" - Befehl senden - "Browser zu"
Und so ist beim zweiten aufruf kein Login erfolgt. Das war sozusagen jemand anders.
Kann aber auch sein das dem nicht so ist.
-
Ja, das ist auch meine Vermutung. Darum wird beim Login eine SID ausgegeben, welche ich dem Befehl anfügen möchte. Aber ich weiß nicht, wie ich das auf hinbekomme.
-
Hat jemand dazu eine Lösung.
Bin aktuell auch an dem Thema dran…
Wenn man einen Javascript ausführt mit dem entsprechenden Link wird es wohl auf das selbe Problem herauslaufen, oder?
Ich teste die Woche hier auch ein wenig weiter und melde mich, falls ich was hinbekomme.
-
An einer Lösung bin ich auch sehr interessiert!
Wenn jemand Erfolg damit hat, bitte hier beschreiben.
Ich habe ein Skript zum Schalten des Home Mode der Surveillance Station auf meiner CCU2 laufen, zumindest test-weise. Lieber hätte ich es aber auch auf dem ioBroker
Gruß
Stefan
-
Hallo,
seit langem melde ich mich wieder. Mittlerweile habe ich das Problem gelöst. Beim Anmelden Anmelden wird eine SID generiert. Diese muss jedem Befehl angefügt werden.
URL für den Login:
http://<ip_des_nas>:5000/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=<account>&passwd=<passwort>&session=SurveillanceStation&format=sid
URL zum Aktivieren:
http://<ip_des_nas>:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=Switch&on=true
URL zum Deaktivieren:
http://<ip_des_nas>:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=Switch&on=false
Ich hoffe, ich konnte euch helfen.</ip_des_nas></ip_des_nas></passwort></account></ip_des_nas>
-
Warum führst du die nachfolgenden Requests nicht innerhalb des Callbacks des ersten aus anstatt im Timeout? Was, wenn der erste länger dauert als 2s?
-
Ich hatte da immer Probleme, dass er die SID noch nicht verarbeitet hat und so der Befehl nicht geschalten wurde.
-
Markus, herzlichen Dank für Dein Feedback! Das ist sehr hilfreich.
@AlCalzone: Deine Rückfrage suggeriert, dass Du an einen optimierten Programmablauf denkst. Wie würde der aussehen?
Gruß
Stefan
-
Hi.
Ich bekomme es nicht hin…
Siehe Bild anbei mit 2 Fragen...
Wäre echt dankbar über eine Info…
-
@ak1:@AlCalzone: Deine Rückfrage suggeriert, dass Du an einen optimierten Programmablauf denkst. Wie würde der aussehen? `
Quick'n'dirty in Photoshop:
Eben den zweiten Request direkt nach Beendigung des ersten. -
SID und result sind neu erzeugte Variablen. Zu finden im Blockly und Variablen.
-
Hi. Danke für die Info, habe jetzt alles gefunden und so eingetippt.
Anbei die Fehlermeldung….
eine Idee was da noch falsch ist ?
-
Hallo Zusammen,
@ dominik.braun82… kann es sein das Du mit dem ersten Http Aufruf ein Sitzungsobjekt erzeugst (SessionID, Token oder was auch immer), welches Du dann in die folgenden Aufrufe übernehmen bzw. vereerben musst, um dann dann eine gewünschten Funktionen aufzurufen um an gewünschte Informationen zu kommen?
Ich vermute hier mal, es handelt sich um Web Interface ob nun REST, SOAP oder was auch immer.... und Du setzt die Befehle zwar nacheinander auf, aber übernimmst die Ergebnisse oder wichtige Objekt nicht aus den vorherigen Aufrufen.....
Beispiel:
https://192.168.x.xxx/api/login?usernam ... d=12345678
erzeugt einen Token mit dem Inhalt "8242E644EC6387EB68A2FFA7DEC1729"
Dieses Objekt muss ich mir merken und im folgenden verwenden......
Beispiel: Nächster Befehl soll mir Endkonten liefern....
https://192.168.x.xxx/api/lora/packets? ... FA7DEC1729
Das Sitzungsobjekt lebt nicht ewig, deswegen muss es erneuert werden, doch dazu braucht es noch mehr Info zu dem Dienst welchen Du verwendest...
Herzliche Grüße
Equilora aka Harald
-
Ich versteh leider…. ähhm… nix :lol:
Ich habe einfach das blocky nachgebaut und ausgeführt.
Beo "MKaiser96" funktioniert es und bei mir nicht.
Wenn ich die links in den Browser eingebe funktioniert alles.... bei Iobroker nicht.
Gibt es die Möglichkeit die html Befehler wo anders aufzurufen? Javascript o.ä.?
Danke, Gruß
-
Kurze Rückmeldung: Bei mir funktioniert das Skript wunderbar. Vielen Dank!
-
das is doch intressant…. was ist dann an meinem System anders?
Hat jemand eine Idee?
Evtl. soll ich mal was ausprobieren? Irgendwelche Ideen?
Gruß
-
wenn ich eine Variable erstelle, in Diesem Fall die "SSI" und "result". Muss ich da etwas beachten?
Ich habe die einfach in Blockly angelegt, sonst nichts. Ist das korrekt?
Wo könnte es noch dranhängen?