Ich bekomme es nicht gebacken... innerhalb der Funktion geht es wunderbar...
Es kann doch nicht angehen, das man den Wert des Silders nicht aus der Funktion auslesen kann... Was ich versuche schlägt fehl...
Hier ist mal das gesamte Script ( welches sicherlich schöner und besser gemacht werden könnte... ich bin froh es so hinbekommen zu haben...) Es läuft bis auf den Punkt "Faktor" den ich gerne über den Slider von Blynk, beeinflussen möchte. Ich hab wohl gerade einen Tunnelblick der das ganze nur teilweise betrachtet....
LG Stefan
Code: Alles auswählen
#!/usr/bin/python3
#coding= utf-8
import RPi.GPIO as GPIO
import time
import datetime
#import os
#import sys
#import BlynkLib
#BLYNK_AUTH = 'XY'
#blynk = BlynkLib.Blynk(BLYNK_AUTH, server='192.168.10.102', port=8080, heartbeat=30)
GPIO.setmode(GPIO.BCM) # BCM-Bezeichnung der Pins verwenden
GPIO.setwarnings(False)
#@blynk.VIRTUAL_WRITE(39)
#def slider(value):
#value1 = "".join(value[0])
#value2 = str(value1)
#value3 = float(value1)
#print(value2)
# - - - - da sollte jetzt eine Variable stehen mit der ich später weiter basteln kann - - - -
ts = time.time()
timestamp = datetime.datetime.fromtimestamp(ts).strftime('%d.%m.%Y; %H:%M:%S')
Faktor = 20 # inaktiv -Version 1: wird von der aktuellen CPU Temp. abgezogen als Duty Cycle (z.B. 37Grad minus Faktor= Duty Cycle Luefter)
# aktiv -Version 2: wird dem delta (CPU - Innentemp) hinzu gerechnet um Drehzahl anzupassen
Luefter = 17 # GPIO PWM zum Luefter
Regelinterval = 120.0
GPIO.setup(Luefter, GPIO.OUT) # GPIO 17 auf Ausgang setzen
log = "/media/pi/USB_32GB/Raspi_101_Logs/PWMLuefter.csv"
alog = "/media/pi/USB_32GB/Archiv/PWMLuefter2021.csv"
def aktuelleTemperatur(): # Umgebungstemp Raspi -Technikfach Temp Sensor auslesen
# 1-wire Slave Datei lesen
file = open('/sys/bus/w1/devices/28-000005bbd5b3/w1_slave')
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000
# Temperatur ausgeben
rueckgabewert = '%6.2f' % temperature
return(rueckgabewert)
# PWM einschalten
pwm = GPIO.PWM(Luefter, 250); # soll ?? 25kHz Frequenz
pwm.start(10)
print('Start mit 10% ')
time.sleep(3.0)
try:
while True:
# CPU1 Temp
tempData = "/sys/class/thermal/thermal_zone0/temp"
dateilesen = open(tempData, "r")
CPURPi1 = dateilesen.readline(2)
dateilesen.close()
# CPU2 Temp
CPUtempRPi2 = open('/home/pi/Termo_Sensoren/CPUtempRPi2.txt')
CPURPi2 = CPUtempRPi2.read()
CPUtempRPi2.close()
ts = time.time()
timestamp = datetime.datetime.fromtimestamp(ts).strftime('%d.%m.%Y; %H:%M:%S')
#Temperatur Technikfach
messdaten = aktuelleTemperatur()
# Die waermere CPU steuert den Lüfter
if CPURPi1 >= CPURPi2:
print("1 ist waermer")
CPUWert = CPURPi1
CPU = 'RPi1'
elif CPURPi1 < CPURPi2:
print("2 ist waermer")
CPUWert = CPURPi2
CPU = 'RPi2'
#rpm = float(temperatur)-Faktor #feste Stellgrösse - Version 1
delta = (float(CPUWert))-(float(messdaten))
rpm = delta + Faktor # Variable delta steuert Duty Cycle - Version 2
rpmf = round(rpm, 0)
#print(rpm)
#print(rpmf)
pwm.ChangeDutyCycle(rpmf)
#pwm.ChangeDutyCycle(100)
print (timestamp, "CPU1: " + CPURPi1 + " °C ", "CPU2: " + CPURPi2 + " °C ","DutyCycle:", rpmf, "%", " Technikfach:", messdaten,"°C ","Delta:","{0:.2f}".format(delta),"°C")
#Log file
logfile = open(log, 'a')
logfile.write(timestamp+"; CPU 1: " + CPURPi1 +"°C; "+" CPU 2: " + CPURPi2 +"°C; "+ (str(rpmf))+"% DutyCycle; " +"Technikfach:"+ messdaten +"°C;"+" Delta: "+"{0:.2f}".format(delta)+"°C; "+ CPU +"\n")
logfile.close()
#alog file
logfile = open(alog, 'a')
logfile.write(timestamp+"; CPU 1: " + CPURPi1 +"°C; "+" CPU 2: " + CPURPi2 +"°C; "+ (str(rpmf))+"% DutyCycle; " +"Technikfach:"+ messdaten +"°C;"+" Delta: "+"{0:.2f}".format(delta)+"°C; "+ CPU +"\n")
logfile.close()
if CPURPi1 >= ('65'): # ab ca. 60C CPU Luefter 100%
pwm.ChangeDutyCycle(100)
elif CPURPi2 >= ('65'): # CPU Temp des RPi2 Luefter auf 100%
pwm.ChangeDutyCycle(100)
#blynk.run()
time.sleep(Regelinterval) #Regelintervall
# Abbruch durch Taste Strg-C
except KeyboardInterrupt:
pwm.stop()
GPIO.cleanup()