Nge-tweet Suhu dan Kelembapan Udara dengan Twitter Bot di Intel® Galileo | Part-3
Lanjutan dari Nge-tweet Suhu dan Kelembapan Udara dengan Twitter Bot di Intel® Galileo Part-2
- Selanjutnya beralihlah ke tab Permissions lalu ubah menjadi Read, Write and Access direct messages lalu klik Update Settings.
- Kita telah selesai membuat aplikasi di Twitter kita, kini saatnya kita membuat script bot yang akan kita jalankan di Intel® Galileo. Di tutorial ini mengunakan script yang digunakan adalah python. Sebenarnya selain python kita juga bisa menggunakan program Arduino langsung dengan menggunakan library Twitter, namun menurut kami menggunakan script python adalah cara yang termudah dan tercepat. Oke mari kita buat script nya, pada Intel® Galileo eksekusi perintah dibawah ini:
nano tweet.py
Perintah tersebut adalah untuk membuat file teks baru dengan nama tweet.py, sedangkan tipe berkas .py merupakan ekstensi untuk script python. Selanjutnya tempelkan script berikut ini:import sys
from twython import Twython
CONSUMER_KEY = '<CONSUMER_KEY>'
CONSUMER_SECRET = '<CONSUMER_SECRET>'
ACCESS_KEY = '<ACCESS_TOKEN>'
ACCESS_SECRET = '<ACCESS_TOKEN_SECRET>'
twitter = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)
twitter.update_status(status=sys.argv[1][:140])
Ganti dan sesuaikan keempat data token script diatas dengan token yang sudah kamu salin tadi.
Kemudian simpan berkas script tersebut dengan menekan tombol Ctrl+O. Lalu exit Ctrl+X. - Script python sudah kita buat, oh ya kenapa kita tidak mencoba script kita ini? Ketik perintah dibawah ini:
python tweet.py "Hai semua"
Lihatlah beranda twitter kamu dan voila:
- Oke lanjut, sekarang kita akan bermain di sisi Arduino nya, namun sebelum memulai coding perlu diingat bahwa ketika Intel® Galileo kamu dihubungkan ke PC, maka akan terdeteksi sebagai 2 piranti sekaligus yaitu Mass Storage dan CDC Serial karena kita menggunakan OS Image versi Intel IoT DevKit. Kita perlu untuk meng-install driver CDC Serial ini dimana akan kita perlukan untuk men-upload program Arduino kita ke Intel® Galileo. Berikut adalah tampilan device manager yang belum mengenali CDC Serial:
Tidak perlu repot mencari driver dan mengunduhnya dari internet karena driver CDC Serial sudah tersimpan di penyimpanan Mass Storage Intel® Galileo ini sendiri. File driver ini terletak di subdirektori win-driver dengan nama berkas iotdk-serial-external.zip di Mass Storage Intel® Galileo kamu. Ekstrak file tersebut di suatu tempat di komputer.
- Buka device manager lalu klik kanan pada CDC Serial → Update Driver Software → Browse my computer for driver software → Let me pick from a list of device drivers on my computer → Show All Devices → Next → Have disk... . Kemudian lokasikan file driver yang sudah kamu ekstrak tadi.
- Seketika itu Intel® Galileo kamu akan terdeteksi sebagai Intel IoT Dev Kit Serial.
- Saatnya buka IDE Arduino kamu, ubah pengaturan Board menjadi Intel® Galileo sesuai Gen milik kamu dan sesuaikan pula Serial Port nya dengan port device Intel IoT Dev Kit Serial.
- Berikut kami sediakan source code nya, silakan copy dan paste dibawah ini, mudah bukan?
#include <stdio.h>
#include <stdlib.h>
void setup() {
char detectSensorTry = 3;
char testCmd = 0;
// Open serial communications and wait for port to open:
Serial.begin(9600); // Koneksi Intel Galileo
Serial1.begin(38400); // Koneksi serial ke DT-Sense
Serial.println("Intel® Galileo Temperature & Humidity Monitoringn");
Serial.println("Detecting DT-Sense Temperature & Humidity");
delay(1000);
Serial1.readString();
Serial1.write(testCmd);
while (Serial1.available() < 2) {
if (detectSensorTry <= 0) {
Serial.println("Sensor not responding...");
while (1);
}
detectSensorTry--;
delay(200);
}
Serial.println("Sensor OK");
}
void loop() {
char cmd[300];
sprintf(cmd,
"python /home/root/tweet.py %cDigiWare TwyBot.nnTemperature: %.2f "
"degree CnHumidity: %.2f %c%c",'"',
getTemperature_ser(),getHumidity_ser(),'%','"');
Serial.println("Executing command:");
system(cmd);
delay(300000);
}float getTemperature_ser()
{
char sendCmdTry = 3;
float temp;
while (sendCmdTry) {
char readTry = 3;
char cmd = 0;
Serial1.readString();
Serial1.write(cmd);
while (readTry) {
if (Serial1.available() < 2) {
readTry--;
}
else
break;
delay(10);
}
if (Serial1.available() >= 2) {
char msb = Serial1.read();
temp = (((float)((msb << 8) | (Serial1.read()))) - 400.0f) / 10.0f;
return temp;
}
sendCmdTry--;
delay(10);
}
return 0.0f;
}
float getHumidity_ser()
{
char sendCmdTry = 3;
float rh;
while (sendCmdTry) {
char readTry = 3;
char cmd = 2;
Serial1.readString();
Serial1.write(cmd);
while (readTry) {
if (Serial1.available() < 2) {
readTry--;
}
else
break;
delay(10);
}
if (Serial1.available() >= 2) {
char msb = Serial1.read();
rh = (((float)((msb << 8) | (Serial1.read())))) / 10.0f;
return rh;
}
sendCmdTry--;
delay(10);
}
return 0.0f;
} - Cobalah untuk upload program tersebut. Jika berhasil, Intel® Galileo kamu akan mulai nge-tweet:
Intel® Galileo kamu akan nge-tweet tiap menitnya, kamu dapat mengubahnya dengan mengganti parameter fungsi delay() pada rutin loop() di program Arduino nya. Atau kamu juga bisa memanfaatkan fungsi millis() untuk pewaktuan yang lebih presisi dan lebih lama. Oh iya, kenapa kamu tidak mencoba untuk memanfaatkan RTC pada Intel® Galileo kamu? Nanti kita dapat menambahkan data waktu real-time pada tweet kita. Tunggu sebentar, kita juga bisa membuat Intel® Galileo kita nge-tweet hanya pada saat kita meng-tweet-kan suatu perintah ketika kita di jalan melalui smartphone kita. Feel free to explore!!
Selamat bertemu di artikel selanjutnya dan selamat berkreasi!!