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)
+// })
+// })
+// }