Frambuesa Pi inteligentes atacan (4 / 6 paso)

Paso 4: código

El Raspberry Pi está ejecutando significa "sin cabeza" no es necesario tener un Monitor, teclado o ratón.  Para comenzar cosas automáticamente una vez que conecté el RPI, he utilizado un script de inicio de Linux (/ etc/init.d/target) para iniciar el programa de Java que escucha para la acción, así como un programa de apagado para el botón de apagado. El script también muestra la dirección IP en la pantalla durante el arranque.

 #!/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 

Script Shutdown

 #!/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' 

Script en LCD Python conducir la ioBridge LCD pantalla

 #!/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() 

Ahora aquí está la fuente de Java. Nota que estoy usando la biblioteca twiiter4j y 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."); } } 

Artículos Relacionados

PiFlic - botón inteligente sin hilos de Flic y frambuesa Pi

PiFlic - botón inteligente sin hilos de Flic y frambuesa Pi

En agosto 2014 que leí un interesante Indiegogo crowdfounding campaña nombrada "Flic el botón inteligente inalámbrico". Dije "debo tenerlo".Después de varios meses, ayer, Flic ha sido entregado a mí.¿Qué es Flic?Es un botón inteligente
¿Timbre inteligente frambuesa Pi: Quién está en mi puerta?

¿Timbre inteligente frambuesa Pi: Quién está en mi puerta?

Este proyecto pretende replicar algunos de los timbres inteligentes que hay en el mercado. Esta versión será detectar cuando alguien ha tocado el pomo o timbre de la puerta y o tweet, texto, o correo electrónico una foto de la persona en la puerta. S
Inteligente cámara de $10 con frambuesa Pi

Inteligente cámara de $10 con frambuesa Pi

DEMO en vivo en la sala de servidores en Naran.La mayoría de nosotros tiene uno o dos sin utilizar webcams USB en nuestras casas. Pero las cámaras son a menudo recoger el polvo como su ahora obsoleto y tienen limitadas capacidades.Algunas personas es
Servidor de automatización del hogar inteligente en OpenWRT router WR703N conectado a Arduino, en comparación con Ubuntu y frambuesa Pi

Servidor de automatización del hogar inteligente en OpenWRT router WR703N conectado a Arduino, en comparación con Ubuntu y frambuesa Pi

descargar el Resumen de WR703N (archivo zip de 340MB):https://sourceforge.net/projects/WR703N/---------------------------------------------------------------------------------------------------------------------------------Estimado lector,Hay muchos
Tira de la energía inteligente basado en Beaglebone Black y OpenHAB

Tira de la energía inteligente basado en Beaglebone Black y OpenHAB

!!!!! Jugar con red (110/220V) es peligroso, por favor, que tenga muy muy cuidado!!!!!!Hay algún poder inteligente tira los diseños existentes basados en "Frambuesa Pi" y dos Arduinos, que se muestra en el cuadro "Diseño antiguo".Este
Configurar su frambuesa Pi

Configurar su frambuesa Pi

¡ Bienvenido a nuestras instrucciones para configurar una nueva Pi de frambuesa! A pesar de lo que parece, un Raspberry Pi es un ordenador; sólo carece de la mayoría de las campanas y silbidos, con que mayoría de los ordenadores viene. Mientras que l
Video llamada en frambuesa Pi 3

Video llamada en frambuesa Pi 3

Desde que salí de mi casa 5 años de mis estudios, me di cuenta de lo difícil que es estar fuera de su familia. Video llamada es una opción para la mayoría de las personas, sin embargo, como mis padres no están en la posición para aprender a usar una
Reproductores de audio 3 en 1 frambuesa Pi con Bluetooth - fácil instalación HiFi Multiroom

Reproductores de audio 3 en 1 frambuesa Pi con Bluetooth - fácil instalación HiFi Multiroom

Nuestro popular entorno Squeezebox en Max2Play se hizo fácilmente conectar varios reproductores de audio y crear un sistema de alta fidelidad inteligente. Con la adición de algunos nuevos plugins increíbles a nuestras imágenes de tarjeta SD, ahora po
Una mesa Arcade DIY con frambuesa Pi

Una mesa Arcade DIY con frambuesa Pi

Juegos con emuladores ha estado en absolutamente un rato, pero nada nos trae la nostalgia del viejo arcade como jugar con un joystick vintage y los botones redondos grandes. Como muchos de nosotros, siempre he soñado ser dueño de una máquina de arcad
Control de humedad CoPiino - unirse a arduino y frambuesa pi

Control de humedad CoPiino - unirse a arduino y frambuesa pi

Recientemente me encontré con un amigo mío. Hablamos de nuestros proyectos recientes donde finalmente me dijo acerca de su sótano que tiene humedad muy alta y no está ese lugar bueno donde quieres ejecutar proyectos.Esto nos hizo pensar en una nueva
'Lite' juego-consola de frambuesa Pi Nin10do

'Lite' juego-consola de frambuesa Pi Nin10do

Bueno, antes de empezar usted puede ver el vídeo para ver qué tipo de consola de juegos que vamos a crear...Es una estación de juegos de frambuesa Pi2 basado en que puedes jugar todos tus juegos favoritos de Mario a GTA y de Monkey Island para corred
ESP8266 + frambuesa Pi Monitor de electricidad

ESP8266 + frambuesa Pi Monitor de electricidad

Yo siempre he estado vigilando mi metros de utilidad en la manera antigua. Primero les escribí en un pequeño libro (sí, soy ese viejo), más tarde escribí una hoja de cálculo y los últimos años estoy utilizando la aplicación para smartphone ACES para
Automatización casera de frambuesa Pi GPIO

Automatización casera de frambuesa Pi GPIO

había oído hablar de los pines GPIO en la frambuesa pi y decidió hacer algo con él. Y con los días de fiesta que viene, sería genial poder encender y apagar la luz pantalla de la web!  Este es un proyecto bastante simple que crea una aplicación web p
Servidor principal Ultimate frambuesa Pi

Servidor principal Ultimate frambuesa Pi

Bienvenido a lector.Sígueme en twitter aquí para proyectos similares; me ayuda con este tweet!Primero por favor Nota: este instructivo se puede hacer en un día, pero un fin de semana sin duda se recomienda.En este instructable espero enseñarle habili