Inhaltsverzeichnis:

Ereignisbenachrichtigungen in Echtzeit mit NodeMCU (Arduino), Google Firebase und Laravel - Gunook
Ereignisbenachrichtigungen in Echtzeit mit NodeMCU (Arduino), Google Firebase und Laravel - Gunook

Video: Ereignisbenachrichtigungen in Echtzeit mit NodeMCU (Arduino), Google Firebase und Laravel - Gunook

Video: Ereignisbenachrichtigungen in Echtzeit mit NodeMCU (Arduino), Google Firebase und Laravel - Gunook
Video: QNAP QVR Face | Intelligente Gesichtserkennungslösung (DE) 2024, Juni
Anonim
Image
Image
Ereignisbenachrichtigungen in Echtzeit mit NodeMCU (Arduino), Google Firebase und Laravel
Ereignisbenachrichtigungen in Echtzeit mit NodeMCU (Arduino), Google Firebase und Laravel

Wollten Sie schon immer benachrichtigt werden, wenn auf Ihrer Website eine Aktion durchgeführt wird, aber E-Mail nicht die richtige Wahl ist? Möchten Sie bei jedem Verkauf ein Geräusch oder eine Glocke hören? Oder brauchen Sie wegen eines Notfalls zu Hause Ihre sofortige Aufmerksamkeit?

Dieses Gerät kann Sie in Echtzeit über alles informieren, was Sie möchten.

Schritt 1: Verdrahten Sie die Schaltung

Verdrahten Sie die Schaltung
Verdrahten Sie die Schaltung
Verdrahten Sie die Schaltung
Verdrahten Sie die Schaltung

Das Gerät, das ich gebaut habe, besteht aus einer NodeMCU-Platine mit einem Summer, der mich über Verkäufe auf einer Website informiert. Der Mikrocontroller wird mit der Arduino-Software programmiert und der auslösende Teil kann eine beliebige Web-, iOS- oder Android-Anwendung sein. Ich habe zwei einfache Webanwendungen erstellt, eine in Laravel und die andere in einfachem HTML und JavaScript für das Beispiel.

Da die NodeMCU-Platine sicher bis zu einem Strom von etwa 12 mA an den Pins betrieben werden kann, ist der Summer über einen NPN-Transistor angeschlossen. Ich habe 2N2222 verwendet, weil viele davon herumliegen, aber ich bin mir sicher, dass das Prinzip bei jedem anderen NPN-Transistor gleich sein wird.

Um die Schaltung zu verdrahten, verbinden Sie den Kollektor des Transistors mit dem Vin-Pin auf der Platine. Der Summer arbeitet mit 5 V und da wir das Gerät über USB mit Strom versorgen, gibt uns dieser Pin die Spannung vor dem 3,3 V-Regler auf der Platine.

Als nächstes verbinden Sie die positive Seite des Summers am Emitter des Transistors und den negativen Pin des Summers mit einem der Massestifte auf der Platine. Ich habe Pin 2 verwendet, aber Sie können ihn auch an Pins 9, 25 oder 29 anschließen.

Die Basis des Transistors ist mit Pin D2 verbunden, der mit GPIO 4 in der Arduino-Software korreliert. Bei diesem Setup fungiert der Transistor effektiv als Schalter, der den Summer bei jedem Ereignis einschaltet. Anstelle des Summers können Sie auf die gleiche Weise ein Relais anschließen, um jedes Netzgerät wie Glühbirnen, Maschinen oder eine Sirene ansteuern zu können, wenn Sie ein Alarmgerät herstellen.

Schritt 2: Bereiten Sie die Web-Apps vor

Bereiten Sie die Web-Apps vor
Bereiten Sie die Web-Apps vor
Bereiten Sie die Web-Apps vor
Bereiten Sie die Web-Apps vor
Bereiten Sie die Web-Apps vor
Bereiten Sie die Web-Apps vor

Für den Trigger- und Echtzeit-Teil des Geräts verwenden wir die Firebase Realtime Database von Google. Dies ist eine wunderbare NoSQL-Cloud-Datenbank von Google, die eine Echtzeit-Datensynchronisierung zwischen jeder der verwendeten Plattformen bietet.

Erstellen Sie zunächst das Projekt mit einem Namen Ihrer Wahl. Erstellen Sie nach der Erstellung einen einzelnen Knoten namens „count“und initiieren Sie ihn mit dem Wert, wenn 0. Dies ist unsere Startzählung, der wir in Zukunft folgen möchten.

Die Laravel-Anwendung verwendet das Paket „firebase-php“von Kreait und ist unten verlinkt. Installieren Sie das Paket, indem Sie „composer require kreait/firebase-php“ausführen. Sobald die Installation abgeschlossen ist, müssen wir den Controller erstellen, auf dem die Aktion ausgeführt wird. Ich habe die Methode "update" genannt und sie in den Routen einer POST-Aktion verbunden.

Zum Abrufen der Firebase-Instanz benötigen Sie eine JSON-Datei, die Sie von Ihrer Firebase-Konsole herunterladen müssen. Legen Sie diese Datei im Stammverzeichnis Ihres Laravel-Projekts ab und nennen Sie sie firebase.json. Beim Abrufen der Firebase-Instanz müssen wir den Pfad zu dieser Datei mithilfe der withCredentials-Methode angeben.

Nachdem wir die Firebase-Instanz erhalten haben, müssen wir den Verweis auf die Datenbank und den zuvor erstellten Knoten abrufen. Bei jeder Aktion erhalten wir den aktuellen Wert des Knotens, erhöhen ihn um eins und speichern ihn zurück in der Datenbank. Dies wird unsere Ereignisse verfolgen, über die wir benachrichtigen müssen.

Das gleiche kann mit einfachem HTML und JavaScript erreicht werden, indem die mitgelieferte Firebase-Bibliothek verwendet wird. Damit müssen wir zunächst das Config-Array mit den entsprechenden Einstellungen aus der Firebase-Konsole versehen und die App initialisieren. Nach der Initialisierung erhalten wir eine Referenz auf den Knoten, in dem wir die Ereigniszähler speichern, und fügen einen Listener hinzu, um jede Wertänderung abzurufen.

Außerdem haben wir, anstatt das Formular wie im Laravel-Beispiel zu senden, jetzt eine JavaScript-Funktion, die beim Klicken auf die Schaltfläche aufgerufen wird, die Zählung aktualisiert und den aktualisierten Wert zurück in die Datenbank schreibt.

Schritt 3: Programmieren Sie das NodeMCU-Board

Programmieren Sie das NodeMCU-Board
Programmieren Sie das NodeMCU-Board
Programmieren Sie das NodeMCU-Board
Programmieren Sie das NodeMCU-Board
Programmieren Sie das NodeMCU-Board
Programmieren Sie das NodeMCU-Board

Um die NodeMCU zu programmieren, habe ich die Arduino-Software verwendet und nachdem ich das Board darauf installiert habe, habe ich die richtige Version und den richtigen Port ausgewählt, damit ich die Software hochladen kann. Meins ist Version 1.0, also überprüfen Sie es mit Ihrem Board, bevor Sie fortfahren.

Der erste Teil des Arduino-Codes richtet alle notwendigen Definitionen ein, die Sie auf Ihrem Gerät anpassen müssen. Die erste solche Einstellung ist die ssid des WiFi und sein Passwort, dann müssen wir die Firebase-URL und das Firebase-DB-Geheimnis einrichten. Leider ist dies nicht die empfohlene Verbindung zur Datenbank, aber derzeit ist dies die einzige Möglichkeit, die die Bibliothek unterstützt. Sie finden dieses Geheimnis in der Firebase-Konsole im Menü Projekteinstellungen, Dienstkonten.

Die nächste Definition ist der Pfad, den wir nach Updates suchen, und die Geräte-ID. Die Geräte-ID wird benötigt. Falls wir also mehrere Geräte haben, um über dieselben Ereignisse zu benachrichtigen, müssen wir wissen, welches Gerät uns über das Ereignis benachrichtigt hat, und dies protokollieren. Als letztes müssen wir den Pin einrichten, an dem wir den Summer angeschlossen haben, und dies ist in unserem Fall D2.

Die Setup-Funktion definiert den eingebauten LED-Pin und die D2-Pins als Ausgänge, startet die serielle Kommunikation, um zu wissen, was vor sich geht, und verbindet sich mit dem angegebenen WiFi-Netzwerk. Sobald die Verbindung hergestellt ist, startet es die Kommunikation mit Firebase und erhält den letzten Wert, für den wir uns gemeldet haben. Es beginnt dann, auf Änderungen am angegebenen Pfad zu warten.

In der Hauptschleife gibt es einen Aufruf der Blinkfunktion, die die eingebaute LED für 500 Millisekunden blinkt, damit wir erkennen können, dass das Gerät aktiv ist. Wenn eine Änderung erkannt wird und es verfügbare Daten gibt, die wir mit der verfügbaren Funktion lesen können, wird der neue Wert des Knotens gelesen, die Differenz berechnet, da es zwischenzeitlich mehrere Ereignisse gegeben haben könnte, und jedes Mal ertönt ein Piepton des Unterschieds.

Wenn beispielsweise die Differenz zwischen dem zuletzt gemeldeten Wert und dem neuen Wert 4 beträgt, werden 4 Pieptöne ausgegeben, um Sie darüber zu informieren, dass 4 neue Käufe getätigt wurden. Die Beep-Funktion verwendet die eingebaute Tonfunktion, um eine bestimmte Frequenz über den Summer für eine festgelegte Zeitdauer abzuspielen.

Nachdem die Pieptöne erzeugt wurden, wird der neue Wert für das angegebene Gerät aktualisiert und das Streaming erneut gestartet. Derzeit gibt es ein offenes Problem in der arduino Firebase-Bibliothek, dass das Streaming nicht automatisch fortgesetzt wird, nachdem wir einen Wert manuell gespeichert haben, sodass wir es neu starten müssen.

Schritt 4: Genießen Sie Ihr Gerät

Genießen Sie Ihr Gerät!
Genießen Sie Ihr Gerät!

Der gesamte von mir verwendete Code ist auf meinem unten verlinkten GitHub-Konto verfügbar, zusammen mit dem Link zum Schema des Projekts.

Quellcode

Schaltplan

Der Code kann leicht für viele verschiedene Szenarien und Ereignisse übernommen werden und ich bin sicher, Sie werden viel Spaß damit haben.

Für mich war dies ein wirklich lustiger Build und ich konnte ziemlich viel dazu lernen und dafür bin ich wirklich glücklich. Ich hoffe, dass es Ihnen bei Ihrem Projekt helfen kann, aber wenn Sie bei einem Teil davon feststecken oder weitere Erläuterungen benötigen, lassen Sie es mich bitte in den Kommentaren wissen und ich werde mein Bestes tun, um Ihnen zu helfen.

Wenn Ihnen das Projekt gefallen hat, abonnieren Sie bitte meinen YouTube-Kanal:

Probieren Sie den Code

Empfohlen: