A simple, configurable application and set of services to monitor multiple raspberry pi's on a network.

Overview

rpi-info-monitor

A simple, configurable application and set of services to monitor multiple raspberry pi's on a network. It can be used in a terminal or a web UI.

There are three components:

  1. rpimonitor - A module used to format and display the information about each pi into a terminal or web UI (can be viewed vertically or horizontally)
  2. rpimonitorapi - A flask API that runs on each pi to communicate information about the running proccesses and resources
  3. webdisplay - A flask service that can be used to host the front end web UI. It can be installed on the main pi or another machine, but is not required

NOTE: The web UI (webdisplay) depends on the rpimonitor module. It is suggested to install the module or keep these two folders in the same directory if you want to run the web UI. Otherwise you will need to add the rpimonitor module to your PYTHONPATH

Installation/Usage:


  1. Install the flask service on each pi by running the install.sh script as root or setting up the services manually
  2. On your main pi/machine that will be used to run the display, modify the HOSTS variable in rpimonitor/config.py with the host names and local IPs of your pi's
  3. After modifying the configuration, you can install using the setup.py: python3 setup.py install
  4. Install the required python modules on the main pi/machine (pip install -r requirements.txt)
  5. You can then install the rpi-info-webapi service if you want to use the web UI (if using the web UI, you can get better formatting for mobile by installing the flask_mobility package)
  6. To run the display loop in a terminal, use python3 -m rpimonitor --run-forever [options]

Confiugration:


The config.py file in the rpimonitor directory/module is used by the web UI and command line utility. The below configurations are available:

  • HOSTS - A list of dictionaries that contain 2 keys: 1) "hostname" - the host name of the pi and 2) "local_ip" - the local IP address of the pi
  • SERVICES - A list of services (names of proccesses) to display in the services panel
  • COUNT_DISPLAY_SERVICES - A list of names from SERVICES that will display the number of running processes instead of Running/Stopped
  • WIDTH - Character width of each panel (height is automatically adjusted)
  • VALUE_SPACING - Character position of the status values in each panel
  • API_PORT - The web API port that will be used on each pi
  • PCT_RED_THRESH - The threshold used to color numeric values as red
  • SLEEP_TIME - The time to sleep between each refresh (when using -r/--run-forever in the terminal)
  • TEMP_UNITS - Units that the CPU temperature will be displayed in (fahrenheit/celsius)
  • MAX_TEMP - Maximum temperature (fahrenheit)

Examples:


Command:

$ ./display.sh or $ python3 -m rpimonitor

NOTE: You can pass --no-color to not include coloring in the terminal display

Output:

rpi-monitor-example

Web Output:

-----------------------------------------------------------------------------------------------------------------
2021-08-13                                                                                               04:13 PM
-----------------------------------------------------------------------------------------------------------------
rpi - 192.168.1.1                    |rpi2 - 192.168.1.2                   |rpi3 - 192.168.1.3
-------------------------------------|-------------------------------------|-------------------------------------
Status: Up (4d 6h 29m)               |Status: Up (0d 17h 15m)              |Status: Up (7d 1h 55m)
-------------------------------------|-------------------------------------|-------------------------------------
IP:               x.x.x.x            |IP:               x.x.x.x            |IP:               x.x.x.x
IP State:         Pennsylvania       |IP State:         New York           |IP State:         Pennsylvania
IP City:          Philadelphia       |IP City:          New York           |IP City:          Philadelphia
-------------------------------------|-------------------------------------|-------------------------------------
pihole-FTL:       Running            |pihole-FTL:       Stopped            |pihole-FTL:       Running
openvpn:          Stopped            |openvpn:          Running            |openvpn:          Stopped
qbittorrent-nox:  0 Services         |qbittorrent-nox:  2 Services         |qbittorrent-nox:  0 Services
dockerd:          Running            |dockerd:          Stopped            |dockerd:          Stopped
minidlnad:        Running            |minidlnad:        Stopped            |minidlnad:        Stopped
sshfs:            2 Services         |sshfs:            2 Services         |sshfs:            0 Services
-------------------------------------|-------------------------------------|-------------------------------------
Memory Usage:     0.3/4.1GB (13.4%)  |Memory Usage:     0.1/1.9GB (13.5%)  |Memory Usage:     0.2/1.0GB (26.3%)
CPU Usage:        2.6%               |CPU Usage:        0.2%               |CPU Usage:        0.1%
CPU Temp:         45.8C              |CPU Temp:         37.5C              |CPU Temp:         39.7C
-----------------------------------------------------------------------------------------------------------------

Command:

$ ./display.sh --vertical or$ python3 -m rpimonitor --vertical (or replace --vertical with -v)

Output:

rpi-monitor-example-vertical

Web Output:

2021-08-13                   04:14 PM
-------------------------------------
rpi - 192.168.1.1
-------------------------------------
Status: Up (4d 6h 29m)
-------------------------------------
IP:               x.x.x.x
IP State:         Pennsylvania
IP City:          Philadelphia
-------------------------------------
pihole-FTL:       Running
openvpn:          Stopped
qbittorrent-nox:  0 Services
dockerd:          Running
minidlnad:        Running
sshfs:            2 Services
-------------------------------------
Memory Usage:     0.3/4.1GB (13.4%)
CPU Usage:        1.1%
CPU Temp:         44.8C


rpi2 - 192.168.1.2
-------------------------------------
Status: Up (0d 17h 15m)
-------------------------------------
IP:               x.x.x.x
IP State:         New York
IP City:          New York
-------------------------------------
pihole-FTL:       Stopped
openvpn:          Running
qbittorrent-nox:  2 Services
dockerd:          Stopped
minidlnad:        Stopped
sshfs:            2 Services
-------------------------------------
Memory Usage:     0.1/1.9GB (13.5%)
CPU Usage:        0.4%
CPU Temp:         38.5C


rpi3 - 192.168.1.3
-------------------------------------
Status: Up (7d 1h 56m)
-------------------------------------
IP:               x.x.x.x
IP State:         Pennsylvania
IP City:          Philadelphia
-------------------------------------
pihole-FTL:       Running
openvpn:          Stopped
qbittorrent-nox:  0 Services
dockerd:          Stopped
minidlnad:        Stopped
sshfs:            0 Services
-------------------------------------
Memory Usage:     0.2/1.0GB (26.3%)
CPU Usage:        0.0%
CPU Temp:         39.7C
Owner
Kevin Kirchhoff
I work as a quant analyst, experienced mainly in equity derivatives.
Kevin Kirchhoff
Easy-to-use sync library for handy proxy parse

Proxy Parser About Synchronous library, for convenient and fast parsing of proxies from different sources. Uses Scrapy as a parser. At the moment the

Michael Mironov 2 Nov 22, 2022
A simple software which can use to make a server in local network

home-nas it is simple software which can use to make a server in local network, it has a web site on it which can use by multipale system, i use nginx

R ansh joseph 1 Nov 10, 2021
Interact remotely with the computer using Python and MQTT protocol πŸ’»

Comandos_Remotos Interagir remotamento com o computador atravΓ©s do Python e protocolo MQTT. πŸ’» Status: em desenvolvimento 🚦 Objetivo: Interagir com o

Guilherme_Donizetti 6 May 10, 2022
Simple app that redirect fixed URL to changing URL, configurable via POST requests

This is a basic URL redirection service. It stores associations between apps and redirection URLs, for apps with changing URLs. You can then use GET r

Maxime Weyl 2 Jan 28, 2022
A live streaming chatroom involving multiple modalities, such as voice, gesture, and facial expression

HiLive A live streaming chatroom involving multiple modalities, such as voice, gesture, and facial expression. Introduction We focus on demonstrating

Ryan Yen 2 Dec 02, 2021
sync application configuration and settings across multiple multiplatform devices

sync application configuration and settings across multiple multiplatform devices ✨ Key Features β€’ βš—οΈ Installation β€’ πŸ“‘ How To Use β€’ πŸ€” FAQ β€’ πŸ› οΈ Setu

Souvik 6 Aug 25, 2022
API to establish connection between server and client

Socket-programming API to establish connection between server and client, socket.socket() creates a socket object that supports the context manager ty

Muziwandile Nkomo 1 Oct 30, 2021
Minimal, self-hosted, 0-config alternative to ngrok. Caddy+OpenSSH+50 lines of Python.

If you have a webserver running on one computer (say your development laptop), and you want to expose it securely (ie HTTPS) via a public URL, SirTunnel allows you to easily do that.

Anders Pitman 423 Jan 02, 2023
NSX-T infrastructure as code - SDDC deployment

Deploy NSX-T Infrastructure - Simple Topology by Nicolas MICHEL @vpackets / LinkedIn Introduction The purpose of this entire repository is to automate

21 Nov 28, 2022
A Network tool kit for scanning active IP addresses and open ports

Network scanner A small project that I wrote on the fly for (IT351) Computer Networks University Course to identify and label the devices in my networ

Mohamed Abdelrahman 10 Nov 07, 2022
Octodns-cloudflare - Cloudflare DNS provider for octoDNS

CloudflareProvider provider for octoDNS An octoDNS provider that targets Cloudfl

octoDNS 6 May 28, 2022
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

gRPC - An RPC library and framework gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC

grpc 36.6k Dec 30, 2022
An ansible playbook to set up wireguard server.

Poor man's VPN (pay for only what you need) An ansible playbook to quickly set up Wireguard server for occasional personal use. It takes around five m

Amrit Bera 613 Dec 25, 2022
Docker container for demoing Wi-Fi calling stack.

VoWiFiLocalDemo - Docker container that runs StrongSwan and Kamailio to demonstrate how Wi-Fi calling works on smartphones.

18 Nov 12, 2022
A Python library to ease the integration with the Beem Africa (SMS, AIRTIME, OTP, 2WAY-SMS, BPAY, USSD)

python-client A Python library to easy the integration with the Beem Africa SMS Gateway Features to be Implemented Airtime OTP SMS Two way SMS USSD Bp

Beem Africa 24 Oct 29, 2022
Easily share folders between VMs.

This package aims to solve the problem of inter-VM file sharing (rather than manual copying) by allowing a VM to mount folders from any other VM's file system (or mounted network shares).

Rudd-O 12 Oct 17, 2022
IoT owl is light face detection and recognition system made for small IoT devices like raspberry pi.

IoT Owl IoT owl is light face detection and recognition system made for small IoT devices like raspberry pi. Versions Heavy with mask detection withou

Ret2Me 6 Jun 06, 2022
PoC code for stealing the WiFi password of a network with a Lovebox IOT device connected

LoveBoxer PoC code for stealing the WiFi password of a network with a Lovebox IOT device connected. This PoC was is what I used in this blogpost Usage

Graham Helton 10 May 24, 2022
This tool will scans your wi-fi/wlan and show you the connected clients

This tool will scans your wi-fi/wlan and show you the connected clients

VENKAT SAI SAGAR 3 Mar 24, 2022
Makes dynamically updating your Cloudflare DNS records a bit easier β©πŸ‘πŸ˜Ž

Easy Dynamic Cloudflare DNS Updater Makes dynamically updating your Cloudflare DNS records a bit easier ⏩ πŸ‘ 😎 If using it as a 'Dynamic DNS' client,

Zac Koch 3 Dec 19, 2021