NEWS
Web-IO Digital 12xIn, 12xOut #57630 / Anbindung
-
SUPER,
hab das gleiche WEB-IO
Hab die Haustür-Klinkel dran, den Gaszähler (Counter) und über die S0-SS(RS232) einen Stromzähler
würde mich über eine Integration in ioBroker riesig freuen…
-
Hallo!
Das Projekt ist noch am Anfang, ich garantiere für nix
Update:
// Erweiterte Funktionen im Vergleich zu 0.1
// - Eingänge werden dargestellt
// - Counter werden gelesen
// - Neuer Datenpunkt input.<0-11>.clearcounter
// Wenn true wird nach auslesen der Counter auf der WebIO zurückgesetzt
// Im input.<0-11>.counter steht dann der zuletzt gelesene Wert!!
Debug View
Malc
-
Update:
// Erweiterte Funktionen im Vergleich zu 0.2
// - Üblen Bug behoben, Output Setzen wurde zur Disco
Und so kann man einen Ausgang blinken lassen:
setInterval(function() {
setState("javascript.0.WebIO.RZ1.output.3.state",! getState("javascript.0.WebIO.RZ1.output.3.state").val);
}, 1000);
Malc
-
so, hab mal dein Script bei mir eingebaut…
bei dieser Stelle stimmt etwas nicht:
(WebIOPassword) ? '?PW=' + WebIOPassword : '')
ich glaube, es muss immer '?PW=' ausgegeben werden, auch wenn der Passwortstring leer ist…
-
so, hab mal dein Script bei mir eingebaut…
bei dieser Stelle stimmt etwas nicht:
(WebIOPassword) ? '?PW=' + WebIOPassword : '')
ich glaube, es muss immer '?PW=' ausgegeben werden, auch wenn der Passwortstring leer ist… `
Schaue ich mir morgen direkt an, du kannst Recht haben
Ich hab da bei allen Devices ein Kennwort gesetzt, daher ist mir das nicht aufgefallen. Sollte schnell zu fixen sein. In meiner aktuellen Version habe ich noch so einiges verbessert, das pflege ich dann gleich mit ein.
Malc
-
Update:
// Erweiterte Funktionen im Vergleich zu 0.3
// - BugFix: Kommunikation bei gesetztem Passwort auf der WebIO gefixt
-Es ist tatsächlich so das der Wert "PW=" immer gesetzt werden muss auch wenn kein Passwort vergeben ist
-Die Logik ist mittlerweile so optimiert das ein Ausgang auch mit werten von <500 msec "blinken" kann. Nicht das es wichtig ist doch ist ein gleichmäßiges Blinken einer Statusleuchte möglich. Ich nutzte das für eine Anzeige Sammelstörung .
Ich habe mir auch schon mal die "native" TCP Kommunikation angesehen, das hatte ich in meine steinalte Steuerung realisiert. Aber erstens bin ich mit ioBroker in dem Bereich noch nicht fit genug und zweitens habe ich bisher noch keinen Grund gefunden das umzustellen weil alles dank dem ioBroker Konzept mehr als fix und stabil läuft. Da ich auch noch die WebThermometer 8x von Wut habe werde ich mal schauen das ich die auch noch reinbekomme.
Malc
-
warum mich das interessiert…
wie gesagt, ich habe das gleiche (?) WebIO allerdings mit eine Anbindung an einen alten Intel X86 mit WinXP und TCL/TK...
alles sehr alt und anfällig...
ich will das Ganze jetzt auch mit ioBroker lösen...
ich habe z.B. die Haustürklingel an einem Input, der ist allerdings auf "Push" konfiguriert, unter TCL/TK habe ich einen WebServer laufen, der
dann ( beim Klinkeln) abhängig vomStatus meines TV (on/Off) entweder das Bild einer Kamera auf den TV bringt oder den TV-Recorder für 30 sec aktiviert.
Bei deiner Lösung mit dem 5 sec Polling auf die Inputs, würde ich schon 5 Sec verlieren...
hast du angedacht, die Inputs auch auf "Push" umzustellen?
ich hoffe, ich habe alles "verständlich" ausgedrückt.
-
Bei deiner Lösung mit dem 5 sec Polling auf die Inputs, würde ich schon 5 Sec verlieren…
hast du angedacht, die Inputs auch auf "Push" umzustellen?
ich hoffe, ich habe alles "verständlich" ausgedrückt. `
Auf Dauer werde ich das vermutlich umbauen auf direkte TCP Kommunikation, aber da muss ich erstmal tiefer in die ioBroker Systemprogrammierung eintauchen. Ich denke aber das du problemlos das Pollintervall hochdrehen kannst.
Es würde ja ausreichend nur den Inputpoll anzupassen:
setInterval(function() { GetInPutState(WebIOName) }, 1000);
Schau doch mal ob das erträglich schnell ist, wenn wir nicht die einzigen sind die diese Geräte haben würde ich mir dann sicher auch mal die Adapterentwicklung anschauen. Aktuell habe ich in 3 Standorten ingesamt 5 WebIO's im Einsatz.
Malc
-
Hallo malc,
hab mir das mal angesehen… bin nicht der geborene JS progger, aber es scheint zu funktionieren...
var WebIOName = "WuT-WebIO"; var WuT_port=85; var net = require('net'); var server = net.createServer(); server.on('connection', handleConnection); server.listen(WuT_port, function() { console.log('server listening to '+ server.address()); }); var ConvertBase = function (num) { return { from : function (baseFrom) { return { to : function (baseTo) { return parseInt(num, baseFrom).toString(baseTo); } }; } }; }; function handleConnection(conn) { var remoteAddress = conn.remoteAddress + ':' + conn.remotePort; //console.log('new client connection from ' + remoteAddress); conn.on('data', onConnData); conn.once('close', onConnClose); conn.on('error', onConnError); function onConnData(d) { // console.log('connection data from: '+ remoteAddress+':'+ d); //conn.write(d); // nicht zurückschreiben if (d.toString().includes('STOP')) { console.log('Listener stopped from '+remoteAddress); server.close() } console.log('HEX:'+d.toString('binary')); if (d.toString().includes('input')) { var bindata=d.toString().split(';'); console.log(Number(bindata[1])+d.toString()) var binout=ConvertBase(bindata[1]).from(16).to(2); // convert HEX -> BIN console.log(binout); var z = binout.length-1; console.log('Inp '+ z +' '+binout[0]); setState('WebIO.' + WebIOName + '.input.'+z+'.name' , true ); } } function onConnClose() { // console.log('connection closed from' + remoteAddress); } function onConnError(err) { console.log('Connection error:'+ remoteAddress +':'+err.message); //server.close(); } }
damit wird ein INPUT state gesetzt sobald, ein INPUT aktiv wird…
-
Vielen Dank für das Beispiel,
ich hatte das damals mal in Visual C programmiert, dein Code werde ich mit ansehen und mal eine neue Version bauen. Allerdings möchte ich beide Kommunikationswege möglich halten, je nach Anbindung!
…Sieht schon mal arg simpel aus, was man mit JS / ioBroker alles so machen kann
Malc
Hallo malc,
hab mir das mal angesehen… bin nicht der geborene JS progger, aber es scheint zu funktionieren...
var WebIOName = "WuT-WebIO"; var WuT_port=85; var net = require('net'); var server = net.createServer(); server.on('connection', handleConnection); server.listen(WuT_port, function() { console.log('server listening to '+ server.address()); }); var ConvertBase = function (num) { return { from : function (baseFrom) { return { to : function (baseTo) { return parseInt(num, baseFrom).toString(baseTo); } }; } }; }; function handleConnection(conn) { var remoteAddress = conn.remoteAddress + ':' + conn.remotePort; //console.log('new client connection from ' + remoteAddress); conn.on('data', onConnData); conn.once('close', onConnClose); conn.on('error', onConnError); function onConnData(d) { // console.log('connection data from: '+ remoteAddress+':'+ d); //conn.write(d); // nicht zurückschreiben if (d.toString().includes('STOP')) { console.log('Listener stopped from '+remoteAddress); server.close() } console.log('HEX:'+d.toString('binary')); if (d.toString().includes('input')) { var bindata=d.toString().split(';'); console.log(Number(bindata[1])+d.toString()) var binout=ConvertBase(bindata[1]).from(16).to(2); // convert HEX -> BIN console.log(binout); var z = binout.length-1; console.log('Inp '+ z +' '+binout[0]); setState('WebIO.' + WebIOName + '.input.'+z+'.name' , true ); } } function onConnClose() { // console.log('connection closed from' + remoteAddress); } function onConnError(err) { console.log('Connection error:'+ remoteAddress +':'+err.message); //server.close(); } }
damit wird ein INPUT state gesetzt sobald, ein INPUT aktiv wird… `
-
Supergeil!
Ich hab auch 3 WEB-IO Geräte.
Was muss ich tun, wenn ich 0-Ahnung habe, um das bei mir an's laufen zu bekommen?
Passwort und IP Adresse habe ich auf meine Werte geändert.Ich bekommen folgende Fehlermeldung:
javascript.0 script.js.Webio compile failed at script.js.Webio:745
(wobei 745 die allerletzte Zeile ist)Kann man das nicht einfach mit Blockly progammieren? (dann würde ich es evtl. auch irgendwann verstehen)
Hab's mal so probiert... tut's natürlich überhaupt nicht. 0:-)
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on_ext" id="|!p,R~kWe(W:{zM;s|Wo" x="-712" y="-837"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="u3(^IY.L{?;)w]NIrTj`"> <field name="oid">WEB_IO_192.168.1.Output_0.Output_1</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="KH*!rCsEC5nOPK8xzyv9"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="$*4nWry8)/w5iQoy$UCj"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="1ZbyC8j};=CTguwEl6lF"> <field name="ATTR">val</field> <field name="OID">WEB_IO_192.168.1.Output_0.Output_1</field> </block> </value> <value name="B"> <block type="logic_boolean" id="ycK$5%#=1MPZM#e(33!J"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="request" id="n8Dr(.}Qe)!GH.yiUxaI"> <mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="`{D-$HwW!%t4.pdlipp*"> <field name="TEXT">http://192.168.1.60/outputaccess11?PW=33118&State=ON&</field> </shadow> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="}IQgNOq~VNB5kndZLNIh"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="$`kn;tPqaRtHq+u)ymQj"> <field name="ATTR">val</field> <field name="OID">WEB_IO_192.168.1.Output_0.Output_1</field> </block> </value> <value name="B"> <block type="logic_boolean" id="_zUus@P3aQ//A.!!@x^y"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="request" id="5-SR|,T4}e|CIk-@|nY="> <mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="r=SYfE{xTq+ZAge*rTP3"> <field name="TEXT">http://192.168.1.60/outputaccess11?PW=33118&State=OFF&</field> </shadow> </value> </block> </statement> </block> </statement> </block> </xml>
-
also bei mir gibt's keine Zeile 745
und woher stammt das XML ( ist das aus Blockly)? -
@stoffel67 said in Web-IO Digital 12xIn, 12xOut #57630 / Anbindung:
also bei mir gibt's keine Zeile 745
und woher stammt das XML ( ist das aus Blockly)?Ich hab scheinbar nicht kapiert wie ich Dein Script einfügen kann.
So is scheinbar falsch: https://www.youtube.com/watch?v=9tqdxvXUC80&feature=youtu.beWie mus sich's tun?