Hardware components | ||||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
Software apps and online services | ||||||
![]() |
| |||||
![]() |
| |||||
Hand tools and fabrication machines | ||||||
| ||||||
| ||||||
Dalam pemakaian lampu di setiap rumah jika sesekali lupa mematikan lampu, memang tidak berpengaruh besar dalam biaya listrik karena watt lampu yang kecil, namun akan menjadi masalah biaya jika sering tidak di matikan, mak kami membuat sensor cahaya yang secara otomatis dapat mematikan lampu dan menyalakan lampu, dengan menghubungkan sensor yang terdapat pada lampu dengan internet & smartphone. Sehingga, ibu rumah tangga dapat meminimalisir pengeluaran biaya listrik, dan juga dapat menjaga ketahanan lampu, terutama saat menjelang hari raya idul fitri.
#include <SoftwareSerial.h>
char ssid[] = "Home Sweet Home_plus";
char pass[] = "tidakada";
#define IP "184.106.153.149" //thingspeak.com ip address
String GET = "GET /update?api_key=CWM0UDYOL8RQN6AV&field"; //Write API key
//String READ = "GET /channels/381137/fields/1.json?api_key=AJJERIFP2BNTXEH6&results=2";
SoftwareSerial wifi(11,10);
int lampu = 6;
int hasilSensorLDR;
void setup() {
pinMode (lampu, OUTPUT);
Serial.begin(9600);
wifi.begin(115200);
//dht.begin();
digitalWrite(lampu, LOW);
while (!koneksiESP());
if (!cekKoneksi()) {
konekWifi;
}
}
void loop() {
delay(5000);
hasilSensorLDR=analogRead(0);
Serial.print("LDR : ");
Serial.print(hasilSensorLDR);
delay(200);
if (hasilSensorLDR >= 50 ) {
digitalWrite (lampu, LOW);
delay(100);
Serial.println("");
lampuMati();
//End Thingspeak
} else {
digitalWrite (lampu, HIGH);
Serial.println("");
lampuNyala();
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="wecare.d3ifcool.org.monitoringdatalamp.Main2Activity">
<TextView android:text="@string/count" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:textSize="18sp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:text="Date"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp"
android:textStyle="bold"
tools:text="Date"
/>
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp"
android:textStyle="bold"
tools:text="Date"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:text="Entry Id"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="@color/colorAccent"
tools:text="Entry ID"/>
<TextView
android:id="@+id/email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="@color/colorAccent"
tools:text="Entry ID"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:text="LDR"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textColor="#5d5d5d"
android:textStyle="bold"
tools:text="LDR"/>
<TextView
android:id="@+id/mobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#5d5d5d"
android:textStyle="bold"
tools:text="LDR"/>
</LinearLayout>
</LinearLayout>
bool cekKoneksi() {
wifi.println ("AT+CWJAP?");
delay(1000);
if (wifi.find("No AP")) {
Serial.println("NO Access Point");
return false;
} else if (wifi.find("Error")) {
Serial.println("Error");
return false;}
else {
Serial.println("wifi connected!!");
return true;
}
}
void dcWifi() {
wifi.println("AT+CWQAP");
}
bool koneksiESP() {
Serial.println("Reseting ESP8266");
wifi.println("AT+RST");
delay(2000);
Serial.println("Checking ESP8266");
wifi.println("AT");
delay(3000);
if (wifi.find("OK")) {
Serial.println("Connected to ESP8266");
return true;
}
Serial.println("Not Connected to ESP8266");
return false;
}
void konekWifi() {
String cmd = "AT+CWJAP=";
cmd += "\"";
cmd += ssid;
cmd += "\",";
cmd += "\"";
cmd += pass;
cmd += "\"";
wifi.println(cmd);
delay(5000);
if (wifi.find("OK"))
Serial.println ("Device Connected to wifi");
else
Serial.println ("Device Cannot Connected to wifi");
}
void lampuMati(){
//Start ThingSpeak
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
wifi.println(cmd);
delay(1000);
if (wifi.find("Error")) {
return;
}
else{
Serial.println("AT+CIPSTART Success");
}
cmd = GET;
cmd += "1=";
cmd += hasilSensorLDR;
cmd += "\r\n\r\n";
wifi.print("AT+CIPSEND=");
wifi.println(cmd.length());
delay(6000);
if (wifi.find(">")) {
wifi.print(cmd);
Serial.println("Data sent");
Serial.println("------");
}
else {
Serial.println("AT+CIPSEND Error");
Serial.println("------");
return;
}
}
void lampuNyala(){
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
wifi.println(cmd);
delay(1000);
if (wifi.find("Error")) {
return;
}
else{
Serial.println("AT+CIPSTART Success");
}
cmd = GET;
cmd += "&2=";
cmd += hasilSensorLDR;
cmd += "\r\n\r\n";
wifi.print("AT+CIPSEND=");
wifi.println(cmd.length());
delay(6000);
if (wifi.find(">")) {
wifi.print(cmd);
Serial.println("Data sent");
Serial.println("------");
}
else {
Serial.println("AT+CIPSEND Error");
Serial.println("------");
return;
}
}
package wecare.d3ifcool.org.monitoringdatalamp;
/**
* Created by adeba on 12/10/2017.
*/
import android.util.Log;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
/**
* Created by Ravi Tamada on 01/09/16.
* www.androidhive.info
*/
public class HttpHandler {
private static final String TAG = HttpHandler.class.getSimpleName();
public HttpHandler() {
}
public String makeServiceCall(String reqUrl) {
String response = null;
try {
URL url = new URL(reqUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// read the response
InputStream in = new BufferedInputStream(conn.getInputStream());
response = convertStreamToString(in);
} catch (MalformedURLException e) {
Log.e(TAG, "MalformedURLException: " + e.getMessage());
} catch (ProtocolException e) {
Log.e(TAG, "ProtocolException: " + e.getMessage());
} catch (IOException e) {
Log.e(TAG, "IOException: " + e.getMessage());
} catch (Exception e) {
Log.e(TAG, "Exception: " + e.getMessage());
}
return response;
}
private String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
package wecare.d3ifcool.org.monitoringdatalamp;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
public class LampMatiActivity extends AppCompatActivity {
private String TAG = LampMatiActivity.class.getSimpleName();
private ProgressDialog pDialog;
private ListView lv;
// URL to get contacts JSON
private static String url = "https://thingspeak.com/channels/381137/field/1.json";
ArrayList<HashMap<String, String>> dataList;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) {
case R.id.add:
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
this.finish(); //
return(true);
}
return(super.onOptionsItemSelected(item));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lampu_mati);
dataList = new ArrayList<>();
lv = (ListView) findViewById(R.id.list);
new GetContacts().execute();
}
/**
* Async task class to get json by making HTTP call
*/
private class GetContacts extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(LampMatiActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url);
Log.e(TAG, "Response from url: " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
JSONArray feeds = jsonObj.getJSONArray("feeds");
// looping through All Contacts
for (int i = 0; i < feeds.length(); i++) {
JSONObject c = feeds.getJSONObject(i);
String created_at = c.getString("created_at");
String entry_id = c.getString("entry_id");
String field1 = c.getString("field1");
/* String address = c.getString("address");
String gender = c.getString("gender");
// Phone node is JSON Object
JSONObject phone = c.getJSONObject("phone");
String mobile = phone.getString("mobile");
String home = phone.getString("home");
String office = phone.getString("office");*/
// tmp hash map for single contact
HashMap<String, String> contact = new HashMap<>();
// adding each child node to HashMap key => value
contact.put("created_at", created_at);
contact.put("entry_id", entry_id);
contact.put("field1", field1);
// contact.put("mobile", mobile);
// adding contact to contact list
dataList.add(contact);
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
} else {
Log.e(TAG, "Couldn't get json from server.");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
LampMatiActivity.this, dataList,
R.layout.list_item, new String[]{"created_at", "entry_id",
"field1"}, new int[]{R.id.name,
R.id.email, R.id.mobile});
lv.setAdapter(adapter);
}
}
}
package wecare.d3ifcool.org.monitoringdatalamp;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
public class LampNyalaActivity extends AppCompatActivity {
private String TAG = LampMatiActivity.class.getSimpleName();
private ProgressDialog pDialog;
private ListView lv;
// URL to get contacts JSON
private static String url = "https://thingspeak.com/channels/381137/field/2.json";
ArrayList<HashMap<String, String>> dataList;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) {
case R.id.add:
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
this.finish(); //
return(true);
}
return(super.onOptionsItemSelected(item));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lampu_nyala);
dataList = new ArrayList<>();
lv = (ListView) findViewById(R.id.list);
new LampNyalaActivity.GetContacts().execute();
}
/**
* Async task class to get json by making HTTP call
*/
private class GetContacts extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(LampNyalaActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url);
Log.e(TAG, "Response from url: " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
JSONArray feeds = jsonObj.getJSONArray("feeds");
// looping through All Contacts
for (int i = 0; i < feeds.length(); i++) {
JSONObject c = feeds.getJSONObject(i);
String created_at = c.getString("created_at");
String entry_id = c.getString("entry_id");
String field2 = c.getString("field2");
/* String address = c.getString("address");
String gender = c.getString("gender");
// Phone node is JSON Object
JSONObject phone = c.getJSONObject("phone");
String mobile = phone.getString("mobile");
String home = phone.getString("home");
String office = phone.getString("office");*/
// tmp hash map for single contact
HashMap<String, String> contact = new HashMap<>();
// adding each child node to HashMap key => value
contact.put("created_at", created_at);
contact.put("entry_id", entry_id);
contact.put("field2", field2);
// contact.put("mobile", mobile);
// adding contact to contact list
dataList.add(contact);
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
} else {
Log.e(TAG, "Couldn't get json from server.");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
LampNyalaActivity.this, dataList,
R.layout.list_item, new String[]{"created_at", "entry_id",
"field2"}, new int[]{R.id.name,
R.id.email, R.id.mobile});
lv.setAdapter(adapter);
}
}
}
package wecare.d3ifcool.org.monitoringdatalamp;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void nyala(View view) {
Intent intent = new Intent(MainActivity.this,LampNyalaActivity.class);
startActivity(intent);
}
public void mati(View view) {
Intent intent = new Intent(MainActivity.this,LampMatiActivity.class);
startActivity(intent);
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="wecare.d3ifcool.org.monitoringdatalamp.LampMatiActivity">
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_lamp_off"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="wecare.d3ifcool.org.monitoringdatalamp.LampNyalaActivity">
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="wecare.d3ifcool.org.monitoringdatalamp.MainActivity"
android:background="@drawable/background">
<Button
android:background="@drawable/nyala"
android:layout_width="300dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="196dp"
android:id="@+id/button"
android:onClick="nyala"/>
<Button
android:background="@drawable/mati"
android:layout_width="300dp"
android:layout_height="50dp"
android:layout_alignTop="@+id/button"
android:layout_alignLeft="@+id/button"
android:layout_alignStart="@+id/button"
android:layout_marginTop="78dp"
android:id="@+id/button2"
android:onClick="mati"/>
</RelativeLayout>





_ztBMuBhMHo.jpg?auto=compress%2Cformat&w=48&h=48&fit=fill&bg=ffffff)







Comments