CCU-Systeminfos in BGInfo/als Windows-Desktop-Hintergrund/Wallpaper

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
mademyday
Beiträge: 368
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 7 Mal
Danksagung erhalten: 70 Mal

CCU-Systeminfos in BGInfo/als Windows-Desktop-Hintergrund/Wallpaper

Beitrag von mademyday » 03.12.2025, 14:21

myHM_BGInfo-demo-screen.jpg
optisch gibt es sicher Verbesserungsbedarf, aber technisch kann man es zB wie folgt umsetzen, es braucht

a) ein Prozess der die anzuzeigenden Infos aus der CCU ausliest und zB als TXT-Datei für BGInfo bereitstellt

b) eine BGInfo-Konfiguration, die den Inhalt des txt-files aus (a) auf dem Wallpaper-Bitmap plaziert

c) einen regelmäßigen Task (bei mir zB alle 10min) der diese Schritte automatisch im Hintergrund ausführt


zu a) per curl wird ein homematic-Skript ausgeführt, welches die gewünschten Informationen zusammen sucht, zB

Code: Alles auswählen

curl -s --data @myHM_BGInfo-demo.hms http://ccu3:8183/run.exe
mit folgender Datei (passt so natürlich nur bei meiner ccu, Variablen und Adressen müssen angepasst werden!)

myHM_BGInfo-demo.hms:

Code: Alles auswählen

string o; string e;
system.Exec( 'echo -e \# hostname: \\\\t$( uname -n )\\\\n\# uptime..: \\\\t$(( $( cat /proc/uptime|cut -d "." -f 1 ) / 86400 )) d\\\\n\# firmware: \\\\t$( cat /boot/VERSION | cut -d"=" -f2 )', &o, &e );


if( dom.GetObject("Alarmmeldungen") ) {
  var Alarmmeldungen   = dom.GetObject("Alarmmeldungen"  ).Value();
} elseif( dom.GetObject(40) ) {
  var Alarmmeldungen   = dom.GetObject(40).Value();
} else { var Alarmmeldungen = "-"; }

if( dom.GetObject("Servicemeldungen") ) {
  var Servicemeldungen = dom.GetObject("Servicemeldungen").Value();
} elseif( dom.GetObject(41) ) {
  var Servicemeldungen = dom.GetObject(41).Value();
} else { var Servicemeldungen = "-"; }


if( datapoints.Get('HmIP-RF.001F9D89979D30:0.DUTY_CYCLE_LEVEL') ) {
  var DC_CCU3 = datapoints.Get('HmIP-RF.001F9D89979D30:0.DUTY_CYCLE_LEVEL').Value().ToString(0);
} else {
  var DC_CCU3 = "-";
}

if( datapoints.Get('HmIP-RF.001F9D89979D30:0.CARRIER_SENSE_LEVEL') ) {
  var CS_CCU3 = datapoints.Get('HmIP-RF.001F9D89979D30:0.CARRIER_SENSE_LEVEL').Value().ToString(0);
} else {
  var CS_CCU3 = "-";
}


var Aussen_Temp = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Aussen_Temp").Value().ToString(0);
var WZ_Temp     = dom.GetObject(ID_SYSTEM_VARIABLES).Get("WZ_Temp"    ).Value().ToString(0);

var _Alarm_Mode = dom.GetObject(ID_SYSTEM_VARIABLES).Get("_Alarm_Mode").Value();

var SecKey_Haustuer_DLD = dom.GetObject(ID_SYSTEM_VARIABLES).Get("SecKey_Haustuer_DLD").Value().StrValueByIndex( "(", 1 ).StrValueByIndex( ")", 0 );

var SunriseTime = system.SunriseTime( "%H:%M" );
var SunsetTime  = system.SunsetTime(  "%H:%M" );


Write( o ); o="";

WriteLine( "#\n# Alarmmeldungen:   \t" # Alarmmeldungen );
WriteLine(    "# Servicemeldungen: \t" # Servicemeldungen );
WriteLine(    "# DC:               \t" # DC_CCU3 # " %" );
WriteLine(    "# CS:               \t" # CS_CCU3 # " %" );

WriteLine( "#\n# Sonnenaufgang:    \t" # SunriseTime # " Uhr" );
WriteLine(    "# Sonnenuntergang:  \t" # SunsetTime  # " Uhr" );
WriteLine(    "# Aussen-Temp.:     \t" # Aussen_Temp # " C" );
WriteLine(    "# Wohnzimmer-Temp.: \t" # WZ_Temp     # " C" );

WriteLine( "#\n# Haustür-Schloss:  \t" # SecKey_Haustuer_DLD );
WriteLine(    "# Alarm-Modus:      \t" # _Alarm_Mode );

WriteLine( "#\n# (Stand: " # system.Date( "%H:%M" ) # " Uhr)" );


zu b) in BGInfo (Quelle: https://learn.microsoft.com/de-de/sysin ... ads/bginfo) ein "custom"/user defined field anlegen und als Inhalt die TXT-Datei angeben, die in (a) erzeugt wird, ggf Farbe/Position und Desktops anpassen - mit Preview prüfen..., s. Screenshots - und als myHM_BGInfo-demo.bgi speichern!

myHM_BGInfo-demo-1+2-cust+pos.jpg
myHM_BGInfo-demo-3-preview.jpg


zu c) eine CMD-Datei zusammenstellen, die diese Schritte (das txt-file (a) erstellen und bginfo.exe mit der bgi-Konfiguration (b) aufrufen) nacheinander ausführt

myHM_BGInfo-demo.cmd:

Code: Alles auswählen

@echo off
chcp 1252 >NUL

del %~dpn0.txt 2>NUL
echo.&echo # download Systeminfos ...
curl -s --data @%~dpn0.hms http://ccu3:8183/run.exe | %~dp0..\SwissFileKnife\sfk.exe utoa -i | findstr /B "#" > %~dpn0.txt

find "hostname:" %~dpn0.txt >NUL 2>NUL
if errorlevel 1 (
  echo ^(ccu3-%~n0.hms failed / Stand: %TIME:~,-6% Uhr^)> %~dpn0.txt 
  rem exit /B
)

echo.&type %~dpn0.txt

rem ---

echo.&echo # BGInfo ...
%~dp0BGInfo\BGInfo.exe %~dp0myHM_BGInfo-demo.bgi /TIMER:0 /LOG:%~dp0BGInfo.log /SILENT /NOLICPROMPT

(zur Umlaut-Behandlung wird der ccu-Download mittels sfk von utf zu ansi konvertiert, Quelle: https://sourceforge.net/projects/swissfileknife/)


und diese CMD in der Computerverwaltung/Aufgabenplanung regelmäßig ausführen lassen:

myHM_BGInfo-demo-task.jpg


Ergänzung/Heinweis:
- bei mir liegen myHM_BGInfo-demo.cmd, myHM_BGInfo-demo.hms und myHM_BGInfo-demo.bgi gemeinsam in einem Ordner (\myHM_BGInfo)
- in einem Unterordner BGInfo (\myHM_BGInfo\BGInfo) liegen die bginfo(64).exe aus dem sysinternals-zip-Download
- in einem zu \myHM_BGInfo parallelem Ordner \SwissFileKnife liegt sfk.exe von dem SourceForge.net-Download
--> so sind auch die in der cmd verwendeten Aufrufe ausgelegt, wer seine Daten anderst organisiert muss das natürlich anpassen

mademyday
Beiträge: 368
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 7 Mal
Danksagung erhalten: 70 Mal

Re: CCU-Systeminfos in BGInfo/als Windows-Desktop-Hintergrund/Wallpaper

Beitrag von mademyday » 09.12.2025, 09:45

Ergänzung:

wenn in der BGI-Konfiguration ein Pfad zu einem jpg-file als Hintegrundbild angegeben wird

myHM_BGInfo-demo-4-background.jpg

und in der cmd dann vor dem Aufruf der bgiinfo.exe genau das jpg-file durch ein zufälliges Bild aus einer Sammlung ersetzt wird

Code: Alles auswählen

  echo.&echo # Get-Random jpg ...
  for /F "tokens=*" %%I in ('powershell -NoProfile -Command "( gci -path D:\Bilder\dir1,D:\Bilder\dir2 *.jpg | Get-Random ).FullName"' ) do (
    echo # %%I
    copy /Y "%%I" %~dp0\myHM_BGInfo.jpg >NUL
  )

ergibt das eine Hintergrund-Diashow - nur eben mit den Systeminfos :)

myHM_BGInfo-demo-screen-2.jpg

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“