Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

8 Schritt:Schritt 1: Installieren Arduino IDE und laden Sie das Bootstrap-Skizze auf das Blei-Scout. Schritt 2: Konfigurieren wifi Einstellungen Ihren Vorsprung Scout Schritt 3: Fügen Sie zusätzliche Scouts durch Pinoccio HQ Schritt 4: Generieren Fluss Events Schritt 5: Formatieren Sie die HQ Benutzerdefinierte Berichte Schritt 6: einen Strom zum Speichern Ihrer Daten an data.sparkfun.com Set Schritt 7: Führen Sie das Python von Pinoccio sync Strom ziehen und legen Sie sie in die Sparkfun Strom. Schritt 8: Teil 3 Zusammenfassung, nächste Schritte.

Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

Bei diesem Projekt arbeitete ich zusammen mit Will Buchanan - Teil 1 und 2 -, ein Home-Automation-System, das den Wasserverbrauch Spuren über Vorrichtungen in der Wohnung, (Waschbecken, Dusche, WC etc.) erstellen. Mit visuellen Warteschlangen (einschließlich Lichtfarbe, Dauer und Intensität) bei jedem Gerät das System den Benutzer, wie viel Wasser sie verwenden, in Echtzeit zu informieren. Darüber hinaus wollten wir die Nutzungsdaten in die Cloud, wo die Daten konnten analysiert und als "Hausnutzung" Dashboard visualisiert senden.
Wills Instructables (Teil 1 und 2) decken die Arduino-Code und Sensorschaltkreis-Design für die piezoelektrische Strömungssensor (an den Befestigungen verwendet werden), und der Hall-Effekt-Sensor (an der Hauptzähler verwendet werden).
Wir verbinden die Messwerte von all dieser Sensoren zu einem zusammenhängenden Bild von Wasser über die Heimat zu schaffen.
Diese konzentriert sich auf Instructable

    die Art und Weise haben wir Pinocc.io Module, um Daten über "Scouts" zu teilen (Netz angeschlossenen Module), die Art, wie wir in die Cloud verbunden durch die "Pfadfinder-Führer" (wifi Schirm), und die Art, wie die Daten in unserem persistenten Daten haben wir Shop (data.sparkfun.com) zur weiteren Analyse

Du brauchst
1) Pinocc.io Starter Kit. https://pinocc.io/shop/detail/1007/-/starter-kit
2) Python installiert lokal (mit Anfragen Bibliothek installiert)
3) Arduino IDE (Version 1.57)
Warum Mesh Networking?
Warum nicht einfach XBee Series 1s und eine WiFi-Schild? Will und ich wählte ein Maschennetz aus den folgenden Gründen:
    Aufgrund der begrenzten Reichweite der einzelnen Geräte, gefiel uns die Tatsache, dass Netz kann verwendet werden, um Nachrichten zwischen den Knoten, die, allein weiterzuleiten, zu weit auseinander, um zu kommunizieren. In einem großen Haus, ist diese Art der Funktion wichtig. Als wir uns weiterhin auf diesem Prototyp zu bauen, wollen wir die Möglichkeit, die Produkte haben miteinander zu reden, manchmal in seltsamen Kombinationen. Mit der Fähigkeit, spezifische Nachricht Produkte auf Basis von Use-Case ist ein wichtiges Merkmal Zukunft für uns.

Warum Pinocc.io?
Einfach. Die Plattform kümmert sich um alle die Komplexität der Mesh Networking und WLAN Bridging für uns, so dass wir schnell arbeiten und fühlen sich smart! (Gosh, das klingt wie eine bezahlte Anzeige :-)

Schritt 1: Installieren Arduino IDE und laden Sie das Bootstrap-Skizze auf das Blei-Scout.

  1. Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Der erste Schritt besteht darin, die erforderliche Software zu installieren.
    Wie pro Pinocc.io Anweisungen auf http: //support.pinocc.io/hc/en-us/articles/2029587 ...
      Laden Sie die neueste Arduino IDE (1.5.7 oder höher). Laden Sie Pinoccio die Firmware-Dateien (2,3MB .zip) und verschieben Sie die Dateien in den Bibliotheken und Hardware-Ordner in Ihrem Arduino Sketchbuch eigenen Bibliotheken und Hardware-Ordner. Starten Sie die Arduino IDE Stellen Sie sicher, dass "Pinoccio Scout" unter Extras ausgewählt> Foren Stellen Sie sicher, "/dev/tty.usbmodem#" ​​unter Extras ausgewählt> Port-Stecker an der Spitze Scout (das Modul mit der WiFi-Abschirmung) in den USB- Port und schalten Sie ihn ein. Laden Sie die Datei auf Bootstrap Skizze Datei → Beispiele → Pinoccio → Bootstrap. Sobald die Skizze hochgeladen wurde, klicken Sie auf die Serien Monitor-Symbol in der oberen rechten Ecke des Fensters Skizze: "Autoscroll" (überprüft werden), "Newline" (oder wirklich jede andere Option als "No Zeilenende") Stellen Sie die Baudrate auf 115200 Baud. <- Vergessen Sie nicht, diesen Schritt, oder Sie werden Unsinn in der Serial Monitor zu sehen!

    Hinweis: Diese Instructable wurde mit Mac OS X. Für Windows-Benutzer abgeschlossen ist, müssen Sie, um diese zu vervollständigen Schritte .
    Wenn Sie irgendwelche Probleme haben, können Sie diese Anweisungen auch gefunden werden hier .

Schritt 2: Konfigurieren wifi Einstellungen Ihren Vorsprung Scout

  1. Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Um unser Netzwerk im Gespräch mit der Cloud zu erhalten, mussten wir unseren Vorsprung Scout konfigurieren, um auf die WiFi-Netzwerk sprechen.
    In der seriellen Monitoransicht, mit der Scout verbunden und die Bootstrap hochgeladen und ausgeführt wird, geben Sie die folgenden Befehle ScoutScript (ref: https://docs.pinocc.io/scoutcommands.html)
      wifi.config ("[Dein]", "yournetworkpassword"] ");. // wenn Ihr Netzwerk nimmt kein Passwort, geben Sie einfach leere Anführungszeichen nach dem Passwort (. Die Referenz ist derzeit nicht mehr aktuell Der Parameter Passwort ist nicht optional) . wifi.dhcp wifi.reassociate

    Geben Sie der Pfadfinderleiter einen Moment, um zu verbinden und geben Sie dann "wifi.status". Sie sollten einen Status Connected sehen. Wenn Sie scheitern, zu beheben.
    Sobald die Verbindung wifi.status zeigt, Glückwünsche, ist Ihr Netzwerk angeschlossen!
    Ein wichtiger Hinweis auf Pinoccio und Wifi: Wir haben festgestellt, dass bei der Prüfung Pinoccio können WiFi-Verbindungen, die mehr als nur die Standard-Netzwerk / Passwort-Paar erfordern nicht verarbeiten. Zum Beispiel, ein Starbucks, die ein Kontrollkästchen Web-Zulassung erfordert, wird nicht mit dem Scout Blei zu arbeiten.
    Darüber hinaus hat der Scout Blei anscheinend nicht durch einen tethered iPhone zu verbinden. (Android bleibt ungetestet)

Schritt 3: Fügen Sie zusätzliche Scouts durch Pinoccio HQ

  1. Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Sobald Ihre Führung scout angeschlossen ist, Check-in im HQ, um sicherzustellen, dass seine reagiert.
    https://hq.pinocc.io/
    Beachten Sie, dass Sie auf und abseits der LED-Lichter einschalten können, ändern Sie die Farben, weisen Stifte und überprüfen Sie den Ladezustand der Batterie.
    Beachten Sie auch, dass es ein Texteingabefeld. Dies ermöglicht Ihnen, laden ScoutScript Befehle direkt auf den Scout. Geben Sie "print millis ()" in das Feld und drücken Sie Enter. Eine Reihe (mit Angabe der Anzahl der Millisekunden seit das Modul wurde zuletzt eingeschaltet sollte angezeigt werden).
    Sie sind jetzt bereit zu verwenden zu beginnen ScoutScript. ScoutScript ist ein bitlash-basierte Skriptsprache, die auf der Oberseite des kompilierten Codes, die die Hardware- und Netzwerkstapel zusammenhält sitzt. https://docs.pinocc.io/scoutcommands.htm
    Sobald Sie sichergestellt haben, dass ScoutScript zeitigt gute Werte, seine Zeit zusätzliche Scouts hinzuzufügen.
    Ein wenig über die Bildsprache der Pinocc.io.
    Scouts sind in "Troops" gebildet. Für die Zwecke der unser Projekt brauchen wir nur eine Truppe, die einem Haushalt. Mitglieder einer Truppe kommunizieren miteinander unter Verwendung eines leichten Mesh Networking-Bibliothek. Jede Truppe braucht einen "Lead Scout" mit einem "Wifi Rucksack" (wifi Schirm) mit HQ zu kommunizieren.
    Im linken Menü des Web-basierten Konsole hq, klicken Sie "In scout" und folgen Sie Anweisungen. Wenn Sie aufgefordert Update zu installieren, zu vereinbaren. Dies wird die Firmware Ihres scout aktualisieren. In unserem Projekt riefen wir ein Scout "sink" eine andere scout "main" (Hauptzähler angeben) und einem anderen scout "Pfadfinderleiter" (die mit dem Netzwerk kommuniziert.)
    Fügen Sie einen "Sink" Scout und eine "Hauptzähler" Scout für die Zwecke dieses Projekts. Wenn Sie nur die Starter-Kit (ein Scout Blei und einen Scout), dann zögern Sie nicht der Scout Führer sowie zu machen den Hauptzähler-Modul.

Schritt 4: Generieren Fluss Events


  1. Wir haben das System so, dass jeder Scout für "flow Ereignisse" von seinem Sensor hören und dann kommunizieren diese Ereignisse zu Pinoccio HQ. Der Plan war dann für die Berichte über die API zu hören und stellen die Daten in irgendeiner Form von Online-Speicher.
    Hinweis: Die spezifischen Arduino Code und Sensorschaltung, die Strömung entweder in der Halterung (Piezo) erfasst, oder die Hauptzähler (Hall-Effekt) wird in Teil 4 abgedeckt Diese Instructable deckt lediglich die grundlegenden Anwendungsfall: Kommunikation Fluss Ereignisse Pinocc.io HQ , wo wir es für unsere schändlichen Cloud-basierte Zwecke zu greifen.
    Um einen Fluss Ereignis in die Cloud wir die Funktion ScoutScript "hq.report" verwendet zu kommunizieren. ( verlinkten )
    Um den Strom der Ereignisse, sich an HQ gesendet wurden, verwenden wir die Pinoccio API . Die API ist eigentlich ziemlich cool. Mit dem Web (JavaScript etc.) können Sie bestimmte Befehle an bestimmte Scouts, bestimmte Pins auf spezifische Späher schicken. Ebenso können Sie bestimmte Stifteingaben nutzen könnten als Auslöser für einige webbasierte Aktivität. Dies ist extrem leistungsfähig und wir haben nur die Oberfläche dessen, was dies ermöglicht kratzen.
    Die API-Funktion verwenden wir aufgerufen sync. ( Referenz. )
    https://api.pinocc.io/v1/sync?token= [Ihre Sicherheitstoken]
    Um Ihren API-Token zu erhalten, führen Sie die folgenden Schritte.
    In der Befehlszeile den folgenden Befehl ein: curl -X POST -v --data '{"E-Mail": "youremail", "password": "IhrKennwort"}' https://api.pinocc.io/v1/login Kopieren Sie die Antwort. (Verlieren Sie nicht diese): {"data": {"Token": "man6on560fiio2289llqjo5sb1", "Konto": 27}}
    Öffnen Sie die Sync-Stream-API-Aufruf in Ihrem Browser
    Um den Sync-Stream in Ihrem Browser anzuzeigen, geben Sie einfach die Sync-Dienst-URL:
    https://api.pinocc.io/v1/sync?token=
    Generieren Sie ein HQ benutzerdefinierten Bericht aus jeder Scout und sicherzustellen, dass es in dem Sync-Stream angezeigt.
    In HQ Befehlsfeld mit "Sink" scout ausgewählt oder in der seriellen Konsole (mit einem Bootstrap-fähigen Skizze hochgeladen, um Ihre Piezo sinken Modul), geben Sie ein:
    hq.report ("Leuchte-event", "Hallo Welt") // drücken Sie die Eingabetaste
    Jetzt, in der API (in einem Browser geöffnet Seite oben), zeigen Sie die Sync-Stream und suchen Sie die "Leuchte-Ereignis" benutzerdefinierten Bericht. Stellen Sie sicher, dass dies zeigt sich im Futter.
    Jetzt wechseln Sie zu der "Hauptzähler" scout, wenn Sie eines eingerichtet haben. Für die Zwecke dieser Instructable könnte diese andere Pinoccio Scout sein, der Truppe zugegeben. Geben Sie eine hq.report in das Befehlsfeld HQ oder die Serial Monitor (wie oben).
    hq.report ("gallons_at_main", "Warum Hallo Again!")
    Überprüfen Sie Ihre API-Sync-Stream erneut. Nicht zu verpassen benutzerdefinierte Ereignis erscheint in Ihrem Feed jetzt, wie gut.
    Wenn Sie überprüft haben, dass die HQ Berichte der Kundschafter machen es bis zu HQ, fahren Sie mit dem nächsten Schritt.
    Wenn die Berichte nicht machen es in Ihrem Sync-Stream, seine wahrscheinlich, dass Ihre Liefer Scout wurde getrennt.

Schritt 5: Formatieren Sie die HQ Benutzerdefinierte Berichte


  1. Weil wir auf tatsächliche Durchflussereignisse (fixture-Veranstaltungen und Gallonen an Haupt) erfassen wollten, kamen wir auf den folgenden Formaten.
    Für jede Befestigung (Waschbecken, WC usw.) die benutzerdefinierten Bericht sieht folgendermaßen aus:
    hq.report ("Leuchte-event", "durationsadjustiert [Millisekunden Fluss dauerte] | avg_flow_rate- [Flussrate in Gallonen pro Minute an den Sensor erfasst]")
    Wir wesentliche overstuffed den Ereigniswert mit zwei Werten, die von dem Rohr begrenzt '|' Zeichen. Wir haben diesen Ansatz, weil, mit Latenzzeit, mit Dutzenden von Veranstaltungen Brennen pro Minute, um sicherzustellen, dass die Durchflussdauer und Durchflussrate blieb in einem einzigen Bericht zusammengebunden wollten wir.
    So könnte ein Probe aussehen.
    hq.report ("Leuchte-event", "Dauer-12336 | avg_flow_rate-.56")
    Für den Hauptzähler-Sensor (der eine Hall-Effekt-Sensor verwendet - siehe Wills Instructable), sieht die benutzerdefinierten Bericht wie folgt aus:
    hq.report ("gallons_at_main", "[verwendet Gallonen]")
    So eine Probe könnte so aussehen:
    hq.report ("gallons_at_main", "0.76")
    Wenn Sie die Anweisungen auf das Schreiben verfolgt haben, wird jeder Sensor Skizze in regelmäßigen Abständen zu erstellen, diese HQ Berichte, auf diese Weise formatiert. Für die Zwecke dieser Instructable wir manuell diese Berichte zu erzeugen, um eine einfache Prüfung zu ermöglichen.
    Resümierte:
    Geben Sie einfach
    hq.report ("Leuchte-event", "Dauer-12336 | avg_flow_rate-.56")
    und
    hq.report ("gallons_at_main", "0.76")
    und betrachten Sie sie auf Ihrem Sync-Stream angezeigt.

Schritt 6: einen Strom zum Speichern Ihrer Daten an data.sparkfun.com Set

  1. Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Save The World One Tropfen auf einmal, Teil 3: Netzwerkbetrieb des Sensors

    Für die Zwecke dieses Projekts haben wir uns zu bedienen data.sparkfun.com unsere Sensor-Daten zu speichern. Wir haben uns für diesen Standort aufgrund der Benutzerfreundlichkeit der API, die Fähigkeit, als CSV-Datei herunterladen, und der Open-Source-Geist Sparkfun. Yay Sparkfun!
    So richten Sie ein Repository, um Ihre Daten zu speichern, erstellen Sie einen neuen "stream" auf der data.sparkfun.com Website. Verwenden Sie die folgenden Spaltennamen.
    average_flow_rate, Dauer, Gallonen, scout_id, troop_id und geben Sie den Rest der Informationen, wie Sie möchten.
    Behalten Sie den Überblick über alle Tasten, die Sie verwenden. Sie werden sich als nützlich.
    Wenn Ihr Strom eingerichtet ist, testen Sie es, indem Sie den folgenden URL im Browser:
    http://data.sparkfun.com/input/[YOUR PUBLIC_KEY]? private_key = [IHRE private_key] & Gallone = 0,56 & avg_flow_rate = 0 & duration = 3067 & scout_id = 2 & troop_id = 4
    Dies sollte eine Zeile in Ihrem neuen Strom einzufügen. Sie können jederzeit überprüfen Sie den Inhalt Ihrer Strom hier:
    https://data.sparkfun.com/streams/[Public Key]
    Congrats!
    So, jetzt haben Sie eine Quellenstrom (Pinoccio sync-Stream) und einen Zielstrom (data.sparkfun.com). Der Trick ist, die Auswahldaten von einem zum anderen zu gelangen. Dafür haben wir Python. (Zum nächsten Schritt)
    Hinweis: wir wählten, um die piezo (Waschbecken und Armaturen) haben zu schreiben ausschließlich auf die Fließgeschwindigkeit und Dauer Spalten, und die Hall-Effekt-Sensor (Hauptzähler) schreiben sich ausschließlich auf die Gallonen Spalte. Alle nicht ausschließliche Spalten einfach zu Null gesetzt.
    Wir waren in der Lage, visuell Tara das System testen, indem die Strömung an der Haupt - wie auf data.sparkfun.com berichtet - mit der Strömung an der Halterung - wie auch sparkfun berichtet - und erhielt 99% Genauigkeit bei der Korrelation der beiden!

Schritt 7: Führen Sie das Python von Pinoccio sync Strom ziehen und legen Sie sie in die Sparkfun Strom.


  1. Normalerweise man möchte, ein ETL in einem Ort, wo es ständig laufen laufen kann (Extract, Transform, Load) Skript wie folgt. Für die Zwecke dieses Projektes führten wir es auf unseren eigenen Computern mit Python und die Anträge Paket.
    Dieses Skript zieht aus diesem Strom
    https://api.pinocc.io/v1/sync?token= [Ihre Sicherheitstoken]
    Und drückt auf
    http://data.sparkfun.com/input/[YOUR PUBLIC_KEY]? private_key = [IHRE private_key] & Gallone = 0,56 & avg_flow_rate = 0 & duration = 3067 & scout_id = 2 & troop_id = 4
    Er erwartet, dass das Format der Quellstrom hq Berichte genau das, die durch die folgenden Befehle generiert:
    hq.report ("Leuchte-event", "Dauer-12336 | avg_flow_rate-.56")
    hq.report ("gallons_at_main", "0.76")
    Um das Skript ausführen, laden Sie die Datei.
      Entfernen Sie die .txt als Erweiterung. Die Verlängerung sollte ".py" Öffnen Sie das Terminal und navigieren Sie zum Skript. Im Terminal-Fenster geben Sie "python [Dateiname] .py" Die Ausgabe sollte aktiv bleiben und zeigt neue Ereignisse, wie sie entstehen. Um zu testen, geben Sie ein paar HQ Befehle.

    Wenn alles geklappt hat, die Eingabe eines manuellen hq Bericht soll zeigen, bis Sie in folgenden Orten:
      Im Sync-Stream (https://api.pinocc.io/v1/sync?token=[pinoccio token] In der Python-Ausgang des data.sparkfun.com Strom. (Https://data.sparkfun.com/streams / [Public Key])

    Congrats. Sie haben nun Ereignisse immer an jedem Scout erzeugt wird, und dass es den ganzen Weg auf die Sparkfun Repository.

Schritt 8: Teil 3 Zusammenfassung, nächste Schritte.


  1. Was wir durch Tests festgestellt ist, dass wir "Tara-Test" die Strömung an den Befestigungen gegen die an der Hauptströmung erfasst. Wir haben dann kalibriert beide von denen gegen eine tatsächliche Befüllung eines Gallone Krug. Wir haben festgestellt, dass unsere Flusserkennung funktionierte sehr gut und führte zu 99% Genauigkeit vor Tara und 100% Genauigkeit nach.
    Da wir nun immer Daten in Sparkfun, ist der nächste Schritt, um die Daten zu verwenden. Visualisierungen, Benchmarking und Dashboards wäre eine nächste offensichtliche Schritt sein. Wir erwägen eine Streaming-Visualisierung wie Plotly Streaming-API.
    Wenn Sie sich zu engagieren möchten, informieren Sie uns bitte! Wir würden Ihre Hilfe nehmen diese auf die nächste Stufe zu lieben.
    Next Step Part 4. Schreiben und laden Sie Ihre Arduino-Code.