Realtime Push Notification Android dengan NodeMCU
Halo teman – teman semua, pada kesempatan ini DT Production akan memberikan tutorial tentang bagaimana membuat Push Notification yang berjalan di background service smartphone android. dimana pada percobaan kali ini kita akan membuat proyek motion detect menggunakan nodemcu dan sensor pir atau sensor gerak. jadi cara kerja alat ini sangatlah sederhana yaitu ketika sensor mendeteksi adanya pergerakan maka di smartphone kita akan menampilkan push notifikasi secara langsung.
Tentu saja pada proyek kali ini kita akan membuat aplikasi android yang sederhana menggunakan platform Kodular. Kodular merupakan platform untuk kita dapat membuat aplikasi android secara mudah dengan konsep pemrograman puzzle.
Apa saja yang kita butuhkan pada proyek ini ?
- 1pcs NodeMCU V3
- 1pcs Base/Expansion Board NodeMCU v3
- 1pcs Sensor PIR HC-SR501
- 3pcs Kabel Jumper Female to Female
- Adaptor 9v
Teman – teman dapat membeli modul – modul yang akan digunakan pada proyek ini di toko DT Production, dengan pembelian via Tokopedia. silahkan klik tombol berikut.
Part I
Part II
Lampiran
Konfigurasi kontroler dan sensor
File push.php
<?php
if(isset($_POST['app_id'])){
$app_id = $_POST['app_id'];
function sendMessage($id){
$content = array(
"en" => 'XXXXXXXXXXX',
);
$headings = array(
'en' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
);
$fields = array(
'app_id' => $id,
'included_segments' => array('All'),
'data' => array("foo" => "bar"),
'large_icon' =>"ic_launcher_round.png",
'contents' => $content,
'headings' => $headings
);
$fields = json_encode($fields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8',
'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendMessage($app_id);
$return["allresponses"] = $response;
$return = json_encode( $return);
print("\n\nJSON received:\n");
print($return);
print("\n");
}
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "xxxxx";
const char* password = "xxxxxxxxxxxx";
String app_id = "xxxxxxxxxxx";
int sensor = 5;
int val = 0;
boolean state = true;
void setup() {
pinMode(sensor, INPUT);
Serial.begin(9600);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print("Connecting..");
}
Serial.println("Connected");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
val = digitalRead(sensor);
if (val == HIGH && state) {
Serial.println("Terdeteksi Pergerakan!!");
pushNotif();
} else {
Serial.println("Aman");
state = true;
}
}
delay(1000);
}
void pushNotif() {
if (state) {
Serial.println("Start");
HTTPClient http;
http.begin("http://*******/myapps/push.php");
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.POST("app_id=" + app_id);
delay(100);
if (httpCode > 0) {
String payload = http.getString();
Serial.println(payload);
}
state = false;
delay(1000);
http.end();
}
}