Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi

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 //cdn1.tuxlog.de/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('//cdn1.tuxlog.de/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
Teile diesen Beitrag

4 Kommentare zu „Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi – Anzeigen des Server-Status“

  1. Pingback: Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi - Automatische Dia-Show

  2. Pingback: Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi - Steuerung der Anzeige

  3. Pingback: Einbau der Teile in den IKEA-Rahmen - Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi

  4. Pingback: Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi und LS-7 Display

Kommentar verfassen

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

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


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.

Nach oben scrollen