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… `