Selasa, 20 Agustus 2019

ZigBee

Zigbee Setup
https://www.digi.com/products/iot-platform/xctu


Ubah pengaturan berikut, kemudian klik Write


Transmitter 

const int potPin= 34; //Pot at Arduino A0 pin
int value ; //Value from pot
void setup() {
//Start the serial communication
Serial.begin(9600); //Baud rate must be the same as is on xBeemodule
 }
void loop() {
//Read the analog value from pot and store it to "value" variable
value = analogRead(potPin);
//Map the analog value to pwm value
value = map (value, 0, 1023, 0, 255);
//Send the message:
Serial.print('<');   //Starting symbol
Serial.print(value);//Value from 0 to 255
Serial.println('>');//Ending symbol
}


My SQL

Contoh Skenario IoT (SQL & NON-SQL)
thema : School


dirancang oleh kelompok 

LoRa (Long Range)

Comparison :
Wiring :

Import Library LoRa
 • Open Arduino IDE dan bukaSketch > Include Library > Manage Libraries dan cari LoRa by Sandeep Mistry version 0.3.0 dan klikinstall

Transceiver

#include <SPI.h> 
#include <LoRa.h>

//define the pins used by the transceiver module 
#define ss5
#define rst14 
#define dio0 2

intcounter = 0;
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println("LoRaSender");
//setup LoRatransceiver module
LoRa.setPins(ss, rst, dio0);
while (!LoRa.begin(433E6)) {
Serial.println(".");
delay(500); }
// Change sync word (0xF3) to match the receiver
// The sync word assures you don't get LoRamessages from other LoRatransceivers
// ranges from 0-0xFF
LoRa.setSyncWord(0xF3);
Serial.println("LoRaInitializing OK!");
}
void loop() {
Serial.print("Sending packet: ");
erial.println(counter);
//Send LoRapacket to receiver
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();

counter++;

delay(10000);
}


REST API

Application Programming Interface (API) : is a set of routines, protocols, and tools for building software applications

Beberapa Jenis API :
• Representational State Transfer (REST)
• Remote Procedure Calls (RPC)
• Simple Object Access Protocol (SOAP)

REST
• REST kependekan dari REpresentational State Transfer
The REST architectural style describes six constraints. These constraints, applied to the architecture, were originally communicated by Roy Fielding in his doctoral dissertation (see https://www.ics.uci.edu/~fielding/pubs/dissertation/ rest_arch_style.htm) and defines the basis of RESTfulstyle. 

The six constraints are: 
• Uniform Interface 
• Stateless 
• Cacheable 
• Client-Server 
• Layered System 
• Code on Demand (optional)

  •  Generality – language agnostic 
  • Familiarity 
  • Scalability 
  • Segmentation 
  • Speed 
  • Security 
  • Encapsulation 

REST API
• Berjalan di atas protokol HTTP 
• Menggunakan JSON atau XML untuk mengirimkan data

JSON
• Better Language Support 
• Lightweight (much less code than XML)

PRAKTEK :
Database : xampp diaktifkan > Apache & my SQL

Buka localhost > phpmyadmin > input > choose File (sebelumnya download dahulu folder ServerRest
lalu File ServerRest dicut dan dipindahkan di xampp > htdocs > ServerRest

Buka postman isikan URL si localhost (http://127.0.0.1/serverrest/index.php/kontak)

Pilih menu Body selsct x-www-form-urlencoded
Dsini kita bisa pilih GET, POST, DELETE, ect...
untuk menjalankan fungsi lain harus ditambahin source code unutk DELETE, PUT, ect..
dengan membuka open folfer di visual code application > (kontak.php)


untuk mempelajari lebih detail dapat dilihat di



MQTT

Publish / Subscribe



Publisher and Subscriber

• Publisher: – client yang melakukan publish terhadap suatu topic – client ini mengirimkan message dengan topic tertentu :
Subscriber: – client yang melakukan subscribe terhadap suatu topic – client ini akan menerima semua message dalam topic tersebut
• Antara publisher dan subscriber tidak saling mengenal (tidak ada hubungan langsung)


Instalasi python publisher
 Sudah memiliki compiler python
• Jalankan program command prompt sebagai admin 
• Pindah ke direktori python compiler 
• Jalankan: cd Scripts Akan diperoleh tampilan
                                    
Instalasi python publisher
Jalankan: pip install paho-mqtt (untuk versi dibawah 3)atau pip3 install paho-mqtt
(untuk versi diatas 3).
Akan diperoleh:
                                     

 Kode Python


                                         

 Keluaran python subscriber


Kode python untuk mengirim data ke thingsboard



- Download mosquitto
- Buka cloud MQTT > Login

- Buka cmd, pastikan sudah terinstall
dengan buka sesuai tempat moquitto

- Mosquitto_Sub -h localhost -t house/# -c3 -d

Pub : mosquitto-sub -t house/temp -h 192.168.43.114  (ini merupakan based on IP) -m
         enter

Sub : mosquitto -sub -t house/# -h 192.168.43.114 -c 3 -d
         enter



sumber : modul DTS 2019 




Minggu, 11 Agustus 2019

HTPP in Thingspeakwith ESP 32

Pada percobaan kali ini, kita akan mensimulasikan project dengan menampilkan suhu ruangan dengan menggunakan dengan ESP 32.
dalam hal ini untuk menampilkan suhu ruangan akan menggunakan interface di Thingspeak https://thingspeak.com. tentunya harus terintegrasi ke Arduino IDE


code :

#include <WiFi.h>

String apiKey = "MDHVBTVAMANPPZ66";                  //  Enter your Write API key from ThingSpeak
const char *ssid =  "Tara";                                    // replace with your wifi ssid and wpa2 key
const char *pass =  "12345";
const char* server = "api.thingspeak.com";

WiFiClient client;


void setup()
{
  Serial.begin(115200);
  delay(10);
  Serial.println("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
}

void loop()
{

  int h = 0;
  float t = 0;

  h = random(1, 10);
  t = ((random(1 - 50) - 32) / 1.8);          //changing temperature parameter to celsius
  if (client.connect(server, 80))                                //   "184.106.153.149" or api.thingspeak.com
  {
    String postStr = apiKey;
    postStr += "&field1=";
    postStr += String(h);
    postStr += "&field2=";
    postStr += String(t);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);

    Serial.println(postStr);

    Serial.print("Hall: ");
    Serial.println(h);
    Serial.print("Temperature:");
    Serial.print(t);
    Serial.println(" C");

    Serial.println("%. Send to Thingspeak.");
  }
  client.stop();
  Serial.println("Waiting...");
  delay(10000);


}

Thingspeak adalah : adalah platform Internet of Things yang dapat digunakan secara gratis untuk menampilkan chart suatu peralatan IoT

GUI :


Terlebih dahulu, kita harus memiliki account thingspeak untuk dapat login



 atur GUI pada channel settings untuk menampilkan output yang diinginkan 


setelah disetting, maka copy-paste kode API pada thingspeak


maka layer utama akan menjadi seperti dibawah ini :

Rabu, 07 Agustus 2019

WIFI with ESP32

Percobaan ini kita merancang pendeteksi suhu ruangan dengan menggunakan DHT 1. Sensor ini selain dapat mengukur suhu dapat pula mengukur kelembaman ruangan. Diharapkan dalam simulasi ini, kita dapat melihat outputnya berupa hasil pengukuran suhu yang dideteksi oleh DHT 11 ini dengan menampilkan di Web Server. Sehingga dalam hal ini ESP32 harus terkoneksi dengan jaringan WIFI. Ketika uploading selesai maka diserial monitor akan ditampilkan IP Address dari Web Server tersebut. Selamat Mencoba!

Perangkat yang dibutuhkan :

  • ESP32 dengan kabel USB
  • DHT 11
  • 4 buah Kabel Jumper 
  • 1 buah Motherboard
Gambar Rangkaian : 


Code : 

#include <WiFi.h>
#include <WebServer.h>
#include <DHT.h>

// Uncomment one of the lines below for whatever DHT sensor type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

/*Put your SSID & Password*/
const char* ssid = "Sandralan";  // Enter SSID here
const char* password = "kustianto";  //Enter Password here

WebServer server(80);

// DHT Sensor
uint8_t DHTPin = 35; 
               
// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);                

float Temperature;
float Humidity;

void setup() {
  Serial.begin(115200);
  delay(100);
  
  pinMode(DHTPin, INPUT);

  dht.begin();              

  Serial.println("Connecting to ");
  Serial.println(ssid);

  //connect to your local wi-fi network
  WiFi.begin(ssid, password);

  //check wi-fi is connected to wi-fi network
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  
  Serial.println("");
  Serial.println("WiFi connected..!");
  Serial.print("Got IP: ");  Serial.println(WiFi.localIP());

  server.on("/", handle_OnConnect);
  server.onNotFound(handle_NotFound);

  server.begin();
  Serial.println("HTTP server started");

}

void loop() {
  server.handleClient();
  
}

void handle_OnConnect() {

 Temperature = dht.readTemperature(); // Gets the values of the temperature
  Humidity = dht.readHumidity(); // Gets the values of the humidity 
  server.send(200, "text/html", SendHTML(Temperature,Humidity)); 
}

void handle_NotFound(){
  server.send(404, "text/plain", "Not found");
}

String SendHTML(float Temperaturestat,float Humiditystat){
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>ESP32 Weather Report</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
  ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<div id=\"webpage\">\n";
  ptr +="<h1>ESP32 Weather Report</h1>\n";
  
  ptr +="<p>Temperature: ";
  ptr +=(int)Temperaturestat;
  ptr +="°C</p>";
  ptr +="<p>Humidity: ";
  ptr +=(int)Humiditystat;
  ptr +="%</p>";
  
  ptr +="</div>\n";
  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}