import twitter4j.conf.*;
import twitter4j.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import java.util.*;
import twitter4j.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import java.util.*;
Twitter twitter;
String tweetMessage;
String directMessage;
String receiver = " @hi_im_lukas";
String tweetMessage;
String directMessage;
String receiver = " @hi_im_lukas";
int boundary = 600;
int moisture;
int savedTime;
int timeFrame;
int days;
int hours;
boolean firsttweet;
boolean wet; //low boundary of what counts as "wet"
boolean lastState; //0 = dry, 1 = wet
float timePassed;
float change;
int moisture;
int savedTime;
int timeFrame;
int days;
int hours;
boolean firsttweet;
boolean wet; //low boundary of what counts as "wet"
boolean lastState; //0 = dry, 1 = wet
float timePassed;
float change;
import processing.serial.*;
Serial myPort; // Create object from Serial class
String inputString; // Data received from the serial port
int val;
Serial myPort; // Create object from Serial class
String inputString; // Data received from the serial port
int val;
void setup() {
twitterConfiguration();
tweetMessage = "test";
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
reset();
}
void draw() {
if ( myPort.available() > 0) {
inputString = myPort.readStringUntil('\n');
if (inputString!=null) {
inputString=trim(inputString);
moisture=int(inputString);
}
}
if (moisture > boundary) {
wet = true;
} else if (moisture < boundary) {
wet = false;
}
if (millis() > 5000) {
if (millis() < 10000) {
if (!firsttweet) {
firstTweet();
}
if (!wet) {
//getNewImage();
int difference = (millis() - savedTime);
float timePassed = difference/3600000;
if (difference > timeFrame) {
if (firsttweet) {
checkState();
getTweetMessage();
tweet(tweetMessage);
//the next tweets are reminders to water the plant, rather than the initial warning
} else if (!firsttweet) {
firstTweet();
}
savedTime = millis();
lastState = false;
}
} else if (wet) {
lastState = true;
if (change == 1) {
getTweetMessage();
tweet(tweetMessage);
}
}
}
//println(moisture + " " + wet);
}
}
void reset() {
savedTime = millis();
timeFrame = 7200000;
//(7200000 is 2 hours, default)
timePassed = 0;
}
if ( myPort.available() > 0) {
inputString = myPort.readStringUntil('\n');
if (inputString!=null) {
inputString=trim(inputString);
moisture=int(inputString);
}
}
if (moisture > boundary) {
wet = true;
} else if (moisture < boundary) {
wet = false;
}
if (millis() > 5000) {
if (millis() < 10000) {
if (!firsttweet) {
firstTweet();
}
if (!wet) {
//getNewImage();
int difference = (millis() - savedTime);
float timePassed = difference/3600000;
if (difference > timeFrame) {
if (firsttweet) {
checkState();
getTweetMessage();
tweet(tweetMessage);
//the next tweets are reminders to water the plant, rather than the initial warning
} else if (!firsttweet) {
firstTweet();
}
savedTime = millis();
lastState = false;
}
} else if (wet) {
lastState = true;
if (change == 1) {
getTweetMessage();
tweet(tweetMessage);
}
}
}
//println(moisture + " " + wet);
}
}
void reset() {
savedTime = millis();
timeFrame = 7200000;
//(7200000 is 2 hours, default)
timePassed = 0;
}
void firstTweet() {
if (wet) {
tweetMessage = "Hey" + receiver + "! I've come online at " + year() + "-" + month() + "-" + day() + " " + hour() + ":" + minute() + ". Currently, I don't need to be watered!";
} else if (!wet) {
tweetMessage = "Hey" + receiver + "! I've come online at " + year() + "-" + month() + "-" + day() + " " + hour() + ":" + minute() + ". Seems like I need to be watered soon!";
}
tweet(tweetMessage);
firsttweet = true;
int lstate = int(wet);
lastState = boolean(lstate);
}
if (wet) {
tweetMessage = "Hey" + receiver + "! I've come online at " + year() + "-" + month() + "-" + day() + " " + hour() + ":" + minute() + ". Currently, I don't need to be watered!";
} else if (!wet) {
tweetMessage = "Hey" + receiver + "! I've come online at " + year() + "-" + month() + "-" + day() + " " + hour() + ":" + minute() + ". Seems like I need to be watered soon!";
}
tweet(tweetMessage);
firsttweet = true;
int lstate = int(wet);
lastState = boolean(lstate);
}
void getTweetMessage() {
if (wet) {
if (change == 0) {
tweetMessage = "Thanks to " + receiver + ", I don't need to be watered right now!";
} else if (change == 1) {
tweetMessage = "Thanks for watering me, " + receiver;
reset();
}
} else if (!wet) {
if (change == 0) {
tweetMessage = "Hey, " + receiver + ", I haven't been watered in" + timePassed + "hours!";
} else if (change == -1) {
tweetMessage = "Oh no! I've dried out!" + receiver + ", could you water me please?";
reset();
}
}
}
if (wet) {
if (change == 0) {
tweetMessage = "Thanks to " + receiver + ", I don't need to be watered right now!";
} else if (change == 1) {
tweetMessage = "Thanks for watering me, " + receiver;
reset();
}
} else if (!wet) {
if (change == 0) {
tweetMessage = "Hey, " + receiver + ", I haven't been watered in" + timePassed + "hours!";
} else if (change == -1) {
tweetMessage = "Oh no! I've dried out!" + receiver + ", could you water me please?";
reset();
}
}
}
void checkState() {
if (wet) {
if (lastState) {
change = 0;
} else if (!lastState) {
change = 1;
}
} else if (!wet) {
if (lastState) {
change = -1;
} else if (!lastState) {
change = 0;
}
}
}
if (wet) {
if (lastState) {
change = 0;
} else if (!lastState) {
change = 1;
}
} else if (!wet) {
if (lastState) {
change = -1;
} else if (!lastState) {
change = 0;
}
}
}
void tweet(String tweetMessage) {
try {
Status status = twitter.updateStatus(tweetMessage);
println("Status updated to [" + status.getText() + "].");
}
catch (TwitterException te) {
System.out.println("Error: "+ te.getMessage());
}
}
try {
Status status = twitter.updateStatus(tweetMessage);
println("Status updated to [" + status.getText() + "].");
}
catch (TwitterException te) {
System.out.println("Error: "+ te.getMessage());
}
}
void directMessage(String _reveiver, String _directMessage) {
try {
twitter.sendDirectMessage(_reveiver, _directMessage);
println("Direct message sent");
}
catch (TwitterException te) {
System.out.println("Error: "+ te.getMessage());
}
}
try {
twitter.sendDirectMessage(_reveiver, _directMessage);
println("Direct message sent");
}
catch (TwitterException te) {
System.out.println("Error: "+ te.getMessage());
}
}
void twitterConfiguration() {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("");
cb.setOAuthConsumerSecret("");
cb.setOAuthAccessToken("");
cb.setOAuthAccessTokenSecret("");
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
}
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("");
cb.setOAuthConsumerSecret("");
cb.setOAuthAccessToken("");
cb.setOAuthAccessTokenSecret("");
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
}
void keyPressed() {
if (key == 't' || key =='T') {
tweet(tweetMessage);
}
if (key == 'd' || key =='D') {
directMessage(receiver, directMessage);
}
}
if (key == 't' || key =='T') {
tweet(tweetMessage);
}
if (key == 'd' || key =='D') {
directMessage(receiver, directMessage);
}
}
