Hallo VeryPirat,
ich bin mir ganz sicher, dass die Störsignale vom 240V-Netz kommen, denn wenn im Nebenzimmer eine Deckenbeleuchtung mit Trafo angeschaltet wird, reagieren die LEDs immer darauf. Das Spielchen kann auch von einem anderen Zimmer fortgesetzt werden.
Unterschiede gibt es nur, dass vom Nebenzimmer aus gleich etwa 25 LEDs darauf reagieren, während dessen nur die erste LED darauf reagiert, wenn z.B. im gleichen Zimmer eine gewöhnliche Deckenbeleuchtung mit Energiesparlampen angeschaltet wird.
Via Funk können solche Störungen nicht produziert werden.
Selbst wenn der Raspberry Pi ausgeschaltet ist und nur die LEDs mit Strom versorgt werden, reagieren diese auch auf die Einschaltvorgänge der Deckenlampen.
Wahrscheinlich liegt es auch daran, dass es ein Altbau ist, in dem auch die 240V-Volt-Leitungen zum Teil ebenso alt sind. Ein Großteil wurden im Laufe der Jahre bereits ausgetauscht, jedoch eben nicht alle.
Aber ich bin dabei eine Software-Lösung zu schaffen:
Von einem Service, der beim Booten automatisch gestartet wird, kann künftig etwa alle 2 Sekunden der Zustand jeder einzelnen LED abgefragt und bei Bedarf korrigiert werden. Auf diese Weise wird zwar die Störung selbst nicht beseitigt, jedoch die Auswirkung minimiert, da die Störung nur max. 2 Sekunden zu sehen ist. Ich halte das für vertretbar.
Auf dieser Webseite habe ich eine Basis-Grundlage für einen Service, der mit Python läuft: https://stackoverflow.com/questions/1603…daemon-in-linux
Darauf aufbauend kann man eine Endlosschleife ausführen lassen, mit dem der Status der einzelnen LEDs abgefragt und geändert werden können.
Wenn eine bewusste Änderung der LEDs herbeigeführt werden soll, kann dies über Funktionen im Python-as-Service-Script umgesetzt werden.
Wobei das Beispiel-Script für Python 3 auf der Webseite https://pypi.org/project/adafruit-circuitpython-ws2801/ nicht funktioniert.
Bei der Ausführung eines solchen Beispielscripts reagieren keine LEDs auf die Änderungen:
import board
import adafruit_ws2801
leds = adafruit_ws2801.WS2801(board.D2, board.D0, 25)
leds.fill((0x80, 0, 0))
Im Python2 Script werden die LEDs über SPI-Ports angesteuert. Beim SPI brauchte ich auch keine genauen GPIO-Ports angeben, die verwendet wurden; dies wurde alles vom SPI-Modul ermittelt. Hier ein Teilausschnitt von einem Python2-Script:
import time
import RPi.GPIO as GPIO
import sys, getopt
import os
# Import the WS2801 module.
import Adafruit_WS2801
import Adafruit_GPIO.SPI as SPI
# Anzahl der LEDs einstellen:
PIXEL_COUNT = 61
# Alternatively specify a hardware SPI connection on /dev/spidev0.0:
SPI_PORT = 0
SPI_DEVICE = 0
pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)
Alles anzeigen
Aber das ist ein anderes Thema. Hierfür werde ich zu einem späteren Zeitpunkt noch ein eigenes Thema in diesem Forum eröffnen.