Danke AlCalzone du hast mir sehr geholfen. Mit Hilfe deines Beispielcodes bin ich weitergekommen.
NEWS
Latest posts made by lt1014
-
RE: Auswertung in Blockly
-
RE: Auswertung in Blockly
Sowas geht in JS am einfachsten per RegExp, ich fürchte dazu musst du dich von Blockly verabschieden. Als alter C-Hase dürfte das aber kein Problem sein: `
Schade, gerade wegen Blockly hatte ich vor auf den ioBroker umzusteigen. Da ich auf meine alten Tage weder Zeit noch Lust habe mich in JS einzuarbeiten wars das dann auch mit dem ioBroker.
Ich bin davon ausgegangen, dass Blockly etwas mächtiger ist und man solche einfachen Stringvergleiche auch umsetzen kann.
Da werd ich dann doch bei fhem bleiben.
Danke und Gruß
Willi
-
RE: Auswertung in Blockly
du willst hier auf den direkten Input des RFlinks zugreifen oder? `
Ja wieso, geht das nicht?
@bassface:Wurden dir unter Objekte keine Objekte für die Sensoren angelegt auf die du zugreifen kannst? `
Nein nur die raw Daten ändern sich und zeigen sinnvolle Werte.Es gibt da noch ein "BrelMotor 1 Blind 61" das steht aber immer auf "false"
Gruß
Willi
-
Auswertung in Blockly
Hi,
ich habe eine rflink instanz die mir von einem 433MHz sender folgendes liefert:
raw rx data : state : "20;25;BrelMotor;ID=e30417;SWITCH=31;CMD=UP;"
raw rx data : state : "20;29;BrelMotor;ID=182074;SWITCH=63;CMD=DOWN;"
Ich möchte diesen string auswerten und darauf reagieren.
In C würde ich das in etwa so machen:
parser(state); // erstellt die struktur state if(!strcmp(state.ID,"e30417") && !strcmp(state.CMD,"UP")) rollo_auf(); if(!strcmp(state.ID,"e30417") && !strcmp(state.CMD,"DOWN")) rollo_ab();
Kann mir bitte mal jemand helfen, wie ich das mit Blockly umsetzen kann ich habe absolut keinen Plan.
Vielen Dank dafür
Willi
-
RE: Http request
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
-
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