Raspberry Pi Smart Target (4 / 6 schritt)

Schritt 4: Code


The Raspberry Pi läuft "headless" Sinn gibt es keine Notwendigkeit, einen Monitor, Tastatur oder Maus.  Um Dinge automatisch gestartet, sobald ich den RPI verbunden, ich habe einen Linux-Init-Script (/ etc/init.d/target), starten Sie das Java-Programm, das auf Action wartet sowie ein Shutdown-Programm für die Schaltfläche "Herunterfahren" zu hören. Das Skript zeigt auch die aktuelle IP-Adresse in der LCD-Bildschirm beim Booten.

 #!/bin/bash #/etc/init.d/target export HOME case "$1" in start) if [ ! -e "/dev/ttyS1" ]; then ln /dev/ttyAMA0 /dev/ttyS1 fi /home/pi/lcd.py `ifconfig wlan2 | grep inet | awk '{print $2}' | sed 's/addr://'` java -cp .:/home/pi:/home/pi/lib/* Target >> /home/pi/target.log & /home/pi/shutdown-listener.py & ;; stop) LCD_PID=`ps auxwww | grep Target | head -1 | awk '{print $2}'` kill $LCD_PID ;; *) echo "Usage: /etc/init.d/target {start|stop}" exit 1 ;; esac exit 0 

Shutdown-Skript

 #!/usr/bin/env python from time import sleep import os import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) OFF_SWITCH = 23 GPIO.setup(OFF_SWITCH, GPIO.IN) while True: if ( GPIO.input(23) == False ): os.system('/home/pi/lcd.py " Shutting down. Goodbye :)"') os.system('shutdown -h now') break sleep(1); print 'Shutting down' 

LCD-Python-Skript fahren die IoBridge LCD-Bildschirm

 #!/usr/bin/env python import serial import string import sys test=serial.Serial("/dev/ttyAMA0",9600) test.open() line = sys.argv[1] byte = chr(0xFE) try: test.write(byte) test.write("B") test.write("9") test.write(byte) test.write("Z") test.write(line) test.write(byte) test.write("T") test.write("0") delay = chr(0x10) test.write(delay) except KeyboardInterrupt: pass # do cleanup here test.close() 

Nun, hier ist der Java-Quellcode. Hinweis: ich verwende twiiter4j Bibliothek und Rpi-Gpio-Java (http://code.google.com/p/rpi-gpio-java/)

 import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import java.io.OutputStream; import be.doubleyouit.raspberry.gpio.Boardpin; import be.doubleyouit.raspberry.gpio.Direction; import be.doubleyouit.raspberry.gpio.GpioGateway; import be.doubleyouit.raspberry.gpio.impl.GpioGatewayImpl; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.Date; import javax.activation.MimetypesFileTypeMap; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.FileEntity; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import twitter4j.StatusUpdate; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.conf.ConfigurationBuilder; import java.util.Random; public class Target { static OutputStream output; static GpioGateway gpio; static SerialPort port; static CommPortIdentifier portId; static HttpClient httpclient = new DefaultHttpClient(); static String replyURL; static String message; static boolean ready = true; static String dropcam = "https://nexusapi.dropcam.com/get_image?width=800&uuid=XXXX"; static String osnImg; public static Date now; static Random generator = new Random(); public static String[] messages = { "Lucky! Looks like you will be taking me home tonight!", "It paid off to stop by the OTN Lounge tonight.", "Looks like someone has been practicing.", "Not bad for your first try. Now go ahead and brag to your friends.", "I love hanging out at the OTN Lounge, but It looks like you will be taking me home tonight!", "That was nice. No go and tell your friends to stop by the OTN Lounge.", "I just love to scream and fly at the OTN Lounge.", "Roses are red and Oracle too. Now you can take me home too.", "I just wanna fly.", "Thanks for stopping by. Looks like you got lucky tonight.", "I just love to scream and fly at the OTN Lounge." }; public static void main(String[] args) throws Exception{ AddShutdownHookSample kill = new AddShutdownHookSample(); kill.attachShutDownHook(); try{ portId = CommPortIdentifier.getPortIdentifier("/dev/ttyS1"); port = (SerialPort)portId.open("Raspi LCD", 4000); output = port.getOutputStream(); port.setSerialPortParams(9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); gpio = new GpioGatewayImpl(); gpio.unexport(Boardpin.PIN11_GPIO17); gpio.export(Boardpin.PIN11_GPIO17); gpio.setDirection(Boardpin.PIN11_GPIO17, Direction.IN); while (true){ brightness("9"); clear(); print(" Ready "); delayBacklight("0",5); int i = 0; //remove negation! while (!gpio.getValue(Boardpin.PIN11_GPIO17)){ i = 1; } if (ready){ //System.out.println("start"); ready = false; int rnd = generator.nextInt(10); Process proc = Runtime.getRuntime().exec(new String[]{"/usr/bin/mpg321", "-q","/home/pi/"+rnd+".mp3"}); brightness("9"); clear(); print(" Congratulations"); //Login downloadPicture(); uploadPicture(messages[rnd]); clear(); delayBacklight("0",5); Thread.sleep(2 * 5000); ready = true; //System.out.println("end"); } } }catch (Exception e){ System.out.println(e.toString()); } } public static void downloadPicture() throws IOException{ now = new Date(); String formatDate = new SimpleDateFormat("MMddyyyy-hhmmss").format(now); osnImg = "OTN-" + formatDate + ".jpeg"; HttpGet httpget = new HttpGet(dropcam); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); //System.out.println("downloadPicture: " +response.getStatusLine()); if (entity != null) { byte[] bytes = EntityUtils.toByteArray(entity); File file = new File("/var/www/" + osnImg); FileOutputStream fos = new FileOutputStream(file); fos.write(bytes); fos.close(); } EntityUtils.consume(entity); } public static void uploadPicture(String message) throws TwitterException { ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setOAuthConsumerKey("XXXX"); cb.setOAuthConsumerSecret("XXXX"); cb.setOAuthAccessToken("XXXX"); cb.setOAuthAccessTokenSecret("XXXX"); StatusUpdate status = new StatusUpdate(message); File imageFile = new File ("/var/www/" + osnImg); status.setMedia(imageFile); TwitterFactory tf = new TwitterFactory(cb.build()); Twitter twitter = tf.getInstance(); try { twitter.updateStatus(status); } catch ( Exception ex ) { ex.printStackTrace(); } } public static void delayBacklight(String level, int delay ) throws Exception{ startCommand(); output.write("T".getBytes()); output.write(level.getBytes()); output.write(delay); } public static void brightness(String level) throws Exception{ startCommand(); output.write("B".getBytes()); output.write(level.getBytes()); } public static void print(String message) throws Exception{ output.write(message.getBytes()); } public static void clear() throws Exception{ startCommand(); output.write("C".getBytes()); } public static void startCommand() throws Exception{ output.write(254); } } //http://www.javabeat.net/2010/11/runtime-addshutdownhook/ class AddShutdownHookSample { void attachShutDownHook() { Runtime.getRuntime().addShutdownHook(new Thread() { public void run(){ try{ System.out.println("Shuting down target"); File file = new File("/var/lock/LCK..ttyS1"); Lcd.httpclient.getConnectionManager().shutdown(); if(file.delete()){ System.out.println(file.getName() + " is deleted!"); } }catch(Exception e){ e.printStackTrace(); } } }); //System.out.println("Shut Down Hook Attached."); } } 

In Verbindung stehende Artikel

Smart home-Automation-Webserver auf OpenWRT Router WR703N eine Schnittstelle mit Arduino, verglichen mit Raspberry Pi und Ubuntu

Smart home-Automation-Webserver auf OpenWRT Router WR703N eine Schnittstelle mit Arduino, verglichen mit Raspberry Pi und Ubuntu

WR703N Digest (340MB Zip-Datei) herunterladen:https://sourceforge.net/projects/WR703N/---------------------------------------------------------------------------------------------------------------------------------Liebe Leserinnen und Leser,Es gibt
PiFlic - Flic wireless smart-Taste & Raspberry Pi

PiFlic - Flic wireless smart-Taste & Raspberry Pi

Im august 2014 las ich über eine interessante Indiegogo benannt Crowdfunding-Kampagne "Flic wireless smart-Button". Ich sagte, "Ich muss es haben".Nach mehreren Monaten hat gestern, Flic an mich ausgeliefert.Was ist Flic?Es ist ein Wir
Raspberry Pi Null Mondlicht (gesteuert mit Smart-Phone)

Raspberry Pi Null Mondlicht (gesteuert mit Smart-Phone)

Herzlich Willkommen! Hier ist wie ein Smartphone-gesteuerte Licht zu bauen. Ich fand eine sehr schöne "Mondförmiges" Lampe bei Ikea - aber wirklich jede Lampe zu tun, die einen einfache 2-Stift-AC-Stecker hat.Dies funktioniert mit jedem Raspberr
$10 smart Kamera mit Raspberry Pi

$10 smart Kamera mit Raspberry Pi

LIVE DEMO im Serverraum bei Naran.Die meisten von uns haben ein oder zwei nicht verwendete USB-Webcams in unseren Häusern herumliegen. Aber diese Kameras sind oft verstaubt als ihre jetzt überholt und haben nur begrenzte Fähigkeiten.Einige Leute sind
Bauen Ihre eigene Smart Hub: Prota OS für Raspberry Pi 3

Bauen Ihre eigene Smart Hub: Prota OS für Raspberry Pi 3

Das neue Raspberry Pi 3 verfügt über einen brandneuen Quad-Core 1,2 GHz 64-Bit-Prozessor, 1GB oder RAM und beide Wireless LAN und Bluetooth an Bord!Der ursprünglichen Raspberry Pi kam live genau vor 4 Jahren und seitdem bekam 10-Mal schneller, doch b
Husky ich: Vierbeiner Live Streaming Bot mit Raspberry Pi

Husky ich: Vierbeiner Live Streaming Bot mit Raspberry Pi

Der Vierbeiner Codename Husky ich ist ein Vierbein Krabben wie Roboter, die es die Raspberry Pi 2 verwendet, Gehirn und Haupt-Control Center. Darüber hinaus Husky ich ebenfalls einen Servoregler und Motortreiber für Servosteuerung und Motor fahren. E
Video-Telefonie auf Raspberry Pi 3

Video-Telefonie auf Raspberry Pi 3

Da ich für mein Studium vor 5 Jahren meine Heimat verlassen, wurde mir klar, wie schwierig es ist, Weg von der Familie zu sein. Videotelefonie ist eine Option für die meisten Menschen, aber da meine Eltern sind nicht in der Lage zu lernen, wie man ei
RGB-Led-Uhr mit Bluetooth Smart

RGB-Led-Uhr mit Bluetooth Smart

Diese instructable zeigt Ihnen, wie eine Zypresse-BLE-Devkit verwenden, um eine RGB-LED-Uhr zu bauen.Sie brauchen nur sehr wenige Dinge:RGB-LED-Strip mit 30 oder 60 WS2812b-LEDs.ein Raster-Stil-Leiterplatteeinige Pins Pin-Header und ein bisschen Drah
Raspberry Pi Nin10do "Lite" Spiel-Konsole

Raspberry Pi Nin10do "Lite" Spiel-Konsole

Okay, bevor wir beginnen können Sie das Video um zu sehen, was Art von Spiel-Konsole, die wir erstellen wollen...Es ist eine Himbeere Pi2 basierten Gaming-Station auf denen Sie alle Ihre Lieblingsspiele von Mario zu GTA und von Monkey Island zu Load
Esp8266 + Raspberry Pi Strom Monitor

Esp8266 + Raspberry Pi Strom Monitor

Ich habe immer meine Verbrauchszähler auf die altmodische Weise beobachtet. Zuerst schrieb ich sie in ein wenig Ledger (ja, ich bin so alt), ich schrieb später einer Tabellenkalkulation für it und den letzten Jahren die ECAS-Smartphone-app verwende i
ISPRESSO: Remote Controlled, Raspberry Pi Powered Espressomaschine

ISPRESSO: Remote Controlled, Raspberry Pi Powered Espressomaschine

Bitte beachten Sie: diese Anweisungen waren für die alten Raspberry Pi-Bretter und die ältere Version des Raspbian genau, aber gab es große Veränderungen vor kurzem die neue Schritte mindestens auf der Softwareseite erfordern. Aktuellen Informationen
Raspberry Pi Bluetooth-LE Controller für WS2812B (NeoPixels)

Raspberry Pi Bluetooth-LE Controller für WS2812B (NeoPixels)

Bluetooth Low Energy (aka BLE/Bluetooth 4.0/Bluetooth Smart) ist die jüngste Inkarnation der Bluetooth-Technologie, entwickelt von der Bluetooth SIG (Organisation, die Spezifikation verwaltet). Dieses Kommunikationsprotokoll ist für Anwendungen konzi
Machen jede dumme TV Smart TV

Machen jede dumme TV Smart TV

Wünschen Sie, dass Ihre standard-Fernsehen mit dem Internet verbinden kann? Sie haben die Möglichkeit, Stream Netflix, Hulu, oder alles auf Google nachschlagen, wenn Ihr Handy nicht erreicht werden kann. Alle Ihre Dateien Musik und Film konnte an Ihr
DIY-Smart-Home-Sprachsteuerung

DIY-Smart-Home-Sprachsteuerung

Wenn Sie nicht vertraut mit Amazon Echo sind – es ist eine neue persönliche Assistentin, die auf Ihre Sprachbefehle reagiert und daher einfache Aufgaben erledigt für Sie. Beispielsweise kann Ihre intelligente Lichter steuern oder ein-und Ausschalten