baumi's blog

baumi's personal blog … Linux, OS X, Windows, Random things, …

Linux Prozesse pausieren/fortfahren je nach produzierter Photovoltaik Sonnenenergie – Solar PV Controller KOSTAL PIKO 5.5

TL;DR
Aktuell produzierte Watt von der PV Anlage (KOSTAL PIKO 5.5 Wechselrichter) auslesen und anhand der Werte Linux Prozesse steuern. Pause/Resume, bei GPGPU Servern ist der Wattverbrauch weitgehend frei steuerbar indem man die MHz Clock Speeds der GPU’s entsprechend anpasst.

Langversion:
Letztes Jahr (2015) hatte ich einen sehr ressourcenintensiven Serverprozess, der aber nicht rund um die Uhr laufen muss. Da wir seit 2013 eine PV Anlage auf dem Dach haben, und der Wechselrichter eine Weboberfläche bietet, drängte sich der Gedanke auf einfach die Watt-Werte vom PV Controller auszulesen und abhängig davon meine Linux-Prozesse zu steuern. Das ganze wird minütlich vom Cronjob aufgerufen und klappte super. Unter Linux kann man die aktuell produzierten WATT der KOSTAL Photovoltaik-Anlage wie folgt auslesen, wobei “myPowerIntensiveProgram” ein Programm ist, welches z.B. unter 500 Watt pausiert werden soll, und über 500 Watt weiterlaufen soll. Script ist schneller Eigenbau, Anpassungen für andere Anlagen wie z.B. IP-Adresse, Username/Kennwort, usw. sind entsprechend vorzunehmen.

Screen Shot 2016-04-28 at 13.05.31

#!/bin/bash

# find process PID
PID=$(pgrep myPowerIntensiveProgram)

wget -q http://192.168.1.10/ --http-user=BENUTZER --http-passwd=KENNWORT -O /tmp/pv.txt

watt=$(grep "aktuell</td>" -A 2 /tmp/pv.txt | grep -v "aktuell" | cut -d '<' -f 1 | tr -d ' \t\n\r\f' | xargs | tr -d " " | tr -d "x x x")

datestr=$(date +"%d-%m-%y %H:%M")

echo -n "${datestr} - PV power: ${watt} W, "

echo "${datestr} - PV power: ${watt} W, " >> /root/pvcontroller.log


if (( $watt >= 500 )); then

        echo "Running ..."

        # prozess aufwecken ...
        kill -cont $PID

else

        echo "Pausing ..."

        # prozess pausieren
        kill -stop $PID

fi

Comments are currently closed.