rpi_sense_hat_server/server.js
2022-09-05 10:04:41 +08:00

148 lines
4.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require('dotenv').config() // 读取系统环境变量
// HTTP 请求路由
const app = require('express')()
app.get('/', (req, res) => res.sendStatus(200))
// 服务器启动
const port = process.env.PORT || 3000
const host = process.env.HOST || 'localhost'
const server = app.listen(port, host, () => {
console.log(`rpi sense hat server is running at http://${host}:${port}`)
})
// Sense HAT 全局数据 及 初始化
const R = [255, 0, 0]
const G = [0, 255, 0]
const B = [0, 0, 255]
const Y = [255, 255, 0]
const P = [255, 0, 255]
const C = [0, 255, 255]
const O = [255, 255, 255]
const _ = [0, 0, 0]
const sensehat = {
led: {
...require('sense-hat-led').sync,
/*
sleep(n) 暂停n秒
clear() 清除所有
clear(rgb) or clear([r,g,b]) 填充颜色
setPixel(x,y,r,g,b) or setPixel(x,y,rgb) 设置一个点
getPixel(x,y) 返回 [r,g,b] 获取一个点
setPixels([[r,g,b]*64])
getPixels() -> [[r,g,b]*64]
flipH(redraw=true) 水平反转
flipV(redraw=true) 垂直反转
setRotation(r, redraw=true) 设置旋转r初始为0r只能设置为0/90/180/270
getter rotation
*/
get pixels() { return sensehat.led.getPixels() },
},
}
sensehat.led.clear()
sensehat.led.lowLight = true
sensehat.led.setPixels([
R, O, O, O, O, O, O, O,
O, _, _, _, _, _, _, O,
O, _, _, _, _, _, _, O,
O, _, _, _, _, _, _, O,
O, _, _, _, _, _, _, O,
O, _, _, _, _, _, _, O,
O, _, _, _, _, _, _, O,
O, O, O, O, O, O, O, O,
])
console.log(sensehat.led.rotation)
// 1| RPi Sense HAT API: 8001 | showMessage: [Function: showMessageSync],
// 1| RPi Sense HAT API: 8001 | flashMessage: [Function: flashMessageSync],
// 1| RPi Sense HAT API: 8001 | showLetter: [Function: showLetterSync],
// 1| RPi Sense HAT API: 8001 | loadImage: [Function: loadImageSync],
// 1| RPi Sense HAT API: 8001 | rotation: [Getter / Setter],
// 1| RPi Sense HAT API: 8001 | gamma: [Getter / Setter],
// 1| RPi Sense HAT API: 8001 | gammaReset: [Function: gammaReset],
// 1| RPi Sense HAT API: 8001 | lowLight: [Getter / Setter]
// 1 | RPi Sense HAT API: 8001 | }
// socketio 服务
const io = require('socket.io')(server, { cors: { origin: '*' } })
io.on('connection', (client) => {
console.log(`client conncted: ${client.id}`)
client.on('operation', ({ action }) => {
switch (action) {
// case 'on':
// sense.setPixel(Number(x), Number(y), color_blue)
// leds[y][x] = 1
// break
// case 'off':
// sense.setPixel(Number(x), Number(y), [0, 0, 0])
// leds[y][x] = 0
// break
// case 'hello':
// sense.flashMessage('HELLO', 1, color_blue)
// sense.clear()
// read_all_leds(0)
// break
case 'flash':
sensehat.led.clear(O)
setTimeout(sensehat.led.clear, 200)
break
case 'clear':
sensehat.led.clear()
break
default:
break
}
})
})
// io.on('connection', (client) => {
// client.emit('leds', leds)
// client.on('action', ({ action, x, y }) => {
// console.log({ action, x, y })
// switch (action) {
// case 'on':
// sense.setPixel(Number(x), Number(y), color_blue)
// leds[y][x] = 1
// break
// case 'off':
// sense.setPixel(Number(x), Number(y), [0, 0, 0])
// leds[y][x] = 0
// break
// case 'hello':
// sense.flashMessage('HELLO', 1, color_blue)
// sense.clear()
// read_all_leds(0)
// break
// case 'flash':
// sense.clear([255, 255, 255])
// setTimeout(sense.clear, 100)
// read_all_leds(0)
// break
// case 'clear':
// sense.clear()
// read_all_leds(0)
// break
// case 'temp':
// read_all_leds()
// get_rpis_info()
// break
// default:
// break
// }
// io.emit('leds', leds)
// })
// })
// function read_all_leds(value = null) {
// const pixels = sense.getPixels()
// for (let y = 0; y < 8; y++) {
// for (let x = 0; x < 8; x++) {
// leds[y][x] = value !== null ? value : sense.getPixel(x, y)[2] == 0 ? 0 : 1
// }
// }
// }