Inhaltsverzeichnis:

So steuern Sie Steckdosen mit einem Raspberry Pi - Gunook
So steuern Sie Steckdosen mit einem Raspberry Pi - Gunook

Video: So steuern Sie Steckdosen mit einem Raspberry Pi - Gunook

Video: So steuern Sie Steckdosen mit einem Raspberry Pi - Gunook
Video: Raspberry Pi: Steckdosen fernsteuern 2024, Juli
Anonim
So steuern Sie Ausgänge mit einem Raspberry Pi
So steuern Sie Ausgänge mit einem Raspberry Pi
So steuern Sie Ausgänge mit einem Raspberry Pi
So steuern Sie Ausgänge mit einem Raspberry Pi
So steuern Sie Ausgänge mit einem Raspberry Pi
So steuern Sie Ausgänge mit einem Raspberry Pi

In diesem Instructable zeige ich Ihnen, wie Sie eine Webschnittstelle erstellen, um Steckdosen in Ihrem Haus mit einem Raspberry Pi zu steuern. Ich habe mich entschieden, dieses Projekt zu schreiben, als ich den Sensoren-Wettbewerb sah, und da dieses Projekt die Verwendung eines Sensors zum Lesen von Codes von der Fernbedienung beinhaltet, die mit den von Ihnen gekauften Steckdosen geliefert wird, dachte ich, dass dieses Projekt die perfekte Passform wäre.

Ich werde daran arbeiten, dies so hoch wie möglich zu halten und Code bereitzustellen, damit dies alles funktioniert. Für alle von euch Code-Affen da draußen, fühlt euch frei, im Code herumzustöbern und mich in den Kommentaren unter die Lupe zu nehmen! Ich bin immer auf der Suche nach Verbesserungen. Es ist einiges los, also wenn Sie Fragen zu einem Schritt haben, hinterlassen Sie bitte einen Kommentar, damit ich das Instructable mit den erforderlichen Details aktualisieren kann.

Dieses Projekt verwendet hochfrequenzgesteuerte Steckdosen bei 433 MHz, die mit einem HF-Sender gekoppelt sind, der mit Ihrem Himbeer-Pi verbunden ist. Die Steckdosen werden mit Fernbedienungen geliefert, die Steckdosen ein- und ausschalten können, aber das macht keinen Spaß! Wir werden stattdessen einen Webserver verwenden, der auf dem Himbeer-Pi ausgeführt wird und es jedem mit dem Netzwerk verbundenen ermöglicht, bestimmte Steckdosen ein- oder auszuschalten. Ein Web-Front-End für dieses Projekt ist ideal, da jedes mit dem Internet verbundene Gerät in Ihrem Netzwerk als Fernbedienung verwendet werden kann.

Dies ist ein Projekt, von dem ich seit Jahren geträumt habe, und obwohl es noch Raum für Ergänzungen gibt, ist das wie folgt beschriebene Projekt ein funktionsfähiges System.

Lieferungen

  • Ein Raspberry Pi (ich habe ein RPi 3 Model B+ verwendet)
  • Ein 433 MHz Sender und Empfänger (ich habe diesen verwendet)
  • 433 MHz Steckdosen (ich habe das verwendet)
  • Jumper von Frauen zu Frauen (ich habe diesen Haufen gekauft)
  • Ein Computer oder Handheld-Gerät, das auf das Internet zugreifen kann

Schritt 1: Richten Sie Ihren Raspberry Pi ein

Richten Sie Ihren Raspberry Pi ein
Richten Sie Ihren Raspberry Pi ein

Beginnen Sie mit der Installation der neuesten Raspbian-Version auf Ihrem neuen Raspberry Pi. Wenn Sie vorhaben, ein vorhandenes Pi zu verwenden (was Sie vollständig tun können), müssen Sie nur sicherstellen, dass Sie Python 3 auf Ihrem Pi haben, da der gesamte von mir bereitgestellte Quellcode darin geschrieben ist, Typ

python3

in die Befehlszeile. Wenn Sie Python 3 haben, sollten Sie das Python-Terminal geöffnet sehen. Verlassen Sie das Terminal durch Schließen oder Tippen

Ausfahrt()

Sobald Sie dies bestätigt haben, müssen Sie Flask auf Ihrem Pi installieren. Flask ermöglicht es uns, unseren Webserver zu erstellen. Geben Sie in der Pi-Befehlszeile ein

sudo pip3 installiere flasche

Falls Sie pip nicht auf Ihrem Pi installiert haben, müssen Sie eingeben

sudo apt-get install python3-pip

Am liebsten entwickle ich auf meinem Raspberry Pi bequem von meinem Desktop-Computer aus. Wenn auch Sie diese Option bevorzugen, müssen Sie eine Art SSH-Umgebung auf dem Pi installieren. PuTTY wird funktionieren, aber ich bevorzuge eine GUI (grafische Benutzeroberfläche), die es so aussehen lässt, als ob Sie direkt auf dem Pi wären. Für die GUI-Option sollten Sie VNC Viewer auf dem Computer installieren, auf dem Sie arbeiten möchten. Es gibt auch Einstellungen, die Sie auf Ihrem Pi anpassen müssen. Eine Anleitung zum Ändern der Einstellungen finden Sie hier.

Schritt 2: Anschließen Ihrer Hardware

Anschließen Ihrer Hardware
Anschließen Ihrer Hardware

An dieser Stelle ist es an der Zeit, alle physischen Verbindungen herzustellen, die Sie zur Vorbereitung des Einrichtens des Quellcodes für dieses Projekt benötigen. Sie verbinden die Pins des Senders und des Empfängers mit den GPIO-Pins Ihres Pi. Sie sollten sich religiös auf das Pinbelegungsdiagramm der GPIO-Pins beziehen. Öffne dazu das Terminal auf deinem Pi und tippe

Pinbelegung

Im Folgenden sind die Verbindungen, die ich hergestellt habe. Möglicherweise haben Sie eine andere Konfiguration, wenn Sie eine andere Sender-/Empfänger-Hardware gekauft haben, als ich in der Einführung angegeben habe. Wenn Sie sich entscheiden, andere Pin-Nummern als die unten angegebenen zu wählen, haben Sie keine Angst! Wenn Sie den Quellcode herunterladen, ändern Sie einfach die PIN-Nummern nach Bedarf in der Datei RxTx.py.

Empfänger (großer Chip):

  • GND - Beliebiger Erdungsstift
  • DATEN - Pin 11
  • DER - Nicht verbunden
  • +5V - Jeder vorgesehene +5V-Pin
  • ------
  • +5V - Jeder vorgesehene +5V-Pin
  • GND - Beliebiger Erdungsstift
  • GND - Nicht verbunden
  • ANT - Nicht verbunden

Hinweis: Sie können bei Bedarf eine Antenne anschließen, aber ich habe festgestellt, dass dies nicht erforderlich ist. Dieser kleine Chip war überraschend empfindlich und erkennt Signale bis zu einer Entfernung von mindestens 50 Fuß von seinem Sitzplatz und durch mindestens zwei Wände.

Sender:

  • P - Der 3.3V-Pin
  • DA - Stift 7
  • G - Jeder vorgesehene Erdungsstift
  • AN - nicht verbunden

Hinweis: Auch hier können Sie bei Bedarf eine Antenne an den Sender anschließen, aber ich habe festgestellt, dass dies nicht erforderlich ist. Die Reichweite ist mehr als ausreichend (50+ft).

Schritt 3: Hinzufügen des Codes

Dies ist der Teil, mit dem ich die meiste Zeit verbracht habe, als ich dieses Projekt entwickelt habe. Ich versuche, so viel wie möglich zu kommentieren, aber ich habe wahrscheinlich Lücken hinterlassen, die möglicherweise einer Erklärung bedürfen, wenn einer von Ihnen Zeit damit verbringt, es zu verstehen. Wenn Ihnen das passiert, hinterlassen Sie bitte einen Kommentar!

Die hier betroffenen Sprachen sind:

  • Python
  • CSS
  • Javascript
  • HTML
  • JQuery/Ajax

Das Python wird im Kolbenserver und in der

RxTx.py

Datei, die die Übertragung und den Empfang des Codes übernimmt. CSS wird verwendet, um den Stil der Webseite zu generieren. Wer will schon eine langweilige Website!? Javascript wird bei jeder Ereignisbehandlung verwendet (Knopf drücken usw.). HTML ist der Kernbaustein der Webseite. Schließlich wird JQuery/Ajax verwendet, um zwischen der Webseite und dem Python-Backend zu kommunizieren.

Wenn all diese Sprachen einschüchternd klingen, machen Sie sich keine Sorgen! Ich kannte nur Python bei diesem Projekt, das zufällig die Sprache war, die den geringsten Codierungsaufwand erforderte, stell dir vor … Es genügt zu sagen, nehmen Sie sich Zeit, um den Code durchzukämmen, wenn Sie sich dafür entscheiden. Wenn Sie nicht wollen, müssen Sie nicht!

Das Folgende ist die Verzeichnisstruktur, die ich für diese Webseite gewählt habe. Der an diesen Schritt angehängte ZIP-Ordner enthält den gesamten Quellcode in der folgenden Struktur.

Outlet Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> Webseite-- static----- favicon.ico----- style.css-- Templates----- index.html----- schedule.html-- app.py-- data.file

Sie können den Ordner Outlet Switch an einer beliebigen Stelle auf Ihrem Pi ablegen. Wenn Sie bereit sind, Ihren Webserver auszuführen, öffnen Sie das Terminal auf Ihrem Pi und

CD

(Verzeichnis wechseln) in das Webseitenverzeichnis. Geben Sie dann ein

python3 app.py

in das Terminal. Wenn keine Fehler aufgetreten sind, sollten Sie loslegen!

PS Bitte haben Sie Geduld, wenn Sie auf Fehler stoßen. Ich habe versucht, sie alle vor dem Hochladen zu zerquetschen.

Schritt 4: Probieren Sie es aus

Versuch es einmal!
Versuch es einmal!

Jetzt, wo Sie den Code ausführen, können Sie sich ein Gefühl für die Weboberfläche verschaffen. Die Steuerung des Systems ist sehr einfach:

  • Über die Weboberfläche können Sie beliebig viele Steckdosen hinzufügen.
  • Das Löschen ist so einfach wie das Klicken auf Bearbeiten, Auswählen der zu löschenden Verkaufsstellen und Klicken auf Löschen.

Das obige YouTube-Video zeigt, wie Sie Ihrer Liste tatsächlich eine neue Verkaufsstelle hinzufügen. Um zusammenzufassen, was es zeigt:

  • Geben Sie zuerst den Titel des Outlets in das Feld Titel ein
  • Klicken oder berühren Sie außerhalb des Felds Titel, damit das Programm überprüfen kann, ob der Titel noch nicht vorhanden ist. Sie können keine Titel mit demselben Namen haben
  • Nach der Validierung werden die Schaltflächen ON Code und OFF Code aktiviert.
  • Halten Sie die ON-Taste auf Ihrer mitgelieferten Fernbedienung gedrückt und klicken Sie schnell auf die ON-Code-Taste auf der Benutzeroberfläche. Halten Sie die Taste auf der Fernbedienung gedrückt, bis Ihr Binärcode das angrenzende Feld füllt.
  • Wiederholen Sie den vorherigen Schritt für den OFF-Code.
  • Klicken Sie auf OK, und jetzt können Sie diese Steckdose wechseln!

Wie in der Einleitung erwähnt, ist das Projekt für meine eigenen Zwecke nicht zu 100% vollständig. Die größte Komponente, die ich noch vervollständigen und implementieren muss, ist die Planungsfunktion. Ich plane, dem Benutzer zu ermöglichen, einen Zeitplan zu erstellen, der es ermöglicht, Steckdosen zu bestimmten Zeiten automatisch ein- und auszuschalten.

Schritt 5: Debugging und die RxTx.py-Datei

Debugging und die RxTx.py-Datei
Debugging und die RxTx.py-Datei
Debugging und die RxTx.py-Datei
Debugging und die RxTx.py-Datei
Debugging und die RxTx.py-Datei
Debugging und die RxTx.py-Datei
Debugging und die RxTx.py-Datei
Debugging und die RxTx.py-Datei

Die einzige bekannte Einschränkung des Systems besteht darin, dass die Möglichkeit einer Inkompatibilität zwischen den Verkaufsstellen verschiedener Anbieter besteht. Die Ein- und Aus-Code-Nachrichten sind für mein System 25 Bit, und wenn ein System eine andere Nachrichtenlänge hat, ist es nicht sofort mit diesem Projekt kompatibel. Wenn Sie die Anweisungen genau befolgt haben und immer noch Probleme damit haben, das Problem zu beheben, ist Folgendes der beste Weg, um das Problem zu beheben.

  • Stellen Sie sicher, dass Matplotlib auf Ihrem Pi installiert ist. Sie können dies tun, indem Sie Folgendes in das Terminal des Pi eingeben:

    • python3

    • Matplotlib importieren

    • Wenn Sie einen Fehler erhalten, müssen Sie matplotlib installieren.
    • Beenden Sie die Python-Shell mit

      Ausfahrt()

  • Um matplotlib zu installieren, geben Sie ein

    sudo pip3 installiere matplotlib

  • ins Terminal
  • Laden Sie die angehängte Datei test.py herunter und platzieren Sie sie neben der Datei RxTx.py auf Ihrem Pi
  • Öffnen Sie das Python-Terminal und ändern Sie das Verzeichnis in den Comm-Ordner.
  • Typ

    python3 test.py

  • Wenn "**Aufnahme gestartet**" angezeigt wird, halten Sie die EIN- oder AUS-Taste auf Ihrer Fernbedienung gedrückt, bis die Aufnahme endet.
  • Das Programm lädt eine Matplotlib-Figur, die der obigen ähnlich sieht. Zoomen Sie hinein, bis Sie das sich wiederholende Signal sehen, wie auf den Fotos oben gezeigt.
  • Zählen Sie die gesamte logische 1 und logische 0 für jede Nachricht, wobei eine Nachricht eine Iteration des oben gezeigten sich wiederholenden Signals ist. Wenn die Gesamtzahl 25 beträgt, ist die Datei RxTx.py wahrscheinlich nicht schuld. Wenn Sie auf etwas anderes als 25 stoßen, stellen Sie sicher, dass Sie unten einen Kommentar abgeben, und ich werde die RxTx.py-Datei umrüsten, damit sie offener ist (oder probieren Sie es aus).

Was ist, wenn ich kein sich wiederholendes Signal sehe?

Wenn Sie kein sich wiederholendes Signal sehen, ist eines von zwei Dingen falsch. Überprüfen Sie zuerst, ob alle Ihre Überbrückungskabelverbindungen richtig hergestellt sind. Wenn alles gut aussieht, haben Sie möglicherweise einen schlechten Empfänger. Hast du das von mir vorgeschlagene gekauft? Als ich meinen ersten Empfängerchip kaufte, war er sehr laut. So laut, dass ich kein klares Signal bekommen konnte. Ich habe dann diesen Chip zurückgegeben und den von mir verlinkten abgeholt, und er hätte nicht besser funktionieren können.

Schritt 6: Viel Spaß

Sie wissen, dass Sie die Möglichkeit haben, Steckdosen von Ihrem Telefon, Tablet, Computer oder anderen internetfähigen Gerät aus ein- und auszuschalten! Lass mich in den Kommentaren wissen, was du denkst!

Empfohlen: