O que eu preciso fazer para que o meu Raspberry Pi hospede uma página da Web com mostradores indicando a temperatura da CPU, a carga da CPU, etc., em tempo real?

27

Eu sou bom com comandos e scripts Unix, mas quase não tenho experiência na web. Eu tenho um script que captura as métricas nas quais estou interessado, como a carga da CPU ou a temperatura do sistema, e atualiza um arquivo a cada 10 segundos. Gostaria de apontar meu iPad para um site local hospedado por meu Raspberry Pi, que possui uma representação gráfica atualizada em tempo real desses dados.

Eu trabalhei antes de configurar um servidor web Apache simples e posso escrever HTML e JavaScript. Além disso, estou perdido e preciso de alguém para me apontar na direção certa.

    
por jake9115 28.12.2017 / 00:09

6 respostas

30

Eu uso o Grafana com o InfluxDB para isso no meu Raspberry Pi 3. Ambos são relativamente fáceis de configurar e conectar uns aos outros. Eles até funcionam bem em contêineres do Docker no Raspberry Pi.

Transmito todas as minhas atualizações para o InfluxDB à medida que são geradas. Então Grafana faz todo o trabalho gráfico de exibi-los em um bom formato visual. Eu projetei um painel simples apenas para o meu antigo iPad com uma tela menor.

Soa como muita instalação e sobrecarga, mas com certeza parece bonito.

    
por 28.12.2017 / 00:43
10

Por ter um painel leve e muito fácil de monitoramento na Web para configurar (e estender) a página de monitoramento em seu Raspberry, você tem RPi Monitor .

Ele vem com alguns padrões e a configuração é principalmente editando alguns arquivos de texto simples. Eu configurei-o facilmente para adicionar gráficos de umidade de um DTH21.

    
por 28.12.2017 / 11:09
7

Para aplicativos em tempo real na Web, a melhor ferramenta é WebSocket . Geralmente, eles são implementados no servidor de aplicativos, não no servidor da Web, mas o Apache fornece uma maneira de proxy para websockets. Isso poderia facilmente fornecer atualizações por segundo ou subsegundo.

Qual biblioteca você usa no servidor de aplicativos depende da plataforma da Web que você deseja usar, mas, por exemplo, uma versão popular do Node.js é Socket.IO.

No lado do cliente, você pode configurar uma conexão como esta:

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

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

No lado do servidor, com o Node.js, usando a biblioteca básica do 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);
  });
});
    
por 28.12.2017 / 00:20
5

Você também pode ver o Node-RED link Ele vem em estoque em Raspbian

Aqui está um painel que eu construí

    
por 28.12.2017 / 06:14
2

Eu uso o phpSysInfo para monitorar todos os meus servidores / computadores Linux, e eu realmente gosto de como Simples é isso. As configurações também são muito fáceis de entender e você pode definir sua própria taxa de atualização.

    
por 28.12.2017 / 11:12
2

Se você deseja codificar em C ou C ++, você pode usar alguma biblioteca de servidor HTTP como libonion ou Wt para codificar seu servidor HTTP especializado (talvez usando sqlite para banco de dados ). Você deve entender bem o protocolo HTTP (incluindo cookies HTTP e cabeçalhos HTTP ) e HTML5 .

Você pode usar Ajax e WebSocket (os WebSockets são suportados pelo libonion & Wt, o Ajax fornece solicitações HTTP comuns iniciadas pelo código JavaScript em execução no navegador do cliente). Você pode usar HTML5 canvas e / ou SVG para gráficos. Você pode encontrar alguns frameworks HTML5 útil; a maioria deles usa Javascript, DOM, HTML5, ....

    
por 28.12.2017 / 12:53