Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi – Anzeigen des Server-Status

Dieser Artikel „Ermitteln und Anzeigen des Server-Status“ beschreibt wie ich die Anzeige der Serverstatus anzeige und diese mittels phpservermonitor ermitteln lasse.

Wie bei den anderen Bildschirmen auch gibt es ein Skript zum Anzeigen und ein Skript um die aktuellen Statusdaten zu ermitteln und daraus ein Bild für die Anzeige zu generieren.

Der folgende Dreizeiler zeigt das Bild an.

#!/bin/bash

# display current weather image
sudo fbi -d /dev/fb0 -T 1 -a --noverbose /tmp/curr_serverstatus.png 
Code-Sprache: PHP (php)

Zur Überwachung meiner verschiedenen Rechner bzw. Server verwende ich die Software phpservermonitor. Phpservermonitor legt die Daten in einer MySQL Datenbank ab und dort kann man mittels eines einfachen SQL Befehls auch den Status und diverse andere Informationen ermitteln. Mit dem SQL Befehl

select label, status, last_online,rtime,last_offline from psm_servers where active=’yes‘ order by label

erhält man den Status, die Zeiten für die letzte Online- und Offline-Zeit und die letzte Antwortzeit für alle aktiven Server.

Das nachfolgende Skript liest die Daten

#!/usr/bin/python
# -*-coding: utf-8 -*-
'''
Python Skript to get the current server status from phpservermonitor
'''

import sys,os
import mysql.connector
from PIL import Image, ImageDraw, ImageFont

# set screenwidth
if (len(sys.argv) > 1):
        screenwidth=int(sys.argv[1])
else:
        screenwidth=640

if (screenwidth != 640):
        screenheight=624
else:
        screenheight=480

#
# draw image with serverstatus
#
ftcolor    = (230, 230,230)
redcolor   = (170, 0, 0)
greencolor = (80, 170, 0)
yellowcolor= (255, 255, 0)
img = Image.new('RGB', (screenwidth, screenheight), color = (0,0,0))

fnt0  = ImageFont.truetype('/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', 72)
fnt1  = ImageFont.truetype('/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', 20)
fnt2  = ImageFont.truetype('/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', 11)
fnt3  = ImageFont.truetype('/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', 8)

d = ImageDraw.Draw(img)

#
# überschrift
#
d.text((10,10), "Der aktuelle Serverstatus", font=fnt1, fill=ftcolor)
d.text((10,20), "_________________________", font=fnt1, fill=ftcolor)

d.text((20 , 45), "Systemname", font=fnt2, fill=ftcolor)
d.text((270, 45), "Online", font=fnt2, fill=ftcolor)
d.text((390, 45), "Offline", font=fnt2, fill=ftcolor)
d.text((510, 45), "Antwortzeit", font=fnt2, fill=ftcolor)
d.text((595, 45), "Status", font=fnt2, fill=ftcolor)
d.line([(20,58),(635,58)], fill=ftcolor, width=2)
x=20
y=65

#
# get the current serverstatus from the mysql db on rpi0
#
cnx = mysql.connector.connect(user='youruser', password='yourpassword',host='yourserver', database='phpservermonitor')

cursor = cnx.cursor()
query = ("select label, status, last_online,rtime,last_offline from psm_servers where active='yes' order by label")
cursor.execute(query)

for (label, status, last_online,rtime,last_offline) in cursor:
	d.text((x,y), label, font=fnt2, fill=ftcolor)
	if last_online==None:
		d.text((x+250,y), "Niemals", font=fnt2, fill=ftcolor)
	else:
		d.text((x+250,y), last_online.strftime("%d.%m.%y %H:%M"), font=fnt2, fill=ftcolor)

	if last_offline==None:
		d.text((x+370,y), "Niemals", font=fnt2, fill=ftcolor)
	else:
		d.text((x+370,y), last_offline.strftime("%d.%m.%y %H:%M"), font=fnt2, fill=ftcolor)

	d.text((x+490,y), str(rtime), font=fnt2, fill=ftcolor)

	if status=="on":
		d.ellipse((610, y, 620, y+10), fill = 'green', outline ='green')
	elif status=="off":
		d.ellipse((610, y, 620, y+10), fill = 'red', outline ='red')
	else:
		d.ellipse((610, y, 620, y+10), fill = 'yellow', outline ='yellow')

	y+=18

cursor.close()
cnx.close()

img.save('/tmp/curr_serverstatus.png')Code-Sprache: PHP (php)

Die Angaben für die Datenbankverbindung müssen entsprechend angepasst werden.

Die Artikelserie besteht aus acht Teilen. Dem Überblick „Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi“ und den sieben Artikeln zum Bau des digitalen Bilderrahmens mit dem Raspberry Pi.

  1. Einbau der Teile in den IKEA-Rahmen
  2. Grundlegende Einstellungen für den Raspberry Pi
  3. Steuerung der Anzeige
  4. Automatische Dia-Show
  5. Erstellen der Kalenderanzeige
  6. Generieren der Wetteranzeige
  7. Ermitteln und Anzeigen des Server-Status

Keine Antworten

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

    :bye: 
    :good: 
    :negative: 
    :scratch: 
    :wacko: 
    :yahoo: 
    B-) 
    mehr...
     


       Mit der Nutzung dieses Formulars erklärst Du Dich mit der Speicherung und Verarbeitung Deiner Daten durch diese Website einverstanden. Mehr Informationen dazu findest Du in der Datenschutzerklärung.

    Jooble.de ALL-INKL.COM - Webhosting Server Hosting Domain Provider TinyURL.com - Free URL Shortener

    Powered by WordPress und SoftPress-Theme by MyThemeShop.

    Diese Seite verwendet Cookies. Mit der Nutzung von tuxlog erklärst Du Dich mit der Verwendung von Cookies einverstanden. Detaillierte Informationen über die Verwendung von Cookies auf dieser Website findest Du in der Datenschutzerklärung.