Raspberry Pi Home Automation einrichten

Set Up Raspberry Pi Home Automation



Eines der wichtigsten Dinge für die Hausautomation ist die Steuerung von Hochspannungs-Wechselstrom mit einem Niederspannungs-Gleichstrom. Um den Hochspannungs-Wechselstrom vom Raspberry Pi zu steuern, benötigen Sie einen 5V-Relaisschalter. Sie können den Relaisschalter mit den GPIO-Pins des Raspberry Pi steuern. Der Relaisschalter kann dann die AC-Haushaltsgeräte über Raspberry Pi steuern.

Dieser Artikel zeigt Ihnen, wie Sie Raspberry Pi und den 5V-Relaisschalter verwenden, um eine Glühbirne von Ihrem Mobilgerät aus ein- und auszuschalten. Der Artikel enthält eine Web-App, auf die Sie von jedem Gerät in Ihrem Netzwerk zugreifen und alle AC-Haushaltsgeräte in Ihrem Zuhause drahtlos steuern können. Beginnen wir also mit unserem einfachen Raspberry Pi-Heimautomatisierungsexperiment.







Dinge, die Sie brauchen

Wenn Sie Ihren Raspberry Pi Headless (per SSH oder VNC) verwenden möchten, benötigen Sie folgende Dinge:



1) Raspberry Pi 3 oder Raspberry Pi 4.
2) 5V Relaisschalter.
3) Elektrische Drähte.
4) 3 Anschlussdrähte von Buchse zu Buchse.
5) Wechselstrom-Glühbirne.
6) Wechselstrom-Glühbirnenhalter.
7) AC-Stecker.
8) Drahtschneider und Abisolierwerkzeug.
9) Schraubendreher CR-V 3.
10) Micro-USB (Raspberry Pi 3) oder USB Typ-C (Raspberry Pi 4) Netzteil.
11) 16 GB oder 32 GB microSD-Karte mit Raspberry Pi OS geflasht.
12) Netzwerkkonnektivität auf Raspberry Pi.
13) Laptop oder Desktop-Computer für VNC-Remote-Desktop-Zugriff oder SSH-Zugriff auf Raspberry Pi.



Wenn Sie nicht per SSH oder VNC auf den Raspberry Pi zugreifen möchten, benötigen Sie außerdem Folgendes:





14) Ein Monitor.
15) HDMI- oder Micro-HDMI-Kabel.
16) Eine Tastatur.
17) Eine Maus.

Wenn Sie Hilfe beim Flashen des Raspberry Pi OS-Images auf die microSD-Karte benötigen, lesen Sie den Artikel How to Install and Use Raspberry Pi Imager.



Wenn Sie ein Raspberry Pi-Anfänger sind und Hilfe bei der Installation von Raspberry Pi OS auf Raspberry Pi benötigen, lesen Sie den Artikel So installieren Sie Raspberry Pi OS auf Raspberry Pi 4.

Wenn Sie Hilfe bei der kopflosen Einrichtung von Raspberry Pi benötigen, lesen Sie außerdem den Artikel So installieren und konfigurieren Sie das Raspberry Pi-Betriebssystem auf dem Raspberry Pi 4 ohne externen Monitor.

Nachfolgend finden Sie Bilder aller erforderlichen Werkzeuge.

Einschalten des Raspberry Pi

Verbinden Sie als nächstes das Stromkabel mit dem Raspberry Pi und schalten Sie den Raspberry Pi ein.

Sobald Raspberry Pi eingeschaltet ist, können Sie über VNC oder SSH eine Verbindung zum Raspberry Pi herstellen. Oder Sie können eine Tastatur, eine Maus und einen Monitor an Raspberry Pi anschließen, um direkt darauf zuzugreifen.

5V Relais Pinbelegung

Ein Relais ist im Grunde ein Schalter. Im Gegensatz zu einem herkömmlichen Schalter kann ein Relais jedoch durch eine geringe Gleichspannung gesteuert werden.

Das 5V-Relais ist sehr einfach zu bedienen. Es hat zwei Seiten: eine Seite wird verwendet, um das Relais über Niederspannungs-DC (von Raspberry Pi) zu steuern, und die andere Seite wird verwendet, um die Hochspannungs-AC (dh die Glühbirne) zu steuern, abhängig vom Zustand des Relais .


Auf einer Seite hat das Relais zwei LEDs (eine rote und eine grüne) und drei Pins ( EIN, GND, und VCC ). Diese drei Pins werden verwendet, um das Relais vom Raspberry Pi zu steuern.

Die ersten beiden Pins auf der anderen Seite werden verwendet, um das AC-Haushaltsgerät zu steuern.

Anschließen des 5V-Relais an Raspberry Pi

Um das 5V-Relais an Raspberry Pi anzuschließen, benötigen Sie drei Anschlussdrähte von Buchse zu Buchse.

Stecken Sie eine Seite der Anschlussdrähte in die IN (gelbes Kabel), Masse (schwarzes Kabel) und VCC (roter Draht) Pins im 5V-Relais, wie unten gezeigt.


Die andere Seite der Drähte geht in die GPIO-Header-Pins des Raspberry Pi, wie im Bild unten gezeigt.

Das rote Kabel sollte in die PIN 2 (VCC) von Raspberry Pi.
Das schwarze Kabel sollte in die PIN 6 (GND) von Raspberry Pi.
Das gelbe Kabel sollte in die PIN 7 (GPIO 4) von Raspberry Pi.


Sobald das 5V-Relais an Raspberry Pi angeschlossen ist, sollte es wie im Bild unten gezeigt aussehen.

Erlauben des GPIO-Zugriffs für den Login-Benutzer

Um den Zugriff auf die GPIO-Pins zu ermöglichen, ist der Standard-Login-Benutzer von Raspberry Pi OS Pi sollte hinzugefügt werden gpio Gruppe.

Sie können das hinzufügen Pi Benutzer zum gpio Gruppe mit folgendem Befehl:

$sudoBenutzermod-aGgpio $(Wer bin ich)


Damit die Änderungen wirksam werden, starten Sie Raspberry Pi mit dem folgenden Befehl neu:

$sudoneustarten

Erstellen eines Projektverzeichnisses

Es ist auch eine gute Idee, alle Projektdateien organisiert zu halten.

Um die Projektdateien organisiert zu halten, erstellen Sie das Projektverzeichnis ~/www und die benötigten Unterverzeichnisse mit folgendem Befehl:

$mkdir -pv~/www/{Vorlagen, statisch}


Nachdem das Projektverzeichnis erstellt wurde, navigieren Sie wie folgt zum Projektverzeichnis:

$CD~/www

Schalten des 5V-Relais von Raspberry Pi

Nachdem Sie nun das 5V-Relais mit dem Raspberry Pi verbunden haben, schalten Sie das Relais vom Raspberry Pi mit der Programmiersprache Python um.

HINWEIS: Umschalten ist ein Begriff aus der Elektronik. Schalten bedeutet das Steuern (d. h. das Ein-/Ausschalten) eines bestimmten elektronischen Geräts.

Um mit dem Umschalten des Relais mit der Programmiersprache Python zu experimentieren, erstellen Sie das neue Python-Skript test.py im Projektverzeichnis wie folgt:

$Nanotest.py


Geben Sie die folgenden Codezeilen in das Python-Skript test.py ein.

vongpiozeroimportierenLED
von Zeit importierenSchlaf

während Wahr:
Relais=LED(4)
drucken('Weitergeben')
Schlaf(5)

Relais.nah dran()
drucken('Relais: Aus')
Schlaf(5)

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND und um die zu retten test.py Python-Skript.


Hier importiert Zeile 1 LED von dem gpiozero Bibliothek, und Zeile 2 importiert die Schlaf Funktion von der Zeit Bücherei.


Die Zeilen 6-14 befinden sich in einer Endlosschleife.


Zeile 6 initialisiert eine LED im GPIO 4 des Raspberry Pi, der mit dem verbunden ist IN Pin des Relais.


Zeile 8 schaltet das Relais mit dem ein An() Methode.

Zeile 9 druckt eine Nachricht in der Konsole mit dem drucken() Funktion.

Zeile 10 verzögert die Ausführung der nächsten Codezeile um fünf Sekunden mit dem Schlaf() Funktion.


Zeile 12 schaltet das Relais mit dem nah dran() Methode.

Auf die gleiche Weise druckt Zeile 9 eine Nachricht auf der Konsole mit dem drucken() Funktion und Zeile 10 verzögert die Ausführung der nächsten Codezeile um 5 Sekunden mit dem Schlaf() Funktion.


Führen Sie als Nächstes die test.py Python-Skript wie folgt:

$python3 test.py


Die test.py Das Python-Skript sollte mit dem Schalten des 5V-Relais beginnen. Sie sollten alle fünf Sekunden ein Klickgeräusch hören. Wenn das Relais seinen Zustand wechselt (von ein auf aus oder von aus auf ein), macht es ein klickendes Geräusch. Dies bedeutet, dass das Relais ordnungsgemäß funktioniert.


Im ausgeschalteten Zustand des Relais (Normalbetrieb – AC-Last ist abgeklemmt) sind nur die Netz Die LED sollte aufleuchten, wie Sie im Bild unten sehen können.


Wenn sich das Relais im eingeschalteten Zustand befindet (AC-Last ist angeschlossen), werden beide Grün LED und das Netz Die LED sollte aufleuchten, wie Sie im Bild unten sehen können.


Drücken Sie nach Abschluss des Tests + C das beenden test.py Skript.

Anschließen der AC-Glühbirne an das 5V-Relais

Das 5-V-Relais sollte jetzt ordnungsgemäß funktionieren. Jetzt verbinden Sie Ihr AC-Haushaltsgerät (in diesem Fall eine Glühbirne) mit dem 5V-Relais.

Schneiden Sie zuerst das schwarze elektrische Kabel, das mit der Glühbirne verbunden ist, mit einem Drahtschneider durch.


Sobald das schwarze elektrische Kabel, das mit der Glühbirne verbunden ist, mit einem Drahtschneider durchtrennt wurde, sollte es wie in der Abbildung unten gezeigt aussehen.


Ziehen Sie als nächstes die äußere Schicht ab, um etwa ½ Zoll des elektrischen Kabels freizulegen, wie in der Abbildung unten gezeigt.


Falten Sie dann die freiliegenden Drähte, wie in der Abbildung unten gezeigt.


Lösen Sie die markierten Schrauben des Relais mit einem CV-3-Schraubendreher.


Stecken Sie die freigelegten Drähte, die Sie zuvor abisoliert und gefaltet haben, in die beiden Schraubklemmen und ziehen Sie die Schrauben mit einem CV-3-Schraubendreher fest.

Testen der Relaisschaltung nach dem Anschließen der AC-Last

Sobald die Wechselstromlast an das 5-V-Relais angeschlossen ist, schließen Sie den Glühbirnenstecker an die Steckdose an.


Führen Sie die test.py Python-Skript aus dem Projektverzeichnis wie folgt:

$python3 test.py


Die test.py Das Python-Skript sollte mit dem Schalten des 5-V-Relais beginnen, das wiederum die Hochspannungs-AC-Glühbirne in Fünf-Sekunden-Intervallen schaltet. Die Wechselstrom-Glühbirne sollte fünf Sekunden lang eingeschaltet bleiben, dann fünf Sekunden lang ausgeschaltet bleiben und so weiter.

Im Bild unten ist die Glühbirne ausgeschaltet.


Die Glühbirne ist im Bild unten eingeschaltet.


Wie Sie sehen, können wir das Relais schalten und die Hochspannungs-AC-Glühbirne mit der Programmiersprache Python steuern. Also drücke + C das beenden test.py Skript.

Kommen wir nun zum nächsten Abschnitt.

Schreiben der Home Automation Web App

In diesem Abschnitt zeige ich Ihnen, wie Sie eine API-basierte Web-App mit der Programmiersprache Python schreiben. Sie können die Web-App verwenden, um das Relais und die AC-Haushaltsgeräte oder elektrischen Geräte, die mit dem Relais verbunden sind, über einen Webbrowser zu steuern.

HINWEIS: Alle in diesem Abschnitt gezeigten Codes sind in meinem GitHub-Repository verfügbar shovon8 / raspberry-pi-home-automation . Wenn Sie möchten, können Sie mein GitHub-Repository klonen und alle Codes überspringen.

Erstellen Sie das Python-Skript server.py im Projektverzeichnis wie folgt:

$Nanoserver.py


Geben Sie die folgenden Codezeilen in das ein server.py Python-Skript.

vonFlascheimportierenFlasche,jsonify,url_for,render_template
vongpiozeroimportierenLED
vonuuidimportierenuuid4
Räume= {}
Räume['Raum 1'] = [{
'Ich würde': uuid4(),
'Name':'Licht 1',
'Symbol':'fa fa-glühbirne',
'Status':Falsch,
'RelaisPin':4,
'relayInstanz':Falsch
}, {
'Ich würde': uuid4(),
'Name':'Lüfter 1',
'Symbol':'fa fa-fan',
'Status':Falsch,
'RelaisPin':6,
'relayInstanz':Falsch
}]
Räume['Bad 1'] = [{
'Ich würde': uuid4(),
'Name':'Licht 1',
'Symbol':'fa fa-glühbirne',
'Status':Falsch,
'RelaisPin':5,
'relayInstanz':Falsch
}]
App=Flasche(__Name__)
App.Konfiguration['SEND_FILE_MAX_AGE_DEFAULT'] = 0
@App.Route('/')
defHeimat():
Rückkehrrender_template('./index.html',Räume=Räume)
deftoggle_appliance_status(Ich würde):
zumZimmerinRäume:
zumGerätinRäume[Zimmer]:
wenn P(Gerät['Ich würde']) == Ich würde:
wennGerät['relayInstanz']:
Gerät['relayInstanz'].nah dran()
Gerät['relayInstanz'] = Falsch
anders:
Gerät['relayInstanz'] =LED(Gerät['RelaisPin'])
Gerät['relayInstanz'].An()
Gerät['Status'] = nichtGerät['Status']
Rückkehr Wahr
Rückkehr Falsch
@App.Route('/appliance/toggle/')
defAppliance_toggle(Ich würde):
Rückkehrjsonify({'Status': toggle_appliance_status(Ich würde)})

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND und um die zu retten server.py Python-Skript.


Hier importieren die Zeilen 1-3 alle notwendigen Komponenten aus ihren jeweiligen Bibliotheken.


Zeile 5 erzeugt ein leeres Räume Wörterbuch. In diesem Wörterbuch speichern wir alle Details der AC-Appliance, die wir über die Web-App steuern möchten.


Die Räume Details werden in den Zeilen 7-29 gespeichert.


Lassen Sie uns die Datenstruktur eines der Räume besprechen.

Hier lautet der Raumname Raum 1. So, Raum 1 ist der Schlüssel zum Räume Wörterbuch.


Die Raum 1 key enthält ein Array als Wert. Die Anzahl der Array-Elemente entspricht der Anzahl der AC-Hausgeräte, die Sie in diesem Raum haben und die Sie auch über die Web-App steuern möchten. In diesem Fall haben wir zwei AC-Haushaltsgeräte, die wir steuern möchten: Licht 1 und Lüfter 1 .


Jede Haushaltsgerätedefinition hat ein Ich würde . Die Ich würde ist eine zufällig generierte UUID. Dies wird verwendet, um zu identifizieren, welchen Raum wir über die API steuern möchten.

Ein Haushaltsgerät verfügt außerdem über Folgendes:

  • Name (Licht 1 in diesem Fall)
  • Symbol (Font Awesome Icon-Klasse, da wir Font Awesome für die Icons verwenden werden)
  • Status (Wahr wenn An und Falsch wenn aus )
  • RelaisPin (die GPIO-Pin-Nummer, die zur Steuerung des an das AC-Haushaltsgerät angeschlossenen Relais verwendet wird)
  • RelaisInstanz (der initialisierte LED Gegenstand von gpiozero Bibliothek, die für die Steuerung des jeweiligen GPIO-Pins verantwortlich ist – RelaisPin )


Zeile 31 initialisiert einen Kolben-Python-Webserver.

Zeile 32 konfiguriert den Kolben-Webserver.


Zeilen 34-36 senden die index.html Datei aus dem Vorlagen/ Verzeichnis, wenn Sie die Web-App für die Hausautomation besuchen.

Flasche verwendet Jinja2 Vorlagensprache zum Rendern der index.html Datei. Also, ich habe die bestanden Räume Wörterbuch zum index.html Datei. Jinja2 rendert die Homepage mit dem Räume Daten.


Die Funktion toggle_appliance_status() in den Zeilen 39-52 wird verwendet, um das Haushaltsgerät einzuschalten, wenn es ausgeschaltet ist, und das Haushaltsgerät auszuschalten, wenn es eingeschaltet ist Ich würde .

Es kehrt zurück Wahr wenn der Umschaltvorgang erfolgreich ist. Wenn ein Fehler auftritt, wird es zurückgegeben Falsch .


Die Zeilen 55-57 werden verwendet, um ein Haushaltsgerät mit dem umzuschalten /Gerät/umschalten/ API-Endpunkt des Webservers. Hier, Ich würde ist die ID des Haushaltsgeräts.


Erstellen Sie die index.html Datei in der Vorlagen/ Verzeichnis Ihres Projekts wie folgt:

$NanoVorlagen/index.html

Geben Sie die folgenden Codezeilen in das ein index.html Skript.


< html lang='An'>
< Kopf >
< Meta Zeichensatz='UTF-8'>
< Meta Name='Ansichtsfenster' Inhalt='width=device-width, initial-scale=1.0'>
< Verknüpfung rel='Stylesheet' href='{{ url_for('static', file) }}'>
< Verknüpfung rel='Stylesheet' href='{{ url_for('static', file) }}'>
< Titel >Hausautomation mit Raspberry Pi</ Titel >
</ Kopf >
< Karosserie >
< div Ich würde='Inhalt'>
< h1 >Raspberry Pi Hausautomation</ h1 >

{% für Zimmer in Zimmern %}
< div Klasse='Zimmer'>
< h2 >{{ Zimmer }}</ h2 >
< div Klasse='Haushaltsgeräte'>
{% für Gerät in Räumen[Raum] %}
< div Klasse='Gerät' Ich würde='{{ Appliance['id'] }}'> ='aktiv'>
< ich Klasse='{{ Gerät['icon'] }}'></ ich >
< Spanne >{{ Gerät['name'] }}</ Spanne >
</ div >
{% endfor %}
</ div >
</ div >
{% endfor %}

</ div >

< Skript src='{{ url_for('static', file) }}' Typ='Text/Javascript'></ Skript >
</ Karosserie >
</ html >

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND und um die zu retten index.html Datei.


Ein ... kreieren style.css Datei in der statisch/ Verzeichnis Ihres Projekts wie folgt:

$Nanostatisch/style.css


Geben Sie die folgenden Codezeilen in das ein style.css Datei.

@importieren URL('https://fonts.googleapis.com/css2?family=BenchNine: [email protected] ;400;700&display=swap');

* {
Rand: 0;
Polsterung: 0;
Schriftfamilie: 'BankNeun', serifenlos;
}

#Inhalt >h1{
Hintergrund:linear-Gradient(zurechts, rgb(112, 24, 163), rgb(86, 127, 240));
Farbe: #F f f;
Textausrichtung: Center;
Polsterung: .5em 0;
}

div.Zimmer {
Rand: .5em;
Grenze: 2px fest rgb(112, 24, 163);
Grenzradius: 5 Pixel;
}

div.Zimmerh2{
/* Hintergrund: rgb(9, 76, 121); */
Hintergrund:linear-Gradient(zurechts, rgb(112, 24, 163), rgb(86, 127, 240));
Polsterung: 0 0 0 .5em;
Farbe: #F f f;
}

div.Haushaltsgeräte {
Rand: .5em .5em 0 0;
Anzeige:biegen;
Flex-Wrap:wickeln;
}

div.Gerät {
Grenze: 2px fest rgb(112, 24, 163);
Grenzradius: 5 Pixel;
Breite: 110px;
Höhe: 120px;
Textausrichtung: Center;
Rand: 0 0 .5em .5em;
Anzeige:biegen;
Flex-Richtung:Säule;
}

div.Gerätich.Fa {
Schriftgröße: 4em;
Flex-Grow: 1;
Polster-Oberseite: 0,3em;
Farbe: rgb(204, fünfzig, fünfzig);
}

div.gerät[datenaktiv='aktiv']ich.Fa {
Farbe: rgb(32, 177, 51);
}

div.GerätSpanne{
Anzeige: Block;
Schriftstärke: Fett gedruckt;
Hintergrund: rgb(112, 24, 163);
Farbe: #F f f;
}

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND und um die zu retten style.css Datei.


Erstelle ein app.js Datei in der statisch/ Verzeichnis Ihres Projekts wie folgt:

$Nanostatisch/app.js


Geben Sie die folgenden Codezeilen in das ein app.js Datei.

Fenster.addEventListener('Belastung',hauptsächlich);

Funktionhauptsächlich() {
FunktiontoggleApplianceState(Und) {
woIch würde=Und.Weg[1].Ich würde;

wohttp= NeuXMLHttpRequest();

http.onreadystatechange = Funktion() {
wenn(Dies.readyState === 4 && Dies.Status === 200) {
wenn(JSON.analysieren(Dies.AntwortText).Status === wahr) {
wenn(Und.Weg[1].hasAttribute('datenaktiv')) {
Und.Weg[1].Attribut entfernen('datenaktiv')
} anders {
Und.Weg[1].setAttribute('datenaktiv', 'aktiv')
}
}
}
}

http.offen('WERDEN',``/Gerät/Umschalten/${Ich würde}``, wahr);
http.senden();
}


woHaushaltsgeräte=dokumentieren.getElementsByClassName('Gerät');
zum(ich=0;ich<Haushaltsgeräte.Länge;ich++) {
Haushaltsgeräte[ich].addEventListener('klicken',toggleApplianceState);
}
}

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND und um die zu retten app.js Datei.


Hier führt Linie 1 die hauptsächlich() Funktion, wenn das Laden der Webseite beendet ist.

In dem index.html Datei ist jedes Haushaltsgerät in einer Gerät Klasse. Die Zeilen 26-29 werden verwendet, um jedes Haushaltsgerät von der Webseite auszuwählen und die klicken Ereignis an das Gerät. Wenn jemand auf der Webseite auf ein Haushaltsgerät klickt, wird die toggleApplianceState() Funktion ausgeführt wird.


In den Zeilen 4-23 wird der toggleApplianceState() Funktion wird verwendet, um die /Gerät/umschalten/ Endpunkt des Webservers, um den Zustand des angeklickten Haushaltsgeräts zu ändern. Die Anfrage erfolgt im Hintergrund über AJAX. Sobald die Antwort eingegangen ist, wird die Webseite entsprechend aktualisiert.


Navigieren Sie zum statisch/ Verzeichnis in Ihrem Projektverzeichnis wie folgt:

$CDstatisch/


Laden Sie Font Awesome mit dem folgenden Befehl herunter:

$wgethttps://use.fontawesome.com/Veröffentlichungen/v5.15.1/fontawesome-free-5.15.1-web.zip


Sobald Font Awesome heruntergeladen ist, sollten Sie die neue ZIP-Datei finden fontawesome-free-5.15.1-web.zip in dem statisch/ Verzeichnis.

$ls -lh


Entpacken Sie die fontawesome-free-5.15.1-web.zip Datei mit folgendem Befehl:

$entpackenfontawesome-free-5.15.1-web.zip


Die fontawesome-free-5.15.1-web.zip Die Datei sollte nun entpackt werden.


Das neue Verzeichnis fontawesome-free-5.15.1-web/ sollte im Verzeichnis static/ erstellt werden, wie Sie im Screenshot unten sehen können.

$ls -lh

Benennen Sie das Verzeichnis um fontawesome-free-5.15.1-web/ zu toll/ mit folgendem Befehl:

$mv -vfontawesome-free-5.15.1-web fontawesome


Jetzt brauchst du das nicht mehr fontawesome-free-5.15.1-web.zip Datei. Also, entfernen Sie die fontawesome-free-5.15.1-web.zip Datei mit folgendem Befehl:

$rm -vfontawesome-free-5.15.1-web.zip


Die statisch/ Die Verzeichnisstruktur sollte wie im Screenshot unten dargestellt aussehen.

$ls -lh


Navigieren Sie zurück zum Projektverzeichnis ~/www wie folgt:

$CD..

Testen der Home Automation Web App

Um die Heimautomatisierungs-Web-App zu testen, führen Sie den folgenden Befehl in Ihrem Projektverzeichnis aus:

$FLASK_APP=server.py Kolbenlauf


Die Web-App sollte auf Port 5000 Ihres Raspberry Pi verfügbar sein.


Besuchen Sie im Chromium-Webbrowser http://localhost:5000 . Die Web-App für die Hausautomation sollte geladen werden.

Klicken Sie auf das Glühbirnensymbol, das im Bild unten angezeigt wird.


Die AC-Glühbirne sollte jetzt eingeschaltet sein. Die Farbe des Symbols sollte ebenfalls grün werden, um anzuzeigen, dass die Glühbirne eingeschaltet ist.


Die Web-App für die Hausautomation funktioniert also. Drücken Sie + C um den Webserver zu beenden.

Systemd Service für die Home Automation Web App erstellen

In diesem Abschnitt zeige ich Ihnen, wie Sie eine systemd-Dienstdatei für die Heimautomatisierungs-Web-App erstellen, damit sie beim Booten automatisch gestartet wird.

Erstellen Sie zuerst die raspi-home-automation.service Datei in Ihrem Projektverzeichnis wie folgt:

$Nanoraspi-home-automation.service

Geben Sie die folgenden Zeilen in die Datei raspi-home-automation.service ein.

[Einheit]
Beschreibung=Raspberry Pi Home Automation Webservice
Nach=netzwerk.ziel
[Service]
Arbeitsverzeichnis=/Heimat/Pi/www
Umfeld=FLASK_APP=server.py
Umfeld=FLASK_ENV=Produktion
ExecStart=/usr/bin/Kolbenlauf--Gastgeber= 0.0.0.0
Standardausgabe=erben
Standart Fehler=erben
Neu starten=immer
Benutzer= pi
[Installieren]
Gesucht von=multi-user.target

Wenn Sie fertig sind, drücken Sie + X gefolgt von UND und um die zu retten raspi-home-automation.service Datei.


Kopiere das raspi-home-automation.service Datei an die /etc/systemd/system/ Verzeichnis mit folgendem Befehl:

$sudo cp -vraspi-home-automation.service/etc/System/System/


Laden Sie die systemd-Daemons neu, damit die Änderungen wie folgt wirksam werden:

$sudosystemctl daemon-reload


Ergänzen Sie die raspi-home-automation service zum Systemstart von Raspberry Pi OS mit folgendem Befehl:

$sudosystemctlaktivierenraspi-home-automation.service


Starten Sie Raspberry Pi mit dem folgenden Befehl neu:

$sudoneustarten


Sobald Raspberry Pi bootet, raspi-home-automation service sollte aktiv sein/laufen, wie Sie im Screenshot unten sehen können.

$sudosystemctl status raspi-home-automation.service

Zugriff auf die Home Automation Web App von anderen Geräten

Um von anderen Geräten in Ihrem Heimnetzwerk auf die Heimautomatisierungs-Web-App zugreifen zu können, müssen Sie die IP-Adresse Ihres Raspberry Pi-Geräts kennen.

Die IP-Adresse Ihres Raspberry Pi 4 Geräts finden Sie in der Webverwaltungsoberfläche Ihres Heimrouters. In meinem Fall lautet die IP-Adresse 192.168.0.103. Dies wird bei Ihnen anders sein. Ersetzen Sie daher ab sofort meine IP durch Ihre.


Wenn Sie Zugriff auf die Raspberry Pi-Konsole haben, können Sie auch den folgenden Befehl ausführen, um die IP-Adresse zu ermitteln.

$Hostname -ICH


Sobald Sie die IP-Adresse Ihres Raspberry Pi-Geräts kennen, können Sie von jedem Gerät in Ihrem Heimnetzwerk darauf zugreifen.

Wie Sie im Screenshot unten sehen können, habe ich von meinem Android-Smartphone auf die Home-Automation-Web-App zugegriffen.


Achten Sie darauf, den Glühbirnenstecker in die Steckdose zu stecken.


Die Glühbirne sollte standardmäßig ausgeschaltet sein.


Wenn Sie in der Web-App für die Hausautomation auf das Glühbirnensymbol tippen, sollte die Farbe des Glühbirnensymbols zu Grün wechseln, um anzuzeigen, dass die Glühbirne eingeschaltet ist.


Wie Sie im Bild unten sehen können, ist die Glühbirne eingeschaltet.

Abschluss

In diesem Artikel wurde gezeigt, wie Sie ein 5-V-Relais verwenden, um ein elektrisches Hochspannungsgerät mit Wechselstrom von Raspberry Pi mit der Programmiersprache Python zu steuern. Der Artikel zeigte Ihnen auch, wie Sie eine API-basierte Python-Kolben-Web-App schreiben, um das Relay über den Webbrowser zu steuern. Dieser Artikel soll Ihnen den Einstieg in die Heimautomatisierung mit Raspberry Pi erleichtern.