Home > Technologie > Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

0
Advertisement

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Seit dem Ende der Schule höre ich regelmäßig Freunde sagen: "Ich bin traurig, ich habe nicht mehr Elektronik / Programmierung / Web-dev-Klassen und wirklich lernen, wie es zu benutzen." In den 3 Jahren habe ich aus der Schule, habe ich das Gefühl, ich habe mehr praktische Design-Fähigkeiten in neuen Domains gelernt, als ich in allen 6 Jahren der College / Schule gelernt Schule. Nachdem ich darüber nachgedacht habe, warum einige meiner Freunde und ich unterschiedliche Erfahrungen gemacht haben, erkannte ich, dass der schwierigste Teil des Lernens neuer Domänen ist, herauszufinden, wo man überhaupt beginnen kann. Elektronik und Web-Entwicklung sind gesättigt mit einer Million verschiedenen Entwicklungs-Plattformen, jeweils mit ihren eigenen Programmiersprache, Programmierumgebung, Vor-und Nachteile, und seltsame Namen. Jeder Satz von Werkzeugen und Architekturen kommen mit eigenen Lernkurven und Abstraktionen. Idealerweise würde ich mit einer witzigen Analogie hier kommen, aber nichts kommt in den Sinn, so vielleicht später :)

Ich wollte ein Projekt machen, das jemand, der seine Domain-Exposition erweitern wollte, als Ausgangspunkt mit einer niedrigeren Zugangsgrenze nutzen könnte. Durch die Entwicklung eines Projekts, das mehrere der leistungsstarken Prototyping-Tools in verschiedenen Bereichen demonstriert und zeigt, wie sie miteinander verbunden werden können, um ein funktionierendes multidimensionales Projekt zu schaffen, ist die Idee, die Menschen dazu zu bringen, eigene Projekte zu entwickeln, die ihre jeweiligen Tiefen nutzen Interessen, indem sie sie mit Hilfe ausgewählter Tools aus ihrer Komfortzone in neue Domänen kontrollieren. Genug zu reden.

Hintergrundgeschichte

Ich mag tanzen. Viel. Der zweithäufigste Text, den ich bekomme ist: "tanzen Sie heute Abend?", Wahrscheinlich gleich nach "wann wirst du hierher kommen?" (Ich bin chronisch spät, aber Anerkennung ist einer der Schritte auf dem Weg zur Erholung). Es gibt eine sehr gut genutzt Webseite in San Francisco für wichtige und einfache Erfassen von Informationen, http://isthereagiantsgametoday.com/ . Extrem einfach, nur sagt Ihnen, ob es ein Spiel, so können Sie Ihre miserable pendeln dementsprechend. Inspiriert mich, einen Tanzknopf zu verursachen, der, wenn gedrückt aktualisiert, eine Web site www.istripdancing.com (ja ich erkenne, dass sein kann, ist, das Tanzen zu tanzen oder i, das Tanzen tanzt) und kommuniziert mit Freunden, dass Sie tanzen.

Um dies zu tun, benötigen Sie ein lokales Gerät, das erkennen kann, wenn eine Taste gedrückt wird, ein Modul, mit dem das Gerät die Informationen an das Internet kommunizieren kann, eine Website, die den Status der Schaltfläche anzeigen kann, und einen Web-Server, der vermitteln kann Zwischen dem Gerät, der Website und allen sozialen Plattformen.

Wollte Plattformen und Werkzeuge verwenden, die äußerst flexibel sind (können auf viele verschiedene Arten verwendet werden), gut dokumentiert (so dass sie auf Ihren Willen ist einfacher, wenn Sie in Bugs laufen), und abstrakt weg, wie viele der technischen Konzepte, die dazu beitragen Zu steilen Lernkurven wie möglich (aber erlauben Sie, in die Details zu tauchen, wenn Sie möchten).

Das letzte Diagramm zeigt eine Übersicht aller Komponenten, die für dieses System und die Schnittstellen zwischen diesen benötigt werden.

Schritt 1: Die elektrische

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Generell, wenn Projekte ohne starke Form-Fahren Anforderungen (es ist nur eine dumme Taste, so Gewicht Größe, wie es in Ihre Hand passt, wie die Menschen fühlen sich über die Form sind nicht entscheidend für es erfolgreich), bevor ich irgendwelche der Physische / Form-Design, wähle ich die elektrischen Komponenten und Architektur, die mein Leben am einfachsten zu machen. Es gibt eine Vielzahl von Optionen für Controller, Batterien, Anschlüsse und Verkabelung, aber Optionen sind in der Regel sehr unterschiedlich körperlich, so wählen Sie diejenigen, die Ihnen am besten gefällt, dann passen sie auf Ihre Box. Eine Übersicht über das endgültige System finden Sie im Skizzenschema.

Wahl des Mikrocontrollers Wireless-Modul

Arduino ist die offensichtliche Wahl für die meisten Menschen. Bietet eine elektrische Plattformen, die die meisten grundlegenden Funktionalität Hersteller benötigt, hat eine relativ intuitive Sprache, billig und hat TONS von Online-Dokumentation. Partnering es mit einem gut dokumentierten Wifi-Modul mit einer leistungsstarken Online-API wie die Electric Imp kommt wie eine natürliche Wahl (Spark Core ist eine weitere Option, die in Kürze veröffentlicht werden). Jedoch, was ich versuche, hier zu vollenden, ist so einfach, dass, anstatt, das Arduino zu verwenden, um alle Logik zu tun und den Impuls ausschließlich als Kommunikationskanal zu verwenden, entschied ich mich, den Bordprozessor des Imps auszunutzen (das wenige Leute realisieren können) Viele Dinge, die der Arduino tun kann), um die Notwendigkeit eines Arduino aus dem System zu eliminieren. Sie könnten genauso leicht beide zusammen verwenden (was für Anfänger einfacher sein könnte). Der Vorteil des Überspringens der Arduino ist weniger Teile, längere Akkulaufzeit, niedrigere Kosten. Der Hauptnachteil ist, dass der Impuls Eichhörnchen verwendet, eine Sprache, die einen etwas anderen Fluss und eine andere Syntax aus dem Arduino verwendet und möglicherweise schwerer zu lernen und etwas weniger nützlich ist (basierend auf der Frequenz, die Sie verwenden könnten).

Die Strategie:

- Wir sind entschieden, den elektrischen Impuls zu benutzen, der bei 3.3V läuft und in der Größenordnung von 5mA im Schlafmodus verbrauchen kann. LiPo - Akkus in Vielfachen von 3,7 V nominal kommen, und ich zufällig einige haben kleine, leichte 2000 mAh LiPo - Akkus von SparkFun herumliegen würde perfekt funktionieren, dauerhafte etwa 16ish Tage. Wenn Sie sich jemals für eine Quelle für billige, zuverlässige LiPo - Akkus suchen, gehen Sie zu www.all-battery.com. Ich liebe sie.

- Als nächstes müssen wir sicherstellen, dass der Impuls unsere LEDs ansteuern kann, die die Taste beleuchten. Ich verwende die gemeinsame Kathode RGB aus Sparkfun diffuse LED , die 20 mAs für jede Farbe zu ziehen braucht. Leider durch die beim Gehen Elektro Imp Dokumentation , fand ich die GPIOs des Imp nur Quelle / Senke bis zu 4 mAs, was bedeutet , dass wir nicht die LEDs direkt von der Imp mit Strom versorgen. Um dies zu erreichen, besteht eine gemeinsame Strategie darin, Transistoren zum Einschalten der LEDs zu verwenden. Eine große Erklärung der Transistoren finden Sie HIER. Effektiv nehmen die Transistoren einen kleineren Stromeingang vom Imp, um einen internen Schalter zu schließen, der erlaubt, dass die LEDs von der Batterie versorgt werden, so dass unser Impuls nicht versucht, mehr Strom zu liefern, als es kann. Der 2N2222 Transistor ist sehr häufig in Low-Power - Verstärker - Anwendungen. Weil wir eine gemeinsame Kathoden-LED verwenden (dh positiver Anschluss für jede LED geteilt wird) und jede LED benötigt eine andere angelegte Spannung zu arbeiten (und daher einen anderen Strombegrenzungswiderstand), setze ich alle Transistoren ein, um ihre Emitter zu teilen Mit Boden. Sehen Sie sich das Notebook Arbeit, wie die Größe der Widerstände für die Transistoren zu arbeiten.

- Nachdem alle Hilfs (nichtelektrischen Imp) Auswahl der Komponenten, Ich mag sie schön zu legen und sie zu einem befestigen Lochrasterplatinen (Leiterplatte mit Durchgangsbohrungen löten Sie Komponenten) , die mit abtrünnigen Header an den Elektro - Imp verbinden ( Auf diese Weise kann ich leicht entfernen Sie die protoboard aus dem Impuls, wenn ich die Impulse in einem anderen Projekt verwenden möchten). Protoboards mit einer Vielzahl von Routings zwischen den Durchgangslöchern kommen: die, die ich von Amazon gewählt habe keine Routing zwischen den Löchern, so dass mir mehr Freiheit mit Komponenten-Layout, sondern mehr Arbeit, die meine eigene Routing. I enthalten Anschlüsse für die Batterie ( 2-poligen JST ), LED (4-polig abtrünnigen) und Schalter (2-Pin JST) so dass das System leicht demontiert werden können. Der letzte Schritt ist, einen Jumper an den Imp zu geben, um leicht zwischen Batterie- oder USB-Strom umzuschalten.

Jetzt haben wir einen Halt auf der elektrischen Seite, Zeit, um auf die Box, die alles zusammen zu bringen.

Schritt 2: Die physischen

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

Wählen Sie die Schaltfläche!
Ich liebe Tasten. Ich habe Knöpfe mein ganzes Leben gedrückt. Tanzen ist für mich ein riesiger Energieanteil, und ich wollte einen Knopf, der mit einem Knall beginnen würde. Diese großen Tasten von Sparkfun sind groß und haben ein befriedigendes Klicken , wenn Sie 'em schlagen. Sie schließen eine LED ein, die verkabelt wird, um bei 12V laufen zu lassen, die wir austauschen, und ein elektrischer Schalter mit normalerweise öffnenden (NO) und normal-geschlossenen (NC) Terminals. Ich ersetzte die Vorrat LED mit meiner eigenen RGB-LED mit einem Stecker, überprüfen die Abbildungen, um zu sehen, wie. Der Plan ist, die LED als Rückkopplungsmechanismus zu verwenden. Anfänglich können die Farb- und Lichtsequenzen darstellen, wenn sich die Taste im Tanzmodus befindet (mit etwas Pizzazz). Schließlich ziele ich darauf ab, mehrere Knöpfe in www.isanyonedancing.com mit ein paar mehr soziale Features zu integrieren, dann wird das Licht zeigen, wenn andere Menschen sind im Tanz-Modus, und vielleicht benachrichtigen Sie, wenn andere Leute denken, Sie sollten tanzen.

Während die Taste wurde demontiert, ich dachte, es war es wert, ein wenig mehr Flair hinzuzufügen. Die Objet Connex 500 Drucker können transparente Materialien bedrucken und gleichzeitig mit 2 verschiedenen Materialien bedrucken. Um diese Funktionalität auszuprobieren, entschied ich, den gelben Knopfdom mit einem klaren zu ersetzen, um besser mit meiner RGB-LED zu arbeiten und mir zu ermöglichen, in die Kuppel irgendeinen Text zu drucken. Auch ersetzt die Aktie Diffusor mit einem Stück Papier mit dem tanzenden Mann.

Holen Sie sich die Abmessungen gerade
Nachdem alle elektrischen Komponenten ausgewählt wurden, legte ich die Dinge in verschiedenen Konfigurationen (nur auf einem Tisch), um herauszufinden, die kleinste, bequemste Verpackung Hülle konnte ich erreichen. Dann CAD alles, damit Sie eine 3D-Druck-Box um ihn herum. Ich entwarf in den Eigenschaften zum Kasten, um Montage einfach zu machen: Sechskantmuttern werden zuerst in die Oberseite eingefügt, der Knopf wird dann angebracht, unter Verwendung des auf lagermontageringes, dann Elektronik eingefügt und schließlich geschlossen mit 8-32 Schrauben vom lokalen Baumarkt.

3D drucken Sie das Formular aus
Es gibt eine riesige Auswahl an Druckern, jede mit ihren eigenen Vor-und Nachteile. Hier ist ein Instructable mit einer guten Lage des Landes auf 3D-Druck. Wählen Sie die für Sie, die eine richtige Ausgewogenheit der Auflösung, Materialien, Zugänglichkeit und Kosten ist, dann Lookup, was notwendig ist, um es zu lernen. Es gibt viele gute Instructables, wie man 3D-Drucker verwenden. Oder einfach nur Ihre STL - Datei zu einem Online - 3D - Druck - Unternehmen wie senden Shapeways .

Ellenbogenfett für Finish
Ein bisschen Geduld ist nötig, um ein gedrucktes Stück wirklich zu glänzen oder fast transparent zu machen. Das Objet-Handbuch empfahl eine Weiterentwicklung von 150, 300, 600, 1000, 1500 Schleifpapier, Veredelung mit einem Kunststoff-Poliermittel und einem rotierenden Werkzeug. Ich verwendete 3M Kunststoffreiniger , gefolgt von 3M polnischen und Beschützer , die jeweils mit einem Dremel Filzrad Polieren . Ich könnte ein besonders gutes Tutorial finden, genau wie dies zu tun, so vielleicht später werde ich machen eine schnelle Instructable Umriss der Nuancen und Fallstricke zu vermeiden.

Alles körperliche, die für die Taste (elektrische und mechanische) getan werden muss getan wird, Zeit, um die Schaltfläche mehr als ein Haufen von Kunststoff und Metall mit einigen Programmier-Magie.

Schritt 3: Die eingebettete Arbeit

Dance-Benachrichtigungsnetzwerk

Dance-Benachrichtigungsnetzwerk

(ANMERKUNG: Elektrische Imp führten eine umfassende Überarbeitung auf ihre IDE , nachdem ich dieses Projekt beendet Der Planer nicht mehr existiert, und wird stattdessen durch Agenten ersetzt, die mit den funktionellen Ausgangsblöcke in dem Planer analog sind..)

Erste Ordnung des Geschäfts in bringen den Knopf zum Leben ist immer der Impuls an die Schnittstelle korrekt mit dem Button und LEDs, dann bekommen sie mit dem Internet zu sprechen.

Wenn Sie Erfahrung mit Arduino oder anderen Mikrocontrollern haben, wäre dieser Schritt normalerweise:

  • Schießen Sie Ihre bevorzugte IDE (integrierte Entwicklungsumgebung oder Software, die Sie schreiben Code in ein bietet zusätzliche Funktionen wie Überprüfung Ihrer Syntax, Färben Sie Ihren Code leichter zu lesen, und andere)
  • Schreibt ein Programm, das Pins auf Ihrem Mikrocontroller als Eingänge für die Schaltfläche und Ausgänge für die LEDs, dann Logik der Controller verwendet, um Sequenzen von Ereignis (Taste drückt), um seine Aktoren (Lichtfarben und Sequenzen, Senden von Nachrichten an das Internet )
  • Laden, dass Programm auf Ihrem Mikrocontroller mit irgendeiner Art von Kommunikations-Kabel (oft USB)

Allerdings verwendet die Electric Imp eine Online-IDE. Dies bedeutet, Sie schreiben Ihr Programm in einem Web-Browser auf der Website Imp, dann klicken Sie auf eine Schaltfläche, die automatisch schiebt das Programm auf die Imp over Wifi. Sie haben den Vorteil, dass Sie keine IDE auf beliebigen Computern installieren müssen, die Sie programmieren möchten, und halten Sie Ihren Code sicher in der Wolke.

Elektrische Imp Entwickler - Wiki hat viele Beispiele dafür, wie in Eichhörnchen zu programmieren , um die Imp zu tun , was Sie wollen.

Wenn Sie mit Arduino vertraut sind, ist die Syntax von Squirrel relativ ähnlich (ähnlich C und Java), ist aber dynamischer wie Python. Die wichtigsten Unterschiede müssen Sie Ihren Kopf umwickeln:

  • Es gibt keine Schleifenfunktion in Eichhörnchen. Stattdessen läuft der Code von Anfang bis Ende, läuft Funktionen, wie es läuft in sie. Wiederkehrender Funktionscode-Ablauf (wie eine Loop-Funktion) kann wie folgt erstellt werden. Wenn Sie eine Funktion testFunction haben, verwenden Sie imp.wakeup (X, testFunction) am Ende der Definition von testFunction. Imp.wakeup teilt dem Imp auf, testFunction in X Sekunden erneut aufzurufen. Also jedes Mal, wenn testFunction aufgerufen wird, wird es wieder in X Sekunden ausgeführt werden. Wie eine Schleife, wo statt so schnell wie möglich zu laufen, können Sie die Zeit zwischen den Läufen.
  • Wenn Ihr Code von Ereignissen ausgeführt wird, die keine Schleife benötigen (z. B. Eingaben aus dem Web), definieren Sie INPUT-Klassen für den Imp, die ihm mitteilen, welche Funktionen aufgerufen werden, wenn dieser bestimmte Eingang erkannt wird.
  • Schließlich gibt es OUTPUT-Klassen, die verwendet werden, um bestimmte Daten an die Ausgänge im Electric Imp-Planer zu senden.
  • Durch die Definition von INPUT- und OUTPUT-Ports können Sie Funktionsblöcke (wie HTTP-Anforderungen) im Planner anschließen, um Ihre Geräte mit dem Internet zu interagieren

Welchen logischen Fluss wollen wir? Wirklich einfach.

  1. Der Hardwareinterrupt prüft, wenn die Taste gedrückt wird.
  2. Wenn die Taste gedrückt wird, betätigen Sie die impServerOut OUTPUT-Klasse (die wir an eine HTTP-Anforderung anschließen, um unserem Server mitzuteilen, dass die Taste gedrückt wird)
  3. Darüber hinaus gibt es eine einfache Zustandsmaschine, die verfolgt, ob die Schaltfläche im Dance-Modus ist oder nicht, und beleuchtet das Licht, wenn es ist.

Der beigefügte Code danceButtonSimple.txt, zusammen mit der Planner-Konfiguration, ist alles, was wir auf der Mikrocontrollerseite benötigen. Wenn die Taste gedrückt wird, sendet der Planner eine HTTP-POST-Anforderung an den Server, die die Zeiten der Anforderungen verfolgen wird, damit er seine Webseiten entsprechend aktualisieren kann. Jetzt zum Server!

Schritt 4: Der Webserver

Dance-Benachrichtigungsnetzwerk

Auswahl der Server-Website
Ein gemeinsames Werkzeug für Web-Prototyping ist Heroku, ein Dienst, mit dem Sie eine Web-Anwendung leicht starten können. Es unterstützt eine Vielzahl von Web-Applikations-Frameworks (standardisierte Methoden, um Programme zu strukturieren, die Webseiten laufen) in einer Vielzahl von Sprachen, mit großer Dokumentation, wie es zu tun. Es entfällt die Notwendigkeit für Sie zu spinnen Sie Ihre eigenen Linux-Server (die es schön versteckt unter der Haube), um Ihre Web-Anwendung Host. Wenn Sie nicht wissen, was das bedeutet oder haben eine Ahnung, wie es zu tun, loben die Himmel Heroku existiert. Und für die meisten Dinge, die Sie für Prototypen tun müssen, ist es kostenlos.

Innerhalb Heroku gibt es viele Web-Anwendungs-Frameworks können Sie mit gehen. Ich habe die Einfachheit von Python wurde liebevoll und die große Vielfalt von Modulen für sie geschaffen, so habe ich beschlossen , mit Python läuft Flasche und Flasche zu gehen. Flask ist ein einfaches Python - Web - Framework, das die Adressierung Ihrer Seiten behandelt und führt Logikstrukturen Und greift bei Bedarf auf Datenbanken zu. Flask verwendet dann das Python - Modul - Flasche als Template - Engine: Flasche nimmt meist vorgefüllte HTML - Vorlagen I erstellt und Futtermittel in dynamische Informationen aus meiner Datenbanken wann immer die Website zugegriffen wird. (Technisch Flasche kann alles tun Flask kann ich denken, aber es wurde mir empfohlen, Flask für Routing mit Heroku und Flasche für Templating verwenden).

Holen Sie sich eine Anwendung online
Sie können eine Arbeits-Web-Anwendung auf Heroku zum ersten Mal in einer Stunde, nur durch folgende Tutorials starten. Die wichtigsten Schritte sind:

Verwenden Sie Ihre eigene Webadresse
Heroku weist Ihrem Antrag eine Adresse zu (meist APPNAME.herokuapp.com). Wenn Sie für Ihre Anwendung eine eigene Domain verwenden wollen (zum Beispiel wollte ich www.istripdancing.com anstelle von dancebutton.herokuapp.com), müssen Sie Ihre eigene Domain zu kaufen und an die Heroku Adresse umleiten. Ich benutzte Hover auf meine Domain für $ 10 für ein Jahr erwerben. Ich habe gehört, Sie können Domains billiger durch andere Dienstleistungen erhalten, aber ich habe noch nicht in sie hinein. Nachdem Sie die Domain gekauft haben, ist es unglaublich einfach, Anfragen an Ihre Domain an die Heroku App weiterzuleiten (siehe Snapshot).

Heroku Einzelheiten
Sobald Sie alles haben und läuft, wenn Sie nicht getan haben, wie diese, bevor es mehrere Tools, die Sie lernen werden, wie Sie Ihre erste Heroku-App zu Ihrem Gebot zu tun. Hier ist ein kurzer Überblick, um Ihren Kopf an der richtigen Stelle zu bekommen.

Herokus grundlegende Anwendung läuft
Um eine Anwendung in Heroku mit Python und Flask auszuführen, sucht Heroku nach der app.py-Datei, die nach den Nuancen von Flask strukturiert sein muss. Vor dem Ausführen der Datei sucht Heroku die Datei requirements.txt, um zu ermitteln, welche Python-Module zum Ausführen des Servers erforderlich sind. Es gibt eine Million Python-Module und jede Anwendung benötigt in der Regel nur einige Module installiert zu laufen. Heroku installiert diese Module, dann dreht sich eine Instanz von Python mit Ihrer App. Es ist wichtig, dass Sie während der Entwicklung Ihrer Anwendung das Python Virtualenv (virtuelle Umgebung) verstehen und wie Sie requirements.txt korrekt aktualisieren (siehe unten). App.py informiert Heroku, was zu tun ist, wenn eine Anfrage an bestimmte Adressen / Routen innerhalb Ihrer Website gemacht wird (eine Funktion für den zu startenden Webserver ist jeder Route zugeordnet). Diese Routing-Funktionen geben den im Browser anzuzeigenden Rohcode zurück. Das einfachste Beispiel wird im Heroku Getting Started Tutorial demonstriert: Die Standardanwendungsroute gibt einfach den Text "Hello World" zurück, der im Browser angezeigt wird, wenn jemand zu dieser Adresse springt.

Erstellen von dynamischen Webseiten mit Heroku
Wenn Sie etwas Interessanteres an den Browser zurückgeben möchten, können Sie HTML-Code zurückgeben, der basierend auf dem Status Ihres Servers ermittelt wird. Um dies zu tun, habe ich die Python-Modul Flasche. Ich erstelle eine HTML-Schablone mit dem ganzen Formatieren und statischem Text, den ich auf meiner Seite wünsche und spezifiziere dynamische Informationsbehälter innerhalb der Schablone mit {{variable}} (eine bestimmte Flasche). Um diesen Raum mit Informationen von meinem Server zu befüllen, verwende ich die Template-Funktion innerhalb der Flasche in der Rückleitung meiner Flask-Funktion (bottle.template (...)).

Ändern und Wiedereinsetzen Ihrer Webanwendung mit Heroku
Mit Heroku arbeiten Sie an lokalen Dateien auf Ihrem Computer, dann wenn Sie Ihren Server aktualisieren möchten, drücken Sie die Änderungen an Heroku mit Git. Git ist eine Dose Würmer in einer Dose von Würmern selbst, aber im Wesentlichen ist es ein Revisions-Kontrollsystem für Code - eine ausgefallene Art zu sagen, es hält den Überblick über Ihre Änderungen für Sie. Sie schreiben Ihren Code, und jedes Mal, wenn Sie möchten, dass Git Ihren aktuellen Code zu speichern, Sie "Commit" Ihre Änderungen, und können Sie Ihren Code auf alle zuvor festgelegten Zustand, wann immer Sie wollen. Git kann eingerichtet werden, um die Hauptrevisionsdatenbank online zu haben (ein freies Beispiel ist GitHub). In unserem Fall ist das Hauptrepository Heroku, und wann immer wir den Server aktualisieren wollen, drücken wir einfach unsere neueste Version darauf. Sie können die Besonderheiten finden , wie hier Git mit Heroku zu verwenden . Wenn Sie mehr über Git erfahren möchten:

Lokal arbeiten
Abhängigkeiten können eine große Quelle von Kopfschmerzen für Menschen mit Python auf verschiedenen Maschinen, wenn Sie nicht vorsichtig sein. Imagine Ich habe mein eigenes Python-Modul, das mich rufen myModule.myFunction (), und ich benutze, dass in meinem Python-Programm. Wenn ich einfach meine Python-Datei ohne das Modul, wird Ihr Computer haben keine Ahnung, was myModule bezieht sich auf. Um dies zu bewältigen, verwenden wir eine virtuelle Umgebung mit Virtualenv oder eine isolierte Instanz von Python, auf der wir direkte Kontrolle über das installierte System haben, sowie einen durchdachten Workflow für den Betrieb unserer Programme auf verschiedenen Rechnern. Ein einfacher Weg, dies zu visualisieren: Sie haben zwei Computer, eine, die Adobe Photoshop und Microsoft Office hat, die andere ohne Software. Die Excel-Dateien und Bilder, die Sie auf dem ersten Computer erstellen, können auf dem zweiten nicht geöffnet werden, da der Computer nicht über die Programme (oder Module) verfügt, die wissen, wie die Dateien gelesen werden. Ein virtualenv wäre verwandt mit einem Konto auf jedem Computer, die Sie einloggen können, die identische Programme hat. Jedes Mal, wenn Sie ein neues Programm auf einem Konto verwenden, möchten Sie eine Möglichkeit für das gleiche Konto auf dem anderen Computer zu haben, es zu haben, so können Sie alle Ihre Dateien zu öffnen. Virtualenv ist das für Python.

Der Workflow für die virtuelle Umgebung mit Heroku ist:

- Einrichtung Virtualenv

- virtualenv aktivieren

Source venv / bin / aktivieren

- Installieren neuer Module mit pip oder easy_install (Installationsmanager für Python)

- update requirements.txt durch "Einfrieren" der Virtualenv-Abhängigkeiten in die Datei (requirements.txt verfolgt, welche Module im virtualenv installiert sind)

Pip freeze> requirements.txt

Alternative Erklärung von virtualenv für diejenigen , die ich verwirrt (sorry!).

Nachdem Sie Heroku, Git und Virtualenv eingerichtet haben und einige Code in Ihre app.py-Datei geschrieben haben, können Sie einen Testserver lokal ausführen, bevor Sie den Code auf Heroku drücken, um sicherzustellen, dass es zuerst funktioniert. Um einen lokalen Server auszuführen, während in der virtualenv in der Konsole laufen:

Vorarbeiterstart

Dies führt zu einem lokalen Server in 0.0.0.0:5000 in Ihrem Webbrowser. Gehen Sie dort, testen Sie die Funktionalität Ihres Servers. Wenn Fehler auftauchen, zeigt der Browser sie an, und Sie können Ihre Konsole auf Debug-Nachrichten überprüfen.

Sobald Sie zufrieden mit der Funktionalität Ihres Servers, in der Konsole laufen:

Fügen Sie der lokalen Git-Kopie neue Dateien hinzu
Git hinzufügen.

Speichern Sie alle Änderungen an Ihrer lokalen Git-Kopie
Git commit -m "Fügen Sie Ihre Commit-Nachricht hinzu, die die Änderungen, die Sie seit dem letzten Mal gemacht haben, beschreibt."

Kopieren Sie die lokale Kopie in die Heroku-Kopie oder das Repository
Git schieben heroku Meister

Und Viola! Ihr Code läuft jetzt auf Heroku und kann von der Internetseite abgerufen werden! Ich muss noch beschreiben, wie die Schaltfläche gedrückt Ereignisse im Server über eine Datenbank aufzeichnen, aber ich werde dies später tun. Nun zum Gespräch mit Facebook.

Schritt 5: Soziale Integration

Dance-Benachrichtigungsnetzwerk

Was gut ist es für eine Website zu zeigen, dass Sie tanzen, wenn niemand denkt, um es zu betrachten? Offensichtlich muss es jedem auf Facebook erzählen, wann immer Sie tanzen, so dass sie beitreten können und fröhlich sein.

Es gibt verschiedene Möglichkeiten, um Ihre Website mit Facebook interagieren. Sie können über verschiedene SDKs lesen hier . Es gibt Tonnen von Beispielen auf der Facebook-Website von Code, den Sie kopieren und einfügen können, um grundlegende Funktionalität zu erhalten.
Die Facebook Graph API bietet Low-Level-HTTP-Zugang zu Facebook. Dies bedeutet, dass unser Server einfach HTTP-Anfragen (wie die, die Sie in Ihrem Web-Browser), um sich in Facebook, Post an der Wand, etc.

Richten Sie ein "Login" für Ihre Web-Anwendung
Um dem Server einen sicheren Zugang zu ermöglichen, damit nicht nur jeder sich anmelden kann, müssen wir eine Facebook-Anwendung einrichten. Gehen Sie hier , melden Sie sich als Entwickler, und erstellen Sie Ihre eigene Facebook - App. Die Facebook-App wird nur als unser Login auf Facebook funktionieren: Wir werden nicht wirklich programmieren jede Anwendung auf Facebook selbst. Alles was Sie tun müssen, ist:

  • Geben Sie die App-Domain des Heroku-Servers ein (diese finden Sie im Heroku-Dashboard über einen Webbrowser)
  • Deaktivieren Sie "Sandbox-Modus", damit jeder die App verwenden können
  • Checkmark-Website mit Facebook-Login und geben Sie die Server-Adresse (dies wird es ermöglichen, dass Menschen, die bereits in Facebook angemeldet haben, um unsere Facebook-App erlauben, auf ihre Wände posten, wenn die Taste gedrückt wird)

Nun, da wir dieses Setup haben, notieren Sie Ihre APP-ID und APP SECRET. Diese dienen als Benutzername und Passwort unseres Servers für die Anmeldung in Facebook.

"Login" auf Facebook mit der Web-Anwendung mit Python
Da der Server läuft in Python, müssen wir durch die Bewegungen mit HTTP-Anfragen gehen, um Zugang zu Facebook zu erhalten. Grundsätzlich programmieren wir die APP_ID und APP_SECRET in den Python-Code, "login" auf Facebook mit diesen um unser Berechtigungs-Token zu erhalten. Dann jedes Mal, wenn wir auf Facebook posten, machen wir die Post Anfrage und beinhalten unsere Autorisierung Token. Siehe die beigefügten facebook.py für meine Python - Funktionen für die Anmeldung in Facebook und die Veröffentlichung auf einer Wand (beachten Sie, dass ich meine APP_SECRET und APP_ID entfernt).

Authorize Dance Button auf Facebook Wände posten
Wir haben jetzt einen Server, der sich in Facebook einloggen kann und posten, was auch immer wir uns wünschen, an die Mauer dieser armen Seelen, die uns die Erlaubnis geben. Wie bekommen wir diese Erlaubnis? Die soziale Strategie liegt bei Ihnen, aber technisch werden wir Javascript verwenden. Das Facebook Javascript SDK hat viele große Beispiele, die Sie kopieren und in Ihre HTML-Vorlagen einfügen können, um Ihre Website-Schnittstelle mit Facebook zu machen. So laden Sie das SDK auf Ihrer Seite hier , und mit dem SDK anmelden hier . Check out register.tpl für meine Flasche Vorlage mit dem Javascript - Code für den Tanz - Knopf Facebook - App zur Ermächtigung (beachten Sie, dass ich meine APP_ID entfernt).

Schritt 6: Zeit zum Tanzen!

Dance-Benachrichtigungsnetzwerk

Weitere Aktionsmedien zu kommen ...

Related Reading