27

Я хорошо разбираюсь в командах и скриптах Unix, но у меня почти нет опыта работы в Интернете. У меня есть скрипт, который получает интересующие меня метрики, такие как загрузка процессора или системная температура, и обновляет файл каждые 10 секунд. Я хотел бы указать свой iPad на локальный веб-сайт, размещенный моим Raspberry Pi, который в реальном времени обновляет графическое представление этих данных.

Я работал до настройки простого веб-сервера Apache, и я могу писать HTML и JavaScript. Кроме того, я потерялся, и мне нужен кто-то, чтобы указать мне правильное направление.

6 ответов6

30

Я использую Grafana с InfluxDB для этого на моем Raspberry Pi 3. Они оба относительно просты в установке и подключены друг к другу. Они даже хорошо работают в контейнерах Docker на Raspberry Pi.

Я передаю все свои обновления в InfluxDB по мере их создания. Затем Графана выполняет всю графическую работу, отображая их в хорошем визуальном формате. Я разработал простую приборную панель только для моего старого iPad с меньшим экраном.

Это звучит как много установки и накладных расходов, но это действительно выглядит красиво.

Введите описание изображения здесь

10

Для того, чтобы иметь легкую и очень простую панель мониторинга сети для настройки (и расширения) страницы мониторинга на вашем Raspberry, у вас есть RPi Monitor.

Он поставляется с некоторыми значениями по умолчанию, и конфигурация в основном редактирует пару простых текстовых файлов. Я легко настроил добавление графиков влажности от DTH21.

img_link img_link2

7

Для приложений реального времени в Интернете лучшим инструментом является 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);
  });
});
5

Вы также можете взглянуть на Node-RED https://nodered.org. Он выходит на Raspbian.

Вот приборная панель, которую я построил

2

Я использую phpSysInfo для мониторинга всех моих серверов / компьютеров с Linux, и мне очень нравится, насколько это просто. Настройки также очень просты для понимания, и вы можете установить собственную частоту обновления.

2

Если вы хотите кодировать на C или C++, вы можете использовать некоторую библиотеку HTTP-сервера, такую как libonion или Wt , для кодирования вашего специализированного HTTP-сервера (возможно, используя sqlite для базы данных). Затем вы должны хорошо понимать протокол HTTP (включая файлы cookie HTTP и заголовки HTTP) и HTML5.

Возможно, вы захотите использовать методы Ajax и WebSocket (WebSockets поддерживаются libonion & Wt, Ajax выдает обычные HTTP-запросы, инициируемые кодом JavaScript, выполняющимся в клиентском браузере). Вы можете использовать HTML5 canvas и / или SVG для графики. Вы можете найти некоторые веб-фреймворки HTML5 полезными; большинство из них используют Javascript, DOM, HTML5, ....

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .