NEWS
Io.broker.javascript WebSocket ansprechen
-
Hallo!
Bin im io.Broker Umfeld totaler Anfänger und brauche Hilfe. Ich habe noch eine andere Haustechnik wo ich derzeit noch alle Aktoren verdrahtet habe. CCU2 ist ein Test, diese in Zukunft abzulösen. Diese Haustechnik hat ein RS485 Bus zur Kommunikation und dieser kann über ein XPort angesprochen werden. Die Anlage selber hat einen WebServer und darüber kann ich auch per URL die Aktoren schalten, ist aber über den PI2, MySQL und Xport sehr langsam… meine Idee ist, mit dem JavaScript Modul direkt per WebSocket über das XPort zu schalten, um Aktionen auf dem Display auch schnell auszuführen. Daher kommt die Frage: Wie spreche ich WebSockets an?
ich habe es versucht:
//var WebSocket = require('ws'); function checksumme(daten) { var l = daten.length; var r = 1; // SOT wird nicht beruecksichtigt var cs = 0; var c = null; while (r < l) { c= ord(substr(daten,r,1)); cs = c + cs; ++r; } return (cs % 256); } var ws = new WebSocket('ws://192.168.178.103','99'); ws.onopen = function (event) { var text = "ybS14291"; var txt1 = checksumme(text); var txt = text + CHR(txt1); log(txt); ws.send(txt); };
Dabi kommt aber folgender Fehler:
javascript.0 script.js.dpc.dpcWebSocket: script.js.dpc.dpcWebSocket:19 var ws = new WebSocket('ws://192.168.178.103','99'); ^ ReferenceError: WebSocket is not defined at script.js.dpc.dpcWebSocket:19:14
Es kann nicht viel sein, ich bin aber am Ende…
Kann mir jemand aufs Pferd helfen?
-
Hallo!
Bin im io.Broker Umfeld totaler Anfänger und brauche Hilfe. Ich habe noch eine andere Haustechnik wo ich derzeit noch alle Aktoren verdrahtet habe. CCU2 ist ein Test, diese in Zukunft abzulösen. Diese Haustechnik hat ein RS485 Bus zur Kommunikation und dieser kann über ein XPort angesprochen werden. Die Anlage selber hat einen WebServer und darüber kann ich auch per URL die Aktoren schalten, ist aber über den PI2, MySQL und Xport sehr langsam… meine Idee ist, mit dem JavaScript Modul direkt per WebSocket über das XPort zu schalten, um Aktionen auf dem Display auch schnell auszuführen. Daher kommt die Frage: Wie spreche ich WebSockets an?
ich habe es versucht:
//var WebSocket = require('ws'); function checksumme(daten) { var l = daten.length; var r = 1; // SOT wird nicht beruecksichtigt var cs = 0; var c = null; while (r < l) { c= ord(substr(daten,r,1)); cs = c + cs; ++r; } return (cs % 256); } var ws = new WebSocket('ws://192.168.178.103','99'); ws.onopen = function (event) { var text = "ybS14291"; var txt1 = checksumme(text); var txt = text + CHR(txt1); log(txt); ws.send(txt); };
Dabi kommt aber folgender Fehler:
javascript.0 script.js.dpc.dpcWebSocket: script.js.dpc.dpcWebSocket:19 var ws = new WebSocket('ws://192.168.178.103','99'); ^ ReferenceError: WebSocket is not defined at script.js.dpc.dpcWebSocket:19:14
Es kann nicht viel sein, ich bin aber am Ende…
Kann mir jemand aufs Pferd helfen? `
Hm… Das richt natürlich mehr nach einen Adapter, aber...Da node.js keine eingebaute Unterstützung für WS hat, musst du ein Modul dafür benutzen.
z.B. https://www.npmjs.com/package/websocket
Da gibt es auch Beispiele, wie man das zu benutzen hat.
Du solltest in den Einstellungen von javasciprt dann dieses Modul eintragen.
-
Ich wollte mit einem Adapter ja nicht gleich nach den Sternen greifen
Finde ich auch, weil die Haustechnik ja viel mehr kann und es da gute Ansätze für einen eigenen Adapter gibt … aber erst einmal klein anfangen.
Ich werde nun mal versuchen das Modul zu installieren .. habe ich noch nie gemacht, werde berichten.
Danke
-
Hallo!
Geht, konnte das Modul installieren und auch nutzen.. schreibt schon nett den Header raus auf dem Bus. Nun geht das fummeln weiter … 1000 Danke
Gruß
dpcFan
-
Hallo!
Ich verzweifle mit dem WebSocket Zeug … ich habe nun folgendes in ein Script kopiert:
var WebSocketClient = require('websocket').client; var client = new WebSocketClient(); client.connect('ws://192.168.178.103:99'); client.onopen = function () { console.log('Sending...'); client.send('Ping'); }; client.onclose = function(){ console.log('Server offline.'); }; client.onmessage = function(msg){ console.log(msg.data); }; client.onerror = function(msg){ console.log('Sorry but there was an error.'); };
per OC-console sehe ich auch etwas auf dem RS485 Bus ankommen:
47 45 54 20 2F 20 48 54 54 50 2F 31 2E 31 0D 0A GET / HTTP/1.1.. 55 70 67 72 61 64 65 3A 20 77 65 62 73 6F 63 6B Upgrade: websock 65 74 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 et..Connection: 55 70 67 72 61 64 65 0D 0A 53 65 63 2D 57 65 62 Upgrade..Sec-Web 53 6F 63 6B 65 74 2D 56 65 72 73 69 6F 6E 3A 20 Socket-Version: 31 33 0D 0A 53 65 63 2D 57 65 62 53 6F 63 6B 65 13..Sec-WebSocke 74 2D 4B 65 79 3A 20 75 65 5A 4C 33 73 32 67 2F t-Key: ueZL3s2g/ 61 39 30 72 67 35 58 74 2B 5A 2F 77 51 3D 3D 0D a90rg5Xt+Z/wQ==. 0A 48 6F 73 74 3A 20 31 39 32 2E 31 36 38 2E 31 .Host: 192.168.1 37 38 2E 31 30 33 3A 39 39 0D 0A 0D 0A 78.103:99....
Aber jetzt komme ich nicht weiter, "onopen" wird nicht ausgelöst, alle Versuche etwas zu senden gehen leer aus!!!
Hat jemand mit io.broker JavaScript schon mal einen eigenen WebSocket Client entwickelt?