Raspberry Pi 3 - Grundlagen und LED Ansteuerung
Version 1.10,Der Raspberry Pi bietet vielfältige Einsatzmöglichkeiten und eignet sich hervorragend zum Experimentieren. Ich habe mir den Raspberry Pi beschafft, um Funkmodule auf 433 MHz Basis auslesen zu können. Bis zur Realisierung dieses Zieles müssen allerdings einige Hürden gemeistert werden, die ich in diesem Artikel am Beispiele einer LED Steuerung beschreibe.
Hinweise:
- Preisangaben Stand November 2021. Bezugsquellen gibt es reichlich im Internet. Vergleichen lohnt sich.
- Diese Dokumentation bezieht sich auf das Raspberry Pi Modell 3 B (ca. 40 Euro).
Das Modell 3 B+ kostet ca. 60 Euro (im Jahr 2018 noch ca. 34 Euro!). Inzwischen gibt es das Modell 4 B mit 2 GB Speicher ab 55 Euro (Modelle mit 4 GB oder 8 GB sind ebenfalls verfügbar) - Wikipedia Eintrag mit vielen Details

Die Platinengröße des Raspberry Pi beträgt 56x85 mm
Was wird benötigt?
- Raspberry Pi 3 B.
Auch die älteren oder neueren Modelle können eingesetzt werden. Auf die Unterschiede gehe ich aber nicht ein. - Geeignetes Netzteil (Anschluss über MicroUSB Kabel).
Beispiel: Rydges SpeedPower High-Quality PC Netzteil 5V 2,5A / 2500 mAh (ca. 16 Euro) - Monitor mit HDMI Anschluss
- HDMI Kabel
- microSD Karte mit mindestens 4 GB Kapazität (ohne Desktop). Beispiel: SanDisk Ultra 16GB microSDHC Speicherkarte mit Adapter (ab ca. 10 Euro, Vorsicht vor billigen Fälschungen!).
- USB Maus
- USB Tastatur
- Breadboard - eine Steckplatine für Versuchsaufbauten (Details unten)
- LED (Farbe beliebig)
- Widerstand
- Steckbrücken/Drahtbrücken, auch Jumper Wire genannt. Für diesen Versuchsaufbau werden lediglich zwei Steckbrücken männlich/weiblich (male/female) benötigt. Eine Länge von 10 cm ist ausreichend. Möchte man tiefer einsteigen empfiehlt sich ein Set von Drahtbrücken (male/male, female/female, male/female)
Vor der erstmaligen Inbetriebnahme des Raspberry Pi wird noch ein geeignetes Betriebssystem benötigt. Auch wenn es inzwischen möglich ist Windows 10 zu installieren, bietet sich eine optimierte Linux Version an. Es gibt viele Quellen für den Download im Internet. Empfehlen kann ich den Download von der raspberrypi.com Seite.
Mit dem Raspberry Pi Imager (knapp 19 MByte) ist es sehr einfach eine bootfähige SD Karte für den Raspberry Pi zu erstellen. microSD Karte am PC einstecken, Raspberry Pi Imager von der Seite raspberrypi.com Seite herunterladen, installieren und ausführen:

Der Raspberry Pi kann - ähnlich zu Microsoft Windows - mit einer grafischen Oberfläche betrieben werden, hier Desktop Version genannt. Um mit Python zu programmieren, ist eine grafische Desktop Oberfläche nicht erforderlich. Ich wähle daher ein Betriebssystem ohne Desktop aus:


Nach Auswahl der microSD Karte erstellt der Imager eine bootfähige microSD Karte. Der Raspberry Pi Imager kann geschlossen und die microSD Karte aus dem PC entfernt werden.
microSD Karte auf der Unterseite des Raspberry Pi 3 einschieben und entsprechende Peripherie (Monitor, Maus, Tastatur und zuletzt das Netzteil) anschließen. Sobald der Raspberry Pi mit Strom versorgt ist, sollte Linux (basierend auf Debian) booten.

Die wichtigsten Anschlüsse des Raspberry Pi. Zwischen HDMI und Sound befindet sich noch der Anschluss für eine Raspberry Camera
Die Anmeldung erfolgt mit dem Benutzer pi und dem Passwort raspberry.
Wichtig: bei deutscher Tastatur ist an Stelle von 'y' die Taste 'z' zu drücken, da noch keine deutsche Tastatur hinterlegt ist.
Anschließend sollte sich das Betriebssystem mit der Eingabeaufforderung pi@raspberrypi:~ $ melden:

Hinweis: Dieser und die folgenden Screenshots wurden mit einem SSH Tool erstellt. Mit diesem Tool kann man auf den Raspberry zugreifen, ohne dass Monitor, Maus und Tastatur angeschlossen sein müssen. Dazu später mehr.
Deutsches Tastatur Layour mit dem Tool raspi-config einstellen
sudo raspi-config
Hinweis: sudo führt Befehle unter Linux mit Superuser Berechtigung aus (auch root Berechtigung genannt)!
Hinweis: Vorsicht beim Eintippen des Bindestrichs auf einer Tastatur mit deutschem Layout: 'ß' entspricht dem Bindestrich

Select 4 Localisation Options, L1 Locale, de-DE.UTF-8 UTF-8
Select 4 Localisation Options, L2 Timezone, Europe, Berlin
Select 4 Localisation Options, L3 Keyboard, Generic 102-key PC (intl.), German und Auswahl spezieller Tasten (bei Bedarf eine andere Tastator wählen)
Es wird empfohlen das Passwort zu ändern: Select 1 System Options, S3 Password
Netzwerk
Der Raspberry_Pi verfügt sowohl über eine Netzwerk Schnittstelle (LAN, Ethernet) sowie über ein WLAN Interface. Dieses lässt sich über 1 System Options, S1 Wireless LAN konfigurieren.
Nach erfolgreicher Netzwerk Anbindung muss noch die IP Adresse ermittelt werden:
ip a oder ifconfig
Abhängig von der Netzwerkanbindung (Ethernet oder WLAN) ist die IP Adresse unter eth0 oder wlan0 zu finden. Im Heimnetzwerk beginnt diese üblicherweise mit 192.168.0.x oder 192.168.178.x. Diese IP Adresse merken/notieren.
Zugriff über SSH Client erlauben
sudo raspi-config
Select 3 Interface Options, P2 SSH, Yes (Would you like the SSH server to be enabled?)
Danach ist der Zugriff über SSH möglich. Ein beliebtes Tool ist PUTTY, das es auch als portable Version gibt. Suche im Internet nach "Download PUTTY". Nach Herunterladen, Installation (nicht bei portabler Version) und Start:

IP Adresse eingeben und auf Open klicken. Die SSH Verbindung zum Raspberry Pi wird aufgebaut.

Nach der Anmeldung ist der Zugriff auf den Raspberry Pi ohne angeschlossene Tastatur, Maus und Monitor möglich.
Damit ist die Basiskonfiguration abgeschlossen.
LED über GPIO ein- und ausschalten
GPIO steht für General Purpose Input Output und bietet die Möglichkeit, über Ein- und Ausgangskanäle an den Raspberry angeschlossene Hardware zu steuern. Das Ein- und Ausschalten einer LED ist für die ersten Tests die einfachste Variante.
Für den Versuchsaufbau ist ein Breadboard sehr hilfreich, da die erforderlichen Bauteile nur gesteckt und nicht verlötet werden müssen.
Breadboards gibt es in unterschiedlichen Ausführungen. Eine größere Variante (165 x 55 mm) sieht z.B. so aus:

Bei diesen Steckboards ist es wichtig zu wissen, dass bestimmte Kontakte miteinander verbunden sind. Im folgenden Bild mit roten Strichen verdeutlicht:

Für den Versuchsaufbau mit einer LED und einem Widerstand reicht auch ein kleines Breadboard (47 x 35 mm):


Welche LED?
Jede handelsübliche LED kann eingesetzt werden. Die LED wird über einen Vorwiderstand betrieben. Um diesen zu berechnen, benötigt man im Idealfall das Datenblatt der LED. Ist dieses nicht vorhanden, da die LED aus der Bastelkiste kommt, sollte man von einer LED Betriebsspannung von 2 Volt und einem Betriebsstrom von 20 mA ausgehen.

Eine LED lässt den Strom nur in eine Richtung fließen, es ist daher wichtig zu wissen, welcher Anschlussdraht an die positive Spannung (Anode) und welcher Anschlussdraht an die Masse (Kathode) angeschlossen wird. Der längere Anschlussdraht ist die Anode, muss also an die positive Spannung (GPIO Port) angeschlossen werden.
Welcher Widerstand?
Für die Berechnung des Widerstandes benötigt man die Formel der Ohmschen Gesetze: U = R * I (U=Spannung in Volt, R=Widerstand in Ohm, I=Strom in Ampere). Der Schaltungsaufbau ist einfach: der GPIO Ausgang (Spannung mit 3,3 Volt) wird an die Anode der LED angeschlossen, die Kathode der LED an den Vorwiderstand und der Vorwiderstand wird mit der Masse verbunden:

Wird der GPIO Ausgang aktiviert, dann stehen an diesem Anschluss 3,3 Volt zur Verfügung. Die Betriebsspannung der LED beträgt 2 Volt. Am Widerstand verbleiben daher noch 1,3 Volt. Sollen durch die LED 20 mA (also 0,020 Ampere) fließen, errechnet sich der Vorwiderstand mit der Formel: R = U / I. R = (3,3 V - 2 V) / 0,02 A = 65 Ohm.
Widerstände sind mit Farbcodes kodiert:

Gängige Kohlewiderstände sind mit vier Farbringen gekennzeichnet, es gibt allerdings auch Metallschichtwiderstände mit fünf Farbringen. Bei Kohlewiderständen geben drei Ringe den Wert und der vierte Farbring die Toleranz an.


Der obige Widerstand besitzt die Farbringe rot (2), violett (7), braun (x 10) und silber (10%). Damit ergeben sich 270 Ohm mit einer Toleranz von 10%, d.h. der eigentliche Wert des Widerstandes liegt zwischen 243 Ohm und 297 Ohm. Nach obiger Berechnung benötige ich aber einen Widerstand mit 65 Ohm (Farbringe blau - grün - schwarz). Der vorliegende Widerstand besitzt den vierfachen Wert! Ist das ein Problem? Für den Versuchsaufbau ist das unbedenklich. Ein größerer Widerstand reduziert den Strom. Ergebnis: die LED leuchtet nicht so stark. Grundsatz: ist der berechnete Widerstandswert nicht verfügbar, dann besser einen Widerstand mit höherem Wert nehmen, als einen niedrigeren.
Kann ich die LED ohne Vorwiderstand betreiben?
Das sollte keinesfalls erfolgen, da dadurch die LED zerstört werden kann. Eventuell kann auch der Raspberry Schaden nehmen.
Vorwiderstand zwischen LED und Anode oder zwischen LED und Kathode?
Beide Varianten sind erlaubt. Es gibt keinen Unterschied. Der Widerstand begrenzt den Strom vor und nach der LED.
Versuchsaufbau
Um den Raspberry Pi mit dem Breadboard zu verbindern, benötigt man die Belegung der Steckleiste.
Die GPIO Ports können über die GPIO Nummer oder den Pin der Steckerleiste angesprochen werden. Das ist bei der Programmierung zu berücksichtigen! Für den Anschluss einer LED werden nur zwei Pins an der Steckerleiste benötigt: die Masse (GND, Ground) und ein beliebiger GPIO Pin. In diesem Beispiel werden die Pins 39 (GND, Masse) und 40 (GPIO21) benutzt.

Das schwarze Kabel verbindet die Masse (GND, Pin 39) mit dem Breadboard (Reihe 2). Die Steckplätze A, B, C, D und E in der Reihe 2 sind miteinander verbunden. Der 270 Ohm Widerstand wird mit einer Seite in 2B gesteckt und mit dem anderen Ende auf 2G. Steckplätze F, G, H, I und J in der Reihe 2 sind ebenfalls miteinander verbunden. Die Kathode der LED (kürzerer Anschluss) wird auf 2H gesteckt, die Anode der LED (längerer Anschluss) auf 1H. Jetzt wird noch die Anode 1J über das rote Kabel mit dem Pin 40 (GPIO21) verbunden.
Programmierung
Jetzt fehlen noch ein paar Zeilen Programmierung, um die LED zum Leuchten zu bringen. Üblicherweise nutzt man beim Raspberry Pi die Programmiersprache Python, die auch für einen Anfänger schnell zu verstehen ist. Im Internet gibt es viele Python Tutorials, die sich auch für Einsteiger eignen, z.B. www.python-kurs.eu.Der Programmcode muss über einen Editor eingegeben werden. Als Editor nutze ich in diesem Beispiel nano, der etwas gewöhnungsbedürftig ist, aber für die wenigen Zeilen Programmcode ausreicht.
nano led.py
1 | import RPi.GPIO as GPIO |
2 | import time |
3 | GPIO.setmode(GPIO.BCM) |
4 | LED=21 |
5 | GPIO.setup(LED,GPIO.OUT) |
6 | GPIO.output(LED,True) |
7 | time.sleep(5) |
8 | GPIO.output(LED,False) |
9 | GPIO.cleanup() |
- Zuerst müssen zwei Bibliotheken zum Ansprechen der GPIO Ports (Zeile 1) und des Timers (Zeile 2) eingebunden werden.
- Zeile 3 entscheidet, welche Nummerierung für die Ports genutzt wird. BOARD entspricht den Pins der Steckleiste, BCM den GPIO Bezeichnungen. In diesem Beispiel entspricht BOARD=40 BCM=21. Würde ich Zeile 3 mit GPIO.setmode(GPIO.BOARD) kodieren, müsste ich Zeile 4 in LED=40 ändern.
- Zeile 4 weist der Variablen LED den Wert 21 zu. Das ist nicht zwingend erforderlich. In den Folgezeilen könnte LED auch durch 21 ersetzt werden. In komplexeren Anwendungen erhöht es aber die Lesbarkeit.
- GPIO Ports können als Eingang oder Ausgang geschaltet werden. In Zeile 5 wird der GPIO Port 21 als Ausgang (OUT) geschaltet.
- In Zeile 6 wird die LED eingeschaltet.
- Zeile 7 definiert eine Warteschleife von 5 Sekunden
- Zeile 8 schaltet die LED wieder aus
- Abschließend werden alle benutzten Ports auf Input zurückgesetzt
Die Spannung steigt. Geht die LED an und nach 5 Sekunden wieder aus? Zum Ausführen des Programmcodes wird Python mit dem Namen der Datei aufgerufen.
python led.py
Programmcode am PC bearbeiten und auf den Pi übertragen
Für einfache Beispiele reicht der im Linux Betriebssystem enthaltene Editor nano aus. Ich bevorzuge es, den Quellcode am PC mit Visual Studio Code (Microsoft, kostenlos) oder Notepad++ (kostenlos) zu bearbeiten und diesen dann über FTP an den PI zu übertragen. Auch hier empfehle ich einen freien FTP Client: FileZilla. Nach Download, Installation und Start von FileZilla muss einmalig im Servermanager (Menüpunkt: Datei - Servermanager) die Verbindung zum Pi eingerichtet werden.
- Klicken Sie auf Neuer Server
- Als Server geben Sie die IP Adresse des Raspberry Pi ein (siehe oben), hier: 192.168.0.146
- Das FTP Protokoll muss auf SFTP umgestellt werden
- Verbindungart: Normal
- Benutzer: pi
- Passwort: raspberry, bzw. das neue Passwort, das Sie vergeben haben

Bevor Sie den neuen Eintrag abspeichern, empfehle ich, im Reiter Erweitert den Standard Pfad sowohl auf dem PC (Lokales Standard-Verzeichnis) als auch dem Pi (Standard-Verzeichnis auf Server) entsprechend einzustellen. Das hat den Vorteil, dass nach dem Verbindungsaufbau zum PI die erforderlichen Verzeichnisse bereits angezeigt werden.
Hinweis:
In FileZilla sollte auch der bevorzugte Editor (Notepad++, Microsoft Visual Code, ...) hinterlegt werden (Menüpunkt: Bearbeiten - Einstellungen - Bearbeiten von Dateien - Benutzerdefinierten Editor verwenden).
Nach dem Verbindungsaufbau zum Pi können Sie die oben mit nano erstellte Datei per Doppelklick auf den PC übertragen, dort editieren und wieder auf den Pi kopieren. Ein weiterer Vorteil besteht darin, dass Sie jetzt automatisch eine Sicherungskopie auf dem PC vorliegen haben.
433MHz Daten empfangen
Die technischen Voraussetzungen, um Daten über einen 433Mhz Receiver zu empfangen sind minimal. Den erforderlichen Empfänger (wird fast immer zusammen mit einem Sender geliefert) kostet nur 2-3 Euro (einfach bei amazon oder eBay nach raspberry pi 433Mhz suchen).
Die üblichen Empfänger Module besitzen 4 Anschlüsse im 2,54 mm Raster und sind damit gut für die Breadboard Versuchsaufbauten geeignet. Auf der Rückseite sind normalerweise die Anschlussbezeichnungen aufgedruckt. Von der Bestückungsseite aus gesehen befindet sich ganz links der VCC Pin (5 Volt), dann folgen die beiden Datenpins und der Masseanschluss GND. Diese einfachen und extrem preiswerten 433MHz Empfänger werden ohne Datenblatt geliefert und auch die Internet Recherche liefert keine guten Ergebnisse. Empfohlen wird in fast allen Beiträgen den neben dem GND Pin liegenden Datenpin zu nutzen.
Für die Verbindung zum Pi werden lediglich drei Steckbrücken männlich/weiblich benötigt:

- Pin 2 (5V) mit VCC RF Empfänger verbinden (rotes Kabel)
- Pin 6 (GND) mit GND RF Empfänger verbinden (schwarzes Kabel)
- Pin 13 (GPIO 27) Data (neben GND) RF Empfänger verbinden (weißes Kabel)
Um jetzt Daten von 433MHz Sendern (Temperatursensoren, Steckdosen Fernbedienungen, ...) auszulesen, ist leider wesentlich mehr Aufwand erforderlich, als eine LED anzusteuern. Stöbert man im Internet zu diesem Thema, wird häufig die Bibliothek wiringpi angeführt. Aus zwei Gründen greife ich nicht auf diese Library zu: erstens funktioniert diese nicht mit denen bei mir verfügbaren 433MHz Sendern und zweitens möchte ich selbst verstehen, welche Datenströme übertragen werden.
Leider gibt für die 433 MHz Übertragung kein Standard Protokoll. Der Datenstrom hängt nicht nur von dem im 433MHz Sender verbauten Chip ab, sondern auch von den proprietären Protokollen des Herstellers.
Aus diesem Grund ist zuerst ein Programm erforderlich, das den Datenstrom erkennt und anzeigt.
Das folgende Programm liest in einer Endlos-Schleife den Status des GPIO Ports 27 aus. Ändert sich der Wert von 0 auf 1 oder von 1 auf 0 wird die zeitliche Differenz zur letzten Änderung berechnet und ausgegeben. Es wird mindestens ein vollständiger Block eingelesen. Ist die Pause größer als 50 ms, dann wird die Schleife abgebrochen.
1 | from datetime import datetime |
2 | import RPi.GPIO as GPIO |
3 | MAX_DURATION = 90 |
4 | RECEIVE_PIN = 27 |
5 | GPIO.setmode(GPIO.BCM) |
6 | GPIO.setup(RECEIVE_PIN, GPIO.IN) |
7 | cumulative_time = 0 |
8 | beginning_time = datetime.now() |
9 | count_iterations = 0 |
10 | pinstatus = 0 |
11 | timetemp = datetime.now() |
12 | firstblock = 0 |
13 | while cumulative_time < MAX_DURATION: |
14 | pinstatustemp = GPIO.input(RECEIVE_PIN) |
15 | time_delta = datetime.now() - beginning_time |
16 | if pinstatus <> pinstatustemp: |
17 | t = datetime.now() - timetemp |
18 | timetemp = datetime.now() |
19 | print str(time_delta) + ";" + str(t.microseconds) + ";" + str(pinstatustemp) |
20 | if firstblock == 1 and t.microseconds > 50000: |
21 | break |
22 | pinstatus = pinstatustemp |
23 | firstblock = 1 |
24 | count_iterations=count_iterations+1 |
25 | cumulative_time = time_delta.seconds |
26 | print count_iterations, ' loops' |
27 | GPIO.cleanup() |
Download Source rechts Maustaste, Ziel speichern unter ...
- Zuerst müssen zwei Bibliotheken zum Ansprechen der GPIO Ports (Zeile 1) und des Timers (Zeile 2) eingebunden werden.
- In Zeile 3 wird die maximale Laufzeit des Programmes in Sekunden definiert
- Zeile 4: prinzipiell kann jeder verfügbare GPIO Port benutzt werden. Dieses Beispiel arbeitet mit Port 27
- Zeile 5 entscheidet, welche Nummerierung für die Ports genutzt wird. BOARD entspricht den Pins der Steckleiste, BCM den GPIO Bezeichnungen. In diesem Beispiel entspricht BOARD=13 BCM=27.
- GPIO Ports können als Eingang oder Ausgang geschaltet werden. In Zeile 6 wird der GPIO Port 27 als Eingang (IN) geschaltet.
- Zeile 7 bis 12: Initialisieren einiger Variablen
- Zeile 13: Beginn der Endlosschleife. Die Laufzeit wird über den Wert der Variablen MAX_DURATION in Sekunden begrenzt (hier: 90 Sekunden)
cumulative_time enthält die vergangene Zeit in Sekunden seit Start des Programmes - Zeile 14: GPIO Pin Status abfragen
- Zeile 15: Laufzeit seit Start des Programmes berechnen (Typ: datetime)
- Zeile 16: hat sich der Port Status geändert (0 auf 1 oder 1 auf 0)?
- Zeile 17: Zeitdifferenz seit dem letzten Statuswechsel berechnen
- Zeile 18: Zeitstempel merken
- Zeile 19: Ausgabe der Variablen auf stdout im Format: [Zeitstempel seit Start];[Zeitdifferenz zum letzten Statuswechsel in Mikrosekunden];[Port Status low (0) oder high (1)]
Die drei Variablen sind mit Semikolon getrennt. Das Ergebnis kann dann leicht mit Excel eingelesen werden. - Zeile 20: Wurde bereits ein vollständiger Block (firstblock) eingelesen und der nächste Statuswechsel hat länger als 50 Millisekunden gedauert?
- Zeile 21: ja, dann Endlosschleife abbrechen
- Zeile 22: neuen Port Status merken
- Zeile 23: Programm befindet sich im ersten Block
- Zeile 24: zähle die Anzahl der Schleifendurchläufe (rein informativ, nicht erforderlich)
- Zeile 25: Laufzeit in Sekunden merken
- Zeile 26: Anzahl Schleifendurchläufe ausgeben
- Zeile 27: GPIO Ports zurücksetzen
Für die ersten Tests nutze ich eine Steckdosen Fernbedienung von HOMEeasy (4 Kanäle ein/aus, Master ein/aus).
Um das Ergebnis nach der erfolgreichen Aufzeichnung ausgeben zu können, empfiehlt es sich die Ausgabe auf eine Datei umzuleiten, z.B.
python 433e.py >433e.txt
Die Werte stehen nach maximal 90 Sekunden in der Datei 433e.txt zur Verfügung. Mit FileZilla kann die Datei auf den lokalen PC übertragen und anschließend ausgewertet werden. Die ersten Zeilen sehen z.B. so aus:
0:00:00.507586;507441;1
0:00:00.508189;667;0
0:00:00.512720;4425;1
0:00:00.513336;610;0
0:00:00.513993;650;1
0:00:00.514588;547;0
0:00:00.515262;709;1
0:00:00.516426;1146;0
0:00:00.516530;91;1
Eine halbe Sekunde (507586 Mikrosekunden = 507,586 Millisekunden = 0,508 Sekunden) nach Start des Programms erfolgt der erste Wechsel am GPIO Port 27 von 0 auf 1. Der Port bleibt 588 µs auf high bevor wieder low anliegt. Das sieht nach dem "Startschuss" aus. 4516 µs später liegt für 601 µs ein high Signal an, gefolgt von vielen Wechseln high/low und low/high, die unterschiedlich lang sind.
Jetzt empfiehlt es sich nach Mustern zu suchen, da 433MHz Sender die Daten üblicherweise mehrfach übertragen, um Übetragungsfehler zu minimieren. Dazu lese ich die gesammelten Daten in Excel ein und suche in dem Datenstrom nach längeren high Werten (> 2000 µs), da zwischen den Wiederholungen immer ein eindeutig längerer high-Wert gesendet wird. Kopiert man diese Blöcke nebeneinander, dann sieht das Ergebnis in Excel folgendermaßen aus:

Sehr schön zu erkennen, dass jeder Befehl 10x übertragen wird und die Länge der jeweiligen high/low Phasen recht gut zusammenpassen.
Aber wie können diese high/low Phasen jetzt in "echte" Werte übersetzt werden? Dazu müsste man jetzt wissen, welche Codierung der Hersteller für die Funksteckdosen verwendet. Leider gibt es dafür keine verlässlichen Quellen. Bei der Recherche findet man häufig das Stichwort Manchester Code, aber auch dieser Code scheint nicht normiert zu sein.
Beispiel für das Timing:

In der ersten Variante besteht der Wert 0 aus 275 µs high und 275 µs low, 1 aus 275 µs high und 1225 µs low.
Variante 2 definiert den Wert 0 aus 375 µs high und 1125 µs low, 1 aus 1125 µs high und 375 µs low. Darüber hinaus gibt es für 0 noch eine Kurzvariante: 375 µs high und 375 µs low.
Um jetzt herauszufinden, was wirklich in dem Datenstrom steckt, ist es hilfreich verschiedene Schaltvorgänge der Fernbedienung aufzuzeichnen und dann zu vergleichen, z.B. Kanal 1 ein, Kanal 1 aus, Kanal 2 ein, Kanal 2 aus, Master ein, Master aus, usw. Auch mit den DIP-Schaltern in der Fernbedienung kann man noch experimentieren.
Die folgende Aufstellung zeigt den jeweils dritten Befehl für die Vorgänge Kanal 1 EIN, 1 AUS, 2 EIN und 2 AUS. Farblich hervorgehoben werden alle Timings > 500 µs.

Da es sowohl lange high als auch lange low Phasen gibt, kann es sich nur um die zweite Variante der Codierung handeln. Damit lässt sich der Datenstrom in Binärcode übersetzen:

Hier noch ein paar nützliche Befehle auf der RASPIAN Kommandozeilenebene:
ls Inhalt des Verzeichnisses anzeigen
mkdir [name] Verzeichnis [name] erstellen
cd [name] In das Verzeichnis [name] wechseln
rmdir [name] Verzeichnis [name] löschen
rm -r [name] Verzeichnis [name] rekursiv löschen
sudo shutdown -h now Raspberry Pi herunterfahren (nicht einfach ausschalten)
06.01.2019
Feedback gerne an folgende E-Mail Adresse: pi@lasona.de