thingweb / node-wot

Web of Things implementation on Node.js
27 stars 13 forks source link

Unicornhat from Node.js #15

Closed mkovatsc closed 6 years ago

mkovatsc commented 7 years ago

Another dump to share:

Get unicornd (see README)

https://github.com/pimoroni/unicorn-hat/tree/master/library_c/unicornd

Node.js code:

const net = require('net');

// This server listens on a Unix socket at /var/run/mysocket
const client = net.createConnection('/var/run/unicornd.socket');
client.on('connect', ()=>{
    console.log('Connected');

    setBrightness(128); // 0..255
    setAll(255,0,0);

    setPixel(1,1,0,0,255);
    setPixel(2,2,0,0,255);
    setPixel(3,3,0,0,255);
    setPixel(4,4,0,0,255);
    setPixel(5,5,0,0,255);
    setPixel(6,6,0,0,255);
    show();

    console.log('Done: ' + client.bytesWritten);
});
client.on('error', (err)=>{ console.log('Error: ' + err.message);});
client.on('data', (data)=>{ console.log('Data: ' + data.toString());});
client.on('drain', ()=>{ console.log('Bytes written: ' + client.bytesWritten);});

setTimeout(()=>{
    setAll(0,0,0);
    setBrightness(0);
    console.log('Time up');
    client.end();
}, 5000);

function setBrightness(val) {
    if (!client) {
        console.log('not connected');
        return;
    }
    client.write(new Buffer([0,val,3]));
}

function setPixel(x,y,r,g,b) {
    if (!client) {
        console.log('not connected');
        return;
    }
    client.write(new Buffer([1,x,y,g,r,b]));
}

function show() {
    if (!client) {
        console.log('not connected');
        return;
    }
    client.write(new Buffer([3]));
}

function setAll(r,g,b) {
    if (!client) {
        console.log('not connected');
        return;
    }
    let all = [2];
    for (let i=0;i<64;++i) {
        all.push(g);
        all.push(r);
        all.push(b);
    }
    all.push(3);
    client.write(new Buffer(all));
}
mkovatsc commented 6 years ago

Has been in the demo-servients for a while now. Closing.