Bei mir läuft unter Deb 11 folgende Lösung als init-Script: (/usr/local/sbin/lueftersteuerung.py)
-------------------------------------------------------------------------------------
#!/usr/bin/python3
#-------------------------------------------------------------------------------
# Name:         lueftersteuerung.py
# Purpose:      Anschluss eines Kuehlkoerpers und Temperatur Sensor
# GPIO-Library: RPi.GPIO 0.5.4
#
# Author:       Felix Stern
# Website:      www.tutorials-raspberrypi.de
#
# Created:      04.04.2014
#-------------------------------------------------------------------------------
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
import os
from sys import *
from string import *

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

if len(argv) < 5:
    print("zu wenig Argumente beim Aufruf", file=sys.stderr)
    exit(4)

PPIDFILE = argv[1]              # Prozessnummer
IMPULS_PIN = int(argv[2])       # GPIO Pin, der zum Transistor fuehrt
MAX_CPU_TEMP = int(argv[3])     # Ab welcher CPU Temperatur der Luefter einschaltet MIN_CPU_TEMP = int(argv[4])     # Ab welcher CPU Temperatur der Lüfter ausschaltet SLEEP_TIME = int(argv[5])       # Alle wie viel Sekunden die Temperatur ueberprueft wird

# Prozessnummer in PPID-File schreiben
ppidfile = open(PPIDFILE, 'w')
pid = os.getpid()
print(pid, file=ppidfile)
ppidfile.close()

def get_cpu_temperature():
    temp = open('/sys/class/thermal/thermal_zone0/temp').readline()
    temp1 = int((int(temp) + 500) / 1000)   # runden
    return temp1
def main():

        #Init
        GPIO.setup(IMPULS_PIN, GPIO.OUT)
        GPIO.output(IMPULS_PIN, False)

        while True:
                cpu_temp = get_cpu_temperature()
                if cpu_temp >= MAX_CPU_TEMP:
                        GPIO.output(IMPULS_PIN, True)
                        # print("Lüfter ein")
                if cpu_temp <= MIN_CPU_TEMP:
                        GPIO.output(IMPULS_PIN, False)
                        # print("Lüfter aus")

                # print("gemessene CPU Temperatur:" + str(cpu_temp))

                time.sleep(SLEEP_TIME)


if __name__ == '__main__':
    main()
--------------------------------------
mit env-Script: (/etc/default/lueftersteuerung)

# CONFIGURATION FILE FOR lueftersteuerung

GPIOPIN=26      # GPIO Pin für Lüftersteuerung
MAXTEMP=40      # Temperatur in Grad Celsius, bei dessen Überschreitung der Lüfter zugeschaltet wird MINTEMP=35      # Temperatur in Grad Celsius, bei dessen Unterschreitung der Lüfter ausgeschaltet wird
DELAY=30        # Wartezeit zwischen den Messungen in Sekunden
---------------------------------------------------------------------------------------
und es funktioniert. Am besten, mal ähnlich probieren.
Tschüs
Josef Müller


Am 09.01.22 um 00:00 schrieb Daniel Leidert:
Am Samstag, dem 08.01.2022 um 17:05 +0100 schrieb Uwe Koloska:
Am 08.01.22 um 15:57 schrieb Daniel Leidert:
ich habe Probleme mit einem externen Projekt. In diesem wird ein Raspberry
Compute Module 4 als Basis benutzt. Darauf läuft momentan ein Debian
Bullseye
(https://raspi.debian.net/), sowie ein Python-Server. Der Python-Server
versucht mittels des RPi.GPIO Python Moduls (0.7.1a4) einige GPIO-Pins zu
schalten und der Entwickler behauptet, das würde mit Bullseye nicht
funktionieren (siehe Betreff). Da aber das Raspberry Pi OS ja selbst auf
Bullseye aufsetzt und die Angaben des Entwicklers sehr schwammig sind,
Leider sind deine Informationen auch nicht weniger schwammig,
Aus diesem Grunde suche ich jemanden, der mir hilft, das Problem
auseinanderzuklamüsern. Und ich möchte ungern die Kommunikation hier
breittreten, oder versuchen, etwas zu paraphrasieren, was ich selbst für
ungenau halte.

so dass
ich mit meine Glaskugel und ein bißchen Suchmagie bemühen musste, aber
diesen Hinweis gefunden habe:
https://raspberrypi.stackexchange.com/questions/135163/error-installing-rpi-gpio-in-virtual-environment

Da Bullseye per Default mit python 3.9 kommt, würde das genau den
beobachteten Fehler erklären und hat nix mit Debian vs. Raspberry Pi OS
zu tun.
Nein, das ist nicht das Problem. Wie ich schon schrieb, wird die Version
0.7.1a4 genutzt, in der man alle bekannten Bauprobleme des letzten stabilen
Releases behoben hat. Der Link verweist i.Ü. auf das Bauproblem mit GCC 10
(Ticket 187 im Upstream-Ticker). Die 0.7.0 konnte man nur mit CFLAGS=-fcommon
bauen, ansonsten bekamn man genau die Fehlermeldung, die der Nutzer beschreibt.
Das hatte aber mit der Python-Version nichts zu tun.

Die Module sind alle installiert. Da gab es keine Probleme.

Laut Entwickler wirft aber

import RPi.GPIO as GP; GP.setup(18, GP.OUT)

den Fehler "map error for gpio" aus. Und dazu finde ich gar nichts. Ich hatte
auch noch keine Zeit, das selbst zu probieren (wird heute oder morgen).

Seine Behauptungen zu den Gründen müsste ich dir zeigen, aber die machen für
mich keinen Sinn, zumal sowohl Raspberry Pi OS unter Buster als auch Bullseye
auf die Kernelreihe 5.10 setzen, die hier auch vom Debian Raspbi-Projekt
genutzt wird.

Evtl. ist auch [1] das Problem (vielleicht trat das Problem ja schon eher, in
der 5.10er Reihe auf), aber ich weiß es halt nicht so recht.

[1] https://ubuntu.com/tutorials/gpio-on-raspberry-pi

würde
ich das gerne mal mit jemandem gemeinsam anschauen, der sich damit
auskennt.
Die Zeit kann ich dem Projekt in Rechnung stellen, so dass sie auch
vergütet
wird.
Wenn du mehr Informationen brauchst, schreib mich gerne an.
Liebend gerne würde ich das mal persönlich oder via Video-Chat besprechen. Da
kann ich das Setup, die Kommunikation und den Quellcode zeigen, der wirklich
übersichtlich ist.


Gruß, Daniel




Antwort per Email an