#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#include <WiFi.h>
const int outPin = 7; //Trigger
const int inPin = 8; //Echo
const int ledPin = 13; //Indikator Pakan
const int relay = 12;
char ssid[] = "ISI DENGAN SSID WIFI";
char pass[] = "ISI PASSWORD WIFI";
int status = WL_IDLE_STATUS;
WiFiClient client;
char server[] = "agnosthings.com";
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
void setup() {
Serial.begin(9600);
Wire.begin();
pinMode(outPin, OUTPUT_FAST);
pinMode(outPin, OUTPUT_FAST);
pinMode(ledPin, OUTPUT);
pinMode(relay, OUTPUT);
if(!bmp.begin()){
/* There was a problem detecting the BMP085 ... check your connections */
Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!");
while(1);
}
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
}
delay(10000);
}
void loop(){
//Bagian Sensor Jarak
long duration, inches, cm;
fastDigitalWrite(outPin, LOW);
waitMicros(2);
fastDigitalWrite(outPin, HIGH);
waitMicros(10);
fastDigitalWrite(outPin, LOW);
duration = pulseIn(inPin, HIGH);
// convert the time into a distance
//inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
if (cm>10){
digitalWrite(ledPin, HIGH);
}else{
digitalWrite(ledPin, LOW);
}
/* Serial.println(cm);
Serial.println();*/
/* Get a new sensor event */
sensors_event_t event;
bmp.getEvent(&event);
/* First we get the current temperature from the BMP085 */
float temperature;
bmp.getTemperature(&temperature);
String pakan = "";
pakan+=String(int(cm))+ "."+String(getDecimal(cm));
String stringVal = "";
stringVal+=String(int(temperature))+ "."+String(getDecimal(temperature));
String url_api = "ganti dengan url api dari agnosthings.com ?push=cel={tmpval},cm={value}";
url_api.replace("{tmpval}", stringVal);
url_api.replace("{value}", pakan);
boolean requestStatus = httpRequest(url_api);
if(requestStatus == true)
Serial.println("Sending data success! Suhu " +stringVal +" Pakan " + pakan);
else
Serial.println("Sending data failed!");
Serial.println();
// close any connection before send a new request.
// This will free the socket on the Ethernet shield
client.stop();
if (int(temperature)<28){
digitalWrite(relay, HIGH);
}else{
digitalWrite(relay, LOW);
}
delay(10000);
}
boolean httpRequest(String link) {
// if you get a connection, report back via serial:
Serial.println("Push data to server");
if (client.connect(server, 80)) {
// Make a HTTP request:
client.println("GET " + link + " HTTP/1.0");
client.println("Host: agnosthings.com");
client.println();
return true;
} else {
// You couldn't make the connection
Serial.println("Connection Failed");
client.stop();
return false;
}
}
//function to extract decimal part of float
long getDecimal(float val)
{
int intPart = int(val);
long decPart = 1000*(val-intPart);
if(decPart>0)return(decPart);
else if(decPart<0)return((-1)*decPart);
else if(decPart=0)return(00);
}
void waitMicros(int val){
unsigned long a = micros();
unsigned long b = micros();
while((b-a) < val)
{
b = micros();
if(a>b)
{
break;
}
}
}
long microsecondsToInches(long microseconds){
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds){
return microseconds / 29 / 2;
}