NEWS
Http request
-
Hallo mein Name ist Willi, bin Anfänger und ich habe ein Problem.
Ich programmiere normalerweise in C. Perl, Java und Blockly sind nicht so meine Welt.
Ich habe schon seit langem ein Eigenbau-Interface für Rollos mit einem ESP8266 in Betrieb das so mit Fhem super läuft.
Jetzt möchte ich das in iobroker umsetzen.
In Fhem kann ich den Rollo z.B. mit {velux("0Z")} schließen.
Ich habe eine Perl Funktion in 99_myUtils.pm erstellt, die das macht:
sub velux($)
{
my ($cmd) = @_;
my $s1;
$s1 = join "", "http://user:passwort%5C@192.168.178.55/msg?msg=", $cmd;
GetFileFromURL($s1);
}
Auch durch Eingabe im Browser von:
http://user:passwort@192.168.178.55/msg?msg=0Z
funktioniert das einwandfrei.
Jetzt habe ich in iobroker ein Blockly script erzeugt.
Hier soll testweise auf eine Aktualisierung der Fhem-Variable "testvar" reagiert werden. Was auch passiert.
Benutzt habe ich die "Aktion" "request" und die URL "http://user:passwort@192.168.178.55/msg?msg=0Z" eingetragen.
Hier der erzeugte code:
on({id: 'fhem.0.testvar.state', change: "any"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
try {
require("request")('http://user:passwort@192.168.178.55/msg?msg=0Z').on("error", function (e) {console.error(e);});
} catch (e) { console.error(e); }
});
Aber nichts geschieht.
Kann mir bitte jemand einen Tipp geben, woran das liegt. Ich probiere nun schon seit Tagen, aber ohne Erfolg.
Ich dachte der Eintrag bei "URL" in "request" führt zum gleiche Ergebnis wie in Fhem oder im Browser, aber so ist das wohl nicht.
Hier noch ein paar Daten:
iobroker läuft auf Raspberry 3B
Versionen:
user: 3.4.7
fhem: 0.5.0
node: 8.11.1
npm: 5.8.0
Danke und viele Grüße
Willi
-
Ich nutze zum Beispiel eine NodeMCU mkt esp8266 und ESPEasy drauf. Was dein esp ausgeben soll ( Relais ansteuern ) kann man einstellen. Und verbunden ist er mit dem Broker über Mqtt. Dann muss man nur noch den request senden.
Gesendet von iPhone mit Tapatalk
-
sagemal da du in C Programmierst.. schon mal was von Formatierung gehört… da gibbet ein Tag für damit der Code besser lesbar ist.... :lol: :lol: :lol:
hast du auch in den Java instanz den "request" als Erweiterung angegeben
-
Ich dachte der Eintrag bei "URL" in "request" führt zum gleiche Ergebnis wie in Fhem oder im Browser, aber so ist das wohl nicht. `
Ich sehe zwei Möglichkeiten:
1. Die JavaScript-Instanz oder das Skript selbst läuft nicht.
2. Irgendwas stimmt mit dem Skript nicht
1. kannst du leicht überprüfen. Alles grün? Instanz und Skript?
2. Hast du mal in den Log geschaut ob da was steht? Kannst du mit einem Debug-Baustein überprüfen ob der Trigger überhaupt ausgeführt wird?
hast du auch in den Java instanz den "request" als Erweiterung angegeben `
Ist unnötig, request ist eines der Module, das standardmäßig geladen ist. -
ESPEasy kann ich nicht verwenden. Es geht nicht nur um ein/aus schalten. Der ESP steuert die Rollos über ein proprietäres serielles Protokoll an.
Ja, alles grün.
Der Trigger wird ausgeführt. Ich hab testweise noch einen Variable in Fhem (läuft auf einem anderen Raspberry) ändern lassen, das hat funktioniert.
Auch habe ich mal in "request" die URL vom PC zum "Packet Sender" eingegeben, dort ist es dann auch angekommen:
Time: 7:48:56.673 TO: You:1313 From: 192.168.178.65:38246 Method: TCP Error: ASCII: GET /msg?msg=S HTTP/1.1\r\nhost: 192.168.178.37:1313\r\nauthorization: Basic YWRtaW46MTcwNzYx\r\nConnection: close\r\n\r\n HEX: 47 45 54 20 2F 6D 73 67 3F 6D 73 67 3D 53 20 48 54 54 50 2F 31 2E 31 0D 0A 68 6F 73 74 3A 20 31 39 32 2E 31 36 38 2E 31 37 38 2E 33 37 3A 31 33 31 33 0D 0A 61 75 74 68 6F 72 69 7A 61 74 69 6F 6E 3A 20 42 61 73 69 63 20 59 57 52 74 61 57 34 36 4D 54 63 77 4E 7A 59 78 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 63 6C 6F 73 65 0D 0A 0D 0A
hier zum Vergleich die "Umleitung" wie sie von Fhem kommt und funktioniert:
Time: 7:43:07.366 TO: You:1313 From: 192.168.178.25:59312 Method: TCP Error: ASCII: GET /msg?msg=S HTTP/1.0\r\nHost: 192.168.178.37:1313\r\nUser-Agent: fhem\r\nAuthorization: Basic YWRtaW46MTcwNzYx\r\n\r\n HEX: 47 45 54 20 2F 6D 73 67 3F 6D 73 67 3D 53 20 48 54 54 50 2F 31 2E 30 0D 0A 48 6F 73 74 3A 20 31 39 32 2E 31 36 38 2E 31 37 38 2E 33 37 3A 31 33 31 33 0D 0A 55 73 65 72 2D 41 67 65 6E 74 3A 20 66 68 65 6D 0D 0A 41 75 74 68 6F 72 69 7A 61 74 69 6F 6E 3A 20 42 61 73 69 63 20 59 57 52 74 61 57 34 36 4D 54 63 77 4E 7A 59 78 0D 0A 0D 0A
Kann es sein, weil im ersten Fall "Connection: close" mitgesendet wird?
Wie kann man das verhindern?
Gruß
Willi