From a961a63e1a8d23a533b6c01c8bea710bfd5a9f57 Mon Sep 17 00:00:00 2001 From: Zhao Xin <7176466@qq.com> Date: Sun, 4 Sep 2022 15:26:20 +0800 Subject: [PATCH] gitpush --- README.md | 2 +- package.json | 9 +- public/index.html | 170 -------------------------------------- server.js | 206 ++++++++++++++++++++++------------------------ 4 files changed, 102 insertions(+), 285 deletions(-) delete mode 100644 public/index.html diff --git a/README.md b/README.md index f63bf50..7701b7f 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# 我的树莓派 Sense Hat +# 树莓派 Sense HAT API diff --git a/package.json b/package.json index e6b5eb9..f06f96a 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "sensehat-server", - "version": "0.1.0", - "description": "SenseHat Server", + "version": "0.0.1", + "description": "树莓派 Sense HAT API", "main": "server.js", "scripts": { - "start": "nodemon", + "start": "PORT=8001 pm2 start server.js --name 'RPi Sense HAT API:8001' --watch", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { @@ -23,8 +23,5 @@ "request": "^2.88.2", "sense-hat-led": "^1.2.0", "socket.io": "^4.5.1" - }, - "devDependencies": { - "nodemon": "^2.0.19" } } diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 60acf20..0000000 --- a/public/index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - Sense Hat - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - -
- -
- -
- -
- - - - - - diff --git a/server.js b/server.js index 32de424..c33248d 100644 --- a/server.js +++ b/server.js @@ -1,70 +1,60 @@ require('dotenv').config() const port = process.env.PORT || 3000 +const host = process.env.HOST || 'localhost' const express = require('express') const socketio = require('socket.io') -const CronJob = require('cron').CronJob -const request = require('request') +// const CronJob = require('cron').CronJob +// const request = require('request') const sense = require('sense-hat-led').sync const app = express() -const server = app.listen(port, '0.0.0.0', () => console.log(`server is running on port ${port}`)) +const server = app.listen(port, host, () => console.log(`rpi sense hat server is running at port http://${host}:${port}`)) const io = socketio(server) -app.use(express.static('public')) -sense.clear() -sense.setRotation(180) + +// Sense HAT 初始化 sense.lowLight = true +sense.setRotation(180) +sense.clear() -const color_red = [255, 0, 0] -const color_blue = [0, 0, 255] -const leds = [ - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], -] -io.emit('leds', leds) +io.on('connection', (client) => { + console.log(`client conncted: ${client.id}`) + client.emit('message', `hello, ${client.id}`) +}) -let zhao_server_errors = 0 -const job = new CronJob( - '*/3 * * * * *', - async () => { - // 测试 http://zhao 的连通性 - request('http://zhao', (err, res, body) => { - if (res.statusCode != 200) { - zhao_server_errors++ - } - if (zhao_server_errors > 0) { - for (let i = 0; i < zhao_server_errors; i++) { - const x = i % 8 - const y = Math.floor(i / 8) - sense.setPixel(x, y, color_red) - } - } else { - let color = sense.getPixel(0, 0) - let [r, g, b] = color - sense.setPixel(0, 0, [r, g > 0 ? 0 : 255, b]) - } - }) - }, - null, - true -) +// const color_red = [255, 0, 0] +// const color_blue = [0, 0, 255] +// const leds = [ +// [0, 0, 0, 0, 0, 0, 0, 0], +// [0, 0, 0, 0, 0, 0, 0, 0], +// [0, 0, 0, 0, 0, 0, 0, 0], +// [0, 0, 0, 0, 0, 0, 0, 0], +// [0, 0, 0, 0, 0, 0, 0, 0], +// [0, 0, 0, 0, 0, 0, 0, 0], +// [0, 0, 0, 0, 0, 0, 0, 0], +// [0, 0, 0, 0, 0, 0, 0, 0], +// ] +// io.emit('leds', leds) -// const rpistatus = new CronJob( -// '*/5 * * * * *', +// let zhao_server_errors = 0 + +// const job = new CronJob( +// '*/3 * * * * *', // async () => { -// request('http://zhao:4000', (err, res, body) => { -// if (res.statusCode == 200) { -// io.emit('data', body) +// // 测试 http://zhao 的连通性 +// request('http://zhao', (err, res, body) => { +// if (res.statusCode != 200) { +// zhao_server_errors++ // } -// }) -// request('http://pi:4000', (err, res, body) => { -// if (res.statusCode == 200) { -// io.emit('data', body) +// if (zhao_server_errors > 0) { +// for (let i = 0; i < zhao_server_errors; i++) { +// const x = i % 8 +// const y = Math.floor(i / 8) +// sense.setPixel(x, y, color_red) +// } +// } else { +// let color = sense.getPixel(0, 0) +// let [r, g, b] = color +// sense.setPixel(0, 0, [r, g > 0 ? 0 : 255, b]) // } // }) // }, @@ -72,60 +62,60 @@ const job = new CronJob( // true // ) -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) - }) -}) +// 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 - } - } -} +// 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 +// } +// } +// } -async function get_rpis_info() { - const rpis = [] - request('http://zhao:4000', (err, res, body) => { - if (res.statusCode == 200) rpis.push(JSON.parse(body)) - request('http://pi:4000', (err, res, body) => { - if (res.statusCode == 200) rpis.push(JSON.parse(body)) - io.emit('data', rpis) - }) - }) -} +// async function get_rpis_info() { +// const rpis = [] +// request('http://zhao:4000', (err, res, body) => { +// if (res.statusCode == 200) rpis.push(JSON.parse(body)) +// request('http://pi:4000', (err, res, body) => { +// if (res.statusCode == 200) rpis.push(JSON.parse(body)) +// io.emit('data', rpis) +// }) +// }) +// }