Cosa devo fare per consentire al mio Raspberry Pi di ospitare una pagina Web con quadranti che indicano la temperatura della CPU, il carico della CPU, ecc., In tempo reale?


27

Sono bravo con i comandi e gli script Unix, ma non ho quasi nessuna esperienza web. Ho uno script che prende le metriche che mi interessano, come il carico della CPU o la temperatura del sistema e aggiorna un file ogni 10 secondi. Vorrei indirizzare il mio iPad su un sito Web locale ospitato dal mio Raspberry Pi, che presenta una rappresentazione grafica di aggiornamento in tempo reale di questi dati.

Ho lavorato prima di configurare un semplice server Web Apache e posso scrivere HTML e JavaScript. Oltre a ciò, mi sono perso e ho bisogno di qualcuno che mi indichi nella giusta direzione.


2
La tua domanda è un po 'troppo ampia. Vuoi una soluzione rapida e sporca o vuoi codificare un programma minimo che si adatta anche a piccoli sistemi embedded Linux?
Basile Starynkevitch,

Inizialmente stavo cercando qualcosa di rapido e sporco, ma la disponibilità di strumenti molto belli di seguito indicati mi ha interessato di più.
jake9115,

Cordiali saluti, c'è anche uno stack Raspberry Pi: raspberrypi.stackexchange.com
Todd Wilcox,

github.com/firehol/netdata è molto facile da configurare. Non l'ho ancora provato su un Pi
Der Hochstapler il

Risposte:


30

Uso Grafana con InfluxDB per questo sul mio Raspberry Pi 3. Sono entrambi relativamente facili da configurare e connettersi tra loro. Funzionano bene anche nei contenitori Docker sul Raspberry Pi.

Trasmetto in streaming tutti i miei aggiornamenti su InfluxDB man mano che vengono generati. Quindi Grafana fa tutto il lavoro grafico di visualizzarli in un bel formato visivo. Ho progettato una semplice dashboard solo per il mio vecchio iPad con il suo schermo più piccolo.

Sembra un sacco di installazione e sovraccarico, ma sicuramente sembra carino.

Inserisci qui la descrizione dell'immagine


Molto bello. Ti capita di avere screenshot dei tuoi monitor Grafana? Solo curioso.
jake9115,

Sì. Potrebbe non avere molto senso, questo è un miscuglio di cose. Scattato sul mio computer, quindi non dimensionato come appare sull'iPad.
0xACE,

Sembra fantastico, non vedo l'ora di impostare il mio! Ho un server Orange Pi a 16 nodi per cui questo sarà perfetto. Grazie ancora.
jake9115,

(fuori tema) Ho visto la tua altra domanda sull'unione dei Pi in qualcosa che sembrava una singola scheda con più core. Stava per inviare una nota che il ragazzo HPC al college in cui lavoro aveva installato un sistema ma poi si ricordò che stava usando "figlio del motore di rete" che non fa quello che stavi cercando.
0xACE,

1
@ 0xACE Considerando che è su un pi è una pessima idea inviare spam al server apache anche con richieste. Anche i 10 si riferiscono all'attuale configurazione dei richiedenti mentre vogliono qualcosa di più veloce.
jdwolf,

9

Per avere una dashboard di monitoraggio web leggera e molto facile da configurare (ed estendere) la pagina di monitoraggio sul tuo Raspberry hai RPi Monitor .

Viene fornito con alcune impostazioni predefinite e la configurazione sta principalmente modificando un paio di semplici file di testo. L'ho configurato facilmente per aggiungere grafici di umidità da un DTH21.

img_link img_link2


2
Apprezzo il contributo; questo sembra davvero leggero e forse una buona scelta grafica mentre imparo a configurare alcune delle soluzioni più coinvolte qui. Grazie!
jake9115,

Prego. L'ho usato per quasi 3 anni a casa. vedere la domanda correlata electronics.stackexchange.com/questions/236530/…
Rui F Ribeiro,

6

Per le applicazioni in tempo reale sul web lo strumento migliore è WebSocket . Di solito questi sono implementati nel server delle applicazioni, non nel web server, ma Apache fornisce un modo per proxy i websocket. Ciò potrebbe facilmente fornire aggiornamenti al secondo o al secondo.

La libreria utilizzata nel server delle applicazioni dipende dalla piattaforma Web che si desidera utilizzare, ma ad esempio una popolare per Node.js è Socket.IO.

Sul lato client è possibile impostare una connessione come questa:

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

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

Sul lato server con Node.js utilizzando la libreria WebSocket di base:

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
Grazie per l'idea Questo è molto utile, ma sembra un sacco di basi, che è comprensibile.
jake9115,

2
@ jake9115 Heh beh, la tua domanda sembrava suggerire che fossi interessato a presentare questa domanda tu stesso.
jdwolf,

2
In tutta onestà, stavo davvero mirando a codificarlo da solo, ma quel grafana è così lucido che non vorrei reinventare la ruota su questo. Grazie comunque!
jake9115,

4

Puoi anche dare un'occhiata a Node-RED https://nodered.org Viene fornito con Raspbian

Ecco una dashboard che ho costruito inserisci qui la descrizione dell'immagine


Lo esaminerò, grazie per il contributo.
jake9115,

1
Uso Node-Red con la mia configurazione, ma i dati storici sono validi solo finché l'istanza è in esecuzione. Cioè, se ridistribuisci (o perdi potenza) nessuna delle misurazioni storiche viene mantenuta, i tuoi grafici ricominciano da zero. Questa funzionalità è ciò che mi ha spinto a iniziare effettivamente l'accesso a InfluxDB.
0xACE,

Ah, bello da sapere. I dati storici sono importanti per me. Mi piace molto il modo in cui i tuoi grafici incorporano anche altre informazioni basate sul web, come i prezzi dei bitcoin. Ciò andava oltre il mio scopo iniziale, ma non più.
jake9115,

Sì, in quell'esempio includo anche i dati di un'app che ho sull'App Store di iOS (per Boy Scout che fanno buoni turni) che archivia i suoi dati in Google Fire Base. Questa è la mappa in fondo. Uso il nodo rosso per estrarre i dati dalla base di fuoco e spingerli in flusso, quindi non è tutto flusso e grafana.
0xACE,

2

Uso phpSysInfo per monitorare tutti i miei server / computer Linux e mi piace davvero quanto sia semplice. Le impostazioni sono anche molto facili da capire e puoi impostare la tua frequenza di aggiornamento.


1

Se si desidera programmare in C o C ++, è possibile utilizzare alcune librerie di server HTTP come libonion o Wt per codificare il proprio server HTTP specializzato (magari utilizzando sqlite per il database). Dovresti quindi comprendere bene il protocollo HTTP (compresi i cookie HTTP e le intestazioni HTTP ) e HTML5 .

Potresti voler usare le tecniche Ajax e WebSocket (WebSocket sono supportati da libonion e Wt, Ajax fornisce le normali richieste HTTP avviate dal codice JavaScript in esecuzione nel browser client). È possibile utilizzare canvas HTML5 e / o SVG per la grafica. Potresti trovare utili alcuni framework web HTML5 ; la maggior parte di loro utilizza Javascript, DOM, HTML5, ....

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.