Що мені потрібно зробити, щоб мій Raspberry Pi розмістив веб-сторінку з циферблатами, що вказують температуру процесора, завантаження процесора тощо в реальному часі?


27

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

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


2
Ваше запитання трохи надто широке. Ви хочете отримати швидке і брудне рішення або хочете кодувати мінімальну програму, яка підходить навіть для невеликих вбудованих систем Linux?
Базиль Старинкевич

Я спочатку шукав щось швидке і брудне, але наявність дуже приємних інструментів, згаданих нижче, зараз мене більше зацікавила.
jake9115

FYI є також Raspberry Pi Stack: raspberrypi.stackexchange.com
Todd Wilcox

github.com/firehol/netdata дуже легко налаштувати. Не перевіряли його на Пі, хоча
Der Hochstapler

Відповіді:


30

Для цього я використовую Grafana з InfluxDB на своєму Raspberry Pi 3. Вони обидва відносно прості в налаштуванні та підключенні один до одного. Вони навіть добре працюють у контейнерах Docker на Raspberry Pi.

Я передаю всі свої оновлення в InfluxDB по мірі їх створення. Тоді Графана виконує всю графічну роботу, демонструючи їх у приємному візуальному форматі. Я створив просту інформаційну панель саме для свого старого iPad з його меншим екраном.

Це звучить як багато встановлення та накладних витрат, але це впевнено виглядає красиво.

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


Дуже круто. У вас трапляються скріншоти моніторів Grafana? Просто цікаво.
jake9115

Так. Можливо, це не має великого сенсу, цей - міш-реч. Начепився на моєму комп’ютері, не розміру, як виглядає на iPad.
0xACE

Виглядає дивовижно, не можу чекати, коли я налаштую! У мене є 16-вузловий помаранчевий пі-сервер, для якого це буде ідеально. Знову дякую.
jake9115

(поза темою) Я бачив ваше інше питання щодо об'єднання пі-пі в щось, що було схоже на єдину дошку з декількома ядрами. Я збирався надіслати записку, що хлопець HPC в коледжі, в якому я працюю, створив систему, але потім згадав, що він використовував "син сіткового двигуна", який не робить те, що ви шукали.
0xACE

1
@ 0xACE Вважаючи, що це на pi, це досить погана ідея, що також спам-сервер apache із запитами. Також 10-ті стосуються поточної настройки запитуючих, тоді як вони хочуть чогось швидшого.
jdwolf

9

Для легкої та дуже простої інформаційної панелі веб-моніторингу для налаштування (та розширення) сторінки моніторингу на вашій малині ви отримали RPi Monitor .

Він постачається з деякими за замовчуванням, і конфігурація в основному редагує пару простих текстових файлів. Я легко налаштував це для додавання графіків вологості з 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
Якщо чесно, я справді мав на меті його кодувати, але ця графана настільки витончена, що я не хотів би винаходити колесо на цьому. Дякую, хоча!
jake9115

4

Ви також можете подивитись на Node-RED https://nodered.org Поставляється на Raspbian

Ось приладова панель, яку я побудував введіть тут опис зображення


Я перегляну це, дякую за внесок.
jake9115

1
Я використовую Node-Red під час налаштування, але історичні дані дійсні лише до тих пір, поки працює ваш екземпляр. Тобто, якщо ви повторно використовуєте (або втрачаєте силу) жоден з історичних вимірів не зберігається, ваші діаграми починаються з нічого. Ця особливість підштовхнула мене до фактичного входу в InfluxDB.
0xACE

Ах, приємно знати. Для мене важливі історичні дані. Мені дуже подобається, як ваші графіки навіть містять іншу веб-інформацію, як ціни на біткойн. Це було поза моїми початковими рамками, але вже не.
jake9115

Так, у цей приклад я навіть включаю дані програми, яку я маю в магазині додатків для iOS (для хлопців-скаутів, які роблять хороші обороти), яка зберігає свої дані в пожежній базі Google. Ось карта внизу. Я використовую червоний вузол, щоб витягнути дані з вогневої бази та підштовхнути їх до припливу, тому це не все наплив та графана.
0xACE

2

Я використовую phpSysInfo для моніторингу всіх моїх серверів / комп'ютерів Linux, і мені дуже подобається, як це просто. Налаштування також дуже легко зрозуміти, і ви можете встановити власну частоту оновлення.


1

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.