Raspberry Pi Smart mål (4 / 6 steg)
Steg 4: kod
#! / bin/bash
#/etc/init.d/target
exportera hem
fallet "$1" i
Start)
om [! -e "/ dev/ttyS1"]; sedan
ln/dev/ttyAMA0/dev/ttyS1
Fi
/Home/PI/LCD.py "ifconfig wlan2 | grep inet | awk '{print $2}' | sed's / addr: / /''
Java -cp.: / hem/pi: / home/pi/lib / * målet >> /home/pi/target.log &
/Home/PI/shutdown-Listener.py &
;;
Stop)
LCD_PID ='ps auxwww | grep mål | huvud 1 | awk "{skriva ut $2}''
Kill $LCD_PID
;;
*)
ECHO "användning: /etc/init.d/target {start|stop}"
utgång 1
;;
ESAC
utgång 0
Avstängning skript
#! / usr/bin/env python
från att importera sömn
importera os
importera RPi.GPIO som GPIO
GPIO.setmode (GPIO. BCM)
OFF_SWITCH = 23
GPIO.setup (OFF_SWITCH, GPIO. I)
samtidigt sant:
om (GPIO.input(23) == False):
OS.system ('/ home/pi/lcd.py "stänger ned. Hejdå :)"')
OS.system ("shutdown -h nu")
Break
Sleep(1);
skriva ut "Stänga ner"
LCD-Python-skript för körning ioBridge LCD skärmen
#! / usr/bin/env python
importera följetong
importera sträng
importera sys
testa = följetong. Serial("/dev/ttyAMA0",9600)
test.Open()
linje = sys.argv[1]
byte = chr(0xFE)
försök:
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)
Förutom KeyboardInterrupt:
passera # rensning här
test.Close()
Nu här är Java källkod. Observera att jag använder twiiter4j bibliotek och 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;
importera twitter4j. StatusUpdate;
importera twitter4j. Twitter;
importera twitter4j. TwitterException;
importera twitter4j. TwitterFactory;
import twitter4j.conf.ConfigurationBuilder;
import java.util.Random;
allmän klass mål {
statiska OutputStream utgång;
statiska GpioGateway gpio;
statiska SerialPort hamn.
statiska CommPortIdentifier portId;
statiska HttpClient httpclient = nya DefaultHttpClient();
statisk String replyURL;
statisk String meddelande;
statisk boolean redo = sant;
statisk String dropcam = "https://nexusapi.dropcam.com/get_image?width=800 & uuid = XXXX";
statisk String osnImg;
offentliga statisk datum nu;
statisk Random generator = nya Random();
offentliga statisk String [] meddelanden = {
"Lucky! Ser ut som du kommer att ta mig hem ikväll! ",
"Det lönade sig att stoppa genom OTN loungen ikväll.",
"Ser ut som någon har tränat.",
"Inte illa för första försöket. Nu gå vidare och skryta för dina vänner. ",
"Jag älskar att umgås på OTN Lounge, men det ser ut som du kommer att ta mig hem ikväll!",
"Det var trevligt. Nej gå och berätta för dina vänner att sluta med OTN loungen. ",
"Jag älskar att skrika och flyga på OTN Lounge.",
"Rosor är röda och Oracle alltför. Nu du kan ta mig hem också. ",
"Jag vill bara flyga.",
"Tack för besöket. Ser ut som du hade tur ikväll. ",
"Jag älskar att skrika och flyga på OTN Lounge."
};
offentliga statisk void main (String [] args) kastar undantag {
AddShutdownHookSample döda = nya AddShutdownHookSample();
kill.attachShutDownHook();
försök {
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 = nya GpioGatewayImpl();
gpio.unexport(Boardpin.PIN11_GPIO17);
gpio.export(Boardpin.PIN11_GPIO17);
gpio.setDirection (Boardpin.PIN11_GPIO17, Direction.IN);
medan (sant) {
Brightness("9");
förloppsindikatorförekomstens;
skriva ut ("klar");
delayBacklight("0",5);
int jag = 0;
ta bort negation!
medan (! gpio.getValue(Boardpin.PIN11_GPIO17)) {
Jag = 1;
}
om (klar) {
System.out.println("Start");
redo = false;
int rnd = generator.nextInt(10);
Processen proc = Runtime.getRuntime () .exec (nya String [] {"/ usr/bin/mpg321", "-q","/home/pi/"+rnd+".mp3"});
Brightness("9");
förloppsindikatorförekomstens;
skriva ut ("Grattis");
Logga in
downloadPicture();
uploadPicture(messages[rnd]);
förloppsindikatorförekomstens;
delayBacklight("0",5);
Thread.Sleep (2 * 5000);
redo = sant;
System.out.println("End");
}
}
} fånga (undantag e) {
System.out.println(e.toString());
}
}
public static void downloadPicture() kastar IOException {
nu = nya Date();
String formatDate = ny SimpleDateFormat("MMddyyyy-hhmmss").format(now);
osnImg = "OTN-" + formatDate + ".jpeg";
HttpGet httpget = ny HttpGet(dropcam);
HttpResponse svar = httpclient.execute(httpget);
HttpEntity enhet = response.getEntity();
System.out.println ("downloadPicture:" + response.getStatusLine());
om (enhet! = null) {
byte [] byte = EntityUtils.toByteArray(entity);
Fil = ny fil ("/ var/www /" + osnImg);
FileOutputStream fos = nya FileOutputStream(file);
FoS.write(bytes);
FoS.Close();
}
EntityUtils.consume(entity);
}
public static void uploadPicture(String message) kastar TwitterException {
ConfigurationBuilder cb = nya ConfigurationBuilder();
cb.setOAuthConsumerKey("XXXX");
cb.setOAuthConsumerSecret("XXXX");
cb.setOAuthAccessToken("XXXX");
cb.setOAuthAccessTokenSecret("XXXX");
StatusUpdate status = nya StatusUpdate(message);
Fil bildfil = ny fil ("/ var/www /" + osnImg);
status.setMedia(imageFile);
TwitterFactory tf = nya TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
försök {
twitter.updateStatus(status);
} fånga (undantaget ex) {
ex.printStackTrace();
}
}
offentliga statisk void delayBacklight (String nivå, int fördröjning) kastar undantag {
startCommand();
output.write("T".GetBytes());
output.write(level.GetBytes());
output.write(delay);
}
offentliga statisk void ljusstyrka (sträng nivå) kastar undantag {
startCommand();
output.write("B".GetBytes());
output.write(level.GetBytes());
}
offentliga statisk void print (sträng meddelande) kastar undantag {
output.write(Message.GetBytes());
}
public static void förloppsindikatorförekomstens kastar undantag {
startCommand();
output.write("C".GetBytes());
}
public static void startCommand() kastar undantag {
output.write(254);
}
}
http://www.javabeat.net/2010/11/runtime-addshutdownhook/
klass AddShutdownHookSample {
void attachShutDownHook() {
Runtime.getRuntime () .addShutdownHook (nya Thread() {
public void run() {
försök {
System.out.println ("Shuting ner mål");
Fil = ny fil ("/ var/lock/LCK... ttyS1 ");
Lcd.httpclient.getConnectionManager().shutdown();
IF(file.Delete()) {
System.out.println(file.getName() + "tas bort!");
}
} fånga (undantag e) {
e.printStackTrace();
}
}
});
System.out.println ("Shut Down krok fäst.");
}
}