ฉันต้องทำอย่างไรเพื่อให้ Raspberry Pi โฮสต์เว็บเพจที่มีแป้นหมุนซึ่งระบุอุณหภูมิของ CPU โหลด CPU ฯลฯ ตามเวลาจริง


27

ฉันทำได้ดีกับคำสั่ง Unix และการเขียนสคริปต์ แต่ฉันแทบไม่มีประสบการณ์บนเว็บเลย ฉันมีสคริปต์ที่จับตัวชี้วัดที่ฉันสนใจเช่นโหลด CPU หรืออุณหภูมิของระบบและอัปเดตไฟล์ทุก ๆ 10 วินาที ฉันต้องการชี้ iPad ของฉันไปยังเว็บไซต์ท้องถิ่นที่โฮสต์โดย Raspberry Pi ของฉันซึ่งมีการอัปเดตการแสดงข้อมูลกราฟิกแบบเรียลไทม์

ฉันทำงานก่อนตั้งค่าเว็บเซิร์ฟเวอร์ Apache อย่างง่ายและฉันสามารถเขียน HTML และ JavaScript ได้ นอกจากนั้นฉันหลงทางและต้องการใครสักคนชี้ให้ฉันในทิศทางที่ถูกต้อง


2
คำถามของคุณกว้างไปหน่อย คุณต้องการวิธีแก้ปัญหาที่รวดเร็วและสกปรกหรือคุณต้องการโค้ดโปรแกรมขนาดเล็กที่เหมาะกับระบบฝังตัว Linux ขนาดเล็กหรือไม่?
— Basile Starynkevitch

เริ่มแรกฉันกำลังมองหาบางสิ่งที่รวดเร็วและสกปรก แต่ความพร้อมของเครื่องมือที่ดีมากที่กล่าวถึงด้านล่างตอนนี้ทำให้ฉันสนใจมากขึ้น
— jake9115

FYI นอกจากนี้ยังมี Raspberry Pi Stack: raspberrypi.stackexchange.com
— Todd Wilcox

github.com/firehol/netdataติดตั้งง่ายมาก ยังไม่ได้ทดสอบกับ Pi แม้ว่า
— Der Hochstapler

คำตอบ:


30

ฉันใช้GrafanaกับInfluxDBสำหรับสิ่งนี้กับ Raspberry Pi 3 ของฉันพวกมันค่อนข้างง่ายต่อการติดตั้งและเชื่อมต่อซึ่งกันและกัน พวกเขายังทำงานได้ดีในภาชนะDockerบน Raspberry Pi

ฉันสตรีมการอัปเดตทั้งหมดของฉันไปยัง InfluxDB ตามที่สร้างขึ้น จากนั้น Grafana ทำงานกราฟิกทั้งหมดในการแสดงในรูปแบบภาพที่ดี ฉันออกแบบแดชบอร์ดง่าย ๆ สำหรับ iPad เครื่องเก่าที่มีหน้าจอเล็กลง

มันฟังดูเหมือนการติดตั้งและค่าใช้จ่ายมากมาย แต่มันก็ดูดี

ป้อนคำอธิบายภาพที่นี่


เด็ดมาก คุณมีสกรีนช็อตของจอภาพ Grafana หรือไม่? แค่สงสัย.
— jake9115

ได้. อาจไม่เข้าท่ามากนักอันนี้เป็นสิ่งที่ผิดพลาด Snapped บนคอมพิวเตอร์ของฉันดังนั้นอย่าปรับขนาดตามที่ดูบน iPad
— 0xACE

ดูยอดเยี่ยมแทบรอไม่ไหวที่จะตั้งค่าของฉัน! ฉันมีเซิร์ฟเวอร์ pi สีส้ม 16 โหนดว่านี่จะเหมาะสำหรับ ขอบคุณอีกครั้ง.
— jake9115

(ปิดหัวข้อ) ฉันเห็นคำถามอื่นของคุณเกี่ยวกับการเข้าร่วม Pi ของเป็นสิ่งที่ดูเหมือนกระดานเดียวที่มีหลายแกน กำลังจะส่งข้อความว่าชาย HPC ที่วิทยาลัยที่ฉันทำงานอยู่ได้ติดตั้งระบบ แต่แล้วก็จำได้ว่าเขาใช้ "son of grid engine" ซึ่งไม่ได้ทำสิ่งที่คุณกำลังมองหา
— 0xACE

1
@ 0xACE พิจารณาใน pi เป็นความคิดที่ดีที่จะสแปมเซิร์ฟเวอร์ apache ด้วยคำขอเช่นกัน อีกทั้งยุค 10 ยังหมายถึงการตั้งค่าปัจจุบันของผู้ถามในขณะที่พวกเขาต้องการบางสิ่งที่เร็วขึ้น
— jdwolf

9

สำหรับการมีการตรวจสอบเว็บแดชบอร์ดที่มีน้ำหนักเบาและง่ายมากที่จะติดตั้ง (และขยาย) การตรวจสอบหน้าราสเบอร์รี่ของคุณคุณมีRPI จอภาพ

มันมาพร้อมกับค่าเริ่มต้นและการกำหนดค่าส่วนใหญ่จะแก้ไขไฟล์ข้อความง่ายๆ ฉันกำหนดค่ามันเพื่อเพิ่มกราฟความชื้นจาก DTH21 ได้อย่างง่ายดาย

img_link img_link2


2
ฉันซาบซึ้งกับการบริจาค ดูเหมือนว่าจะมีน้ำหนักเบามากและอาจเป็นตัวเลือกในการสร้างกราฟที่ดีในขณะที่ฉันเรียนรู้วิธีการตั้งค่าโซลูชันที่เกี่ยวข้องเพิ่มเติมที่นี่ ขอบคุณ!
— jake9115

ยินดี. ฉันใช้มันเกือบ 3 ปีแล้วที่บ้าน ดูคำถามที่เกี่ยวข้องelectronics.stackexchange.com/questions/236530/…
— Rui F Ribeiro

6

เรียลไทม์สำหรับการใช้งานบนเว็บเครื่องมือที่ดีที่สุดคือWebSocket โดยทั่วไปสิ่งเหล่านี้จะถูกนำไปใช้ในแอปพลิเคชันเซิร์ฟเวอร์ไม่ใช่เว็บเซิร์ฟเวอร์ แต่ Apache มีวิธีในการใช้เว็บพร็อกซี สิ่งนี้สามารถให้การอัปเดตต่อวินาทีหรือรองได้อย่างง่ายดาย

ไลบรารีใดที่คุณใช้บนแอ็พพลิเคชันเซิร์ฟเวอร์จะขึ้นอยู่กับแพลตฟอร์มของเว็บที่คุณต้องการใช้ แต่ตัวอย่างเช่นไลบรารียอดนิยมสำหรับ Node.js คือ Socket.IO

ในฝั่งไคลเอ็นต์คุณสามารถตั้งค่าการเชื่อมต่อเช่นนี้:

socket = new WebSocket("ws://website.net:8282");

socket.addEventListener('message', function (event) {
    var message = event.data;
    // Code to update site
});

ทางฝั่งเซิร์ฟเวอร์ที่มี Node.js โดยใช้ไลบรารี WebSocket ขั้นพื้นฐาน:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8282 });
wss.on('connection', function connection(ws) {
  dataOnUpdateEvent(function(event) {
    var data = event.getdata();
    var message = parseData(data);
    ws.send(message);
  });
});

1
ขอบคุณสำหรับความคิด มันมีประโยชน์มาก แต่ดูเหมือนว่าจะเป็นรากฐานที่เข้าใจได้ง่าย
— jake9115

2
@ jake9115 เฮ้คำถามของคุณดูเหมือนจะแนะนำให้คุณสนใจในการทำใบสมัครด้วยตัวเอง
— jdwolf

2
ในความจริงแล้วฉันตั้งใจจะให้รหัสด้วยตัวเอง แต่ grafana นั้นดูเรียบเนียนจนฉันไม่ต้องการที่จะพลิกโฉมพวงมาลัยนี้ ขอบคุณนะ!
— jake9115

4

คุณยังสามารถดู Node-RED https://nodered.org มันมาพร้อมกับ Raspbian

นี่คือแดชบอร์ดที่ฉันสร้างขึ้น ป้อนคำอธิบายรูปภาพที่นี่


ฉันจะดูมันขอบคุณสำหรับการมีส่วนร่วม
— jake9115

1
ฉันใช้ Node-Red กับการตั้งค่าของฉัน แต่ข้อมูลประวัติจะใช้ได้เฉพาะเมื่ออินสแตนซ์ของคุณกำลังทำงาน นั่นคือถ้าคุณปรับใช้ใหม่ (หรือสูญเสียพลังงาน) ไม่มีการวัดทางประวัติศาสตร์ใด ๆ ไว้แผนภูมิของคุณจะเริ่มต้นใหม่โดยไม่ทำอะไรเลย คุณสมบัตินั้นเป็นสิ่งที่กระตุ้นให้ฉันเริ่มเข้าสู่ InfluxDB จริงๆ
— 0xACE

อาน่ารู้ดี ข้อมูลประวัติมีความสำคัญต่อฉัน ฉันชอบวิธีที่กราฟของคุณรวมข้อมูลบนเว็บอื่น ๆ เช่นราคา bitcoin นั่นอยู่นอกเหนือขอบเขตเริ่มต้นของฉัน แต่ไม่ใช่อีกต่อไป
— jake9115

ใช่ตัวอย่างนั้นฉันยังรวมข้อมูลจากแอพที่ฉันมีใน iOS App Store (สำหรับลูกเสือทำผลัดกันดี) ที่เก็บข้อมูลไว้ในฐานไฟของ Google นั่นคือแผนที่ที่ด้านล่าง ฉันใช้โหนดสีแดงเพื่อดึงข้อมูลจากฐานไฟและดันเข้าไปในการไหลเข้าดังนั้นมันไม่ใช่การไหลเข้าและกราฟิคทั้งหมด
— 0xACE

2

ฉันใช้phpSysInfoเพื่อตรวจสอบเซิร์ฟเวอร์ / คอมพิวเตอร์ Linux ทั้งหมดของฉันและฉันชอบความเรียบง่ายของมัน การตั้งค่ายังง่ายต่อการเข้าใจและคุณสามารถกำหนดอัตราการรีเฟรชของคุณเอง


1

หากคุณต้องการโค้ดใน C หรือ C ++ คุณอาจใช้ไลบรารีเซิร์ฟเวอร์ HTTP บางอย่างเช่นlibonionหรือWtเพื่อกำหนดรหัสเซิร์ฟเวอร์ HTTP เฉพาะของคุณ (อาจใช้sqliteสำหรับฐานข้อมูล) คุณควรเข้าใจโปรโตคอลHTTP (รวมถึงคุกกี้HTTPและส่วนหัว HTTP ) และHTML5ด้วย

คุณอาจต้องการใช้เทคนิคAjaxและWebSocket (รองรับ WebSockets โดย libonion & Wt, Ajax ให้คำขอ HTTP ปกติที่เริ่มต้นด้วยรหัส JavaScript ที่ทำงานในเบราว์เซอร์ไคลเอ็นต์) คุณสามารถใช้ผ้าใบ HTML5 และ / หรือSVGสำหรับกราฟิก คุณอาจพบว่าเฟรมเวิร์กเว็บ HTML5 มีประโยชน์ ส่วนใหญ่ใช้ Javascript, DOM, HTML5, ....

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.