Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Data Science

    Mengulik Digitalisasi data statistik dengan bantuan python untuk pemanfaatan di bidang transportasi, kesehatan, keuangan dan masih banyak lagi

  • Artificial Intelligence - Pengenalan Object

    Menghadirkan pemanfaatan AI dengan praktek-praktek yang mudah diikuti - cocok untuk mahasiswa yang mencari ide tugas akhir

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label raspberry pi. Tampilkan semua postingan
Tampilkan postingan dengan label raspberry pi. Tampilkan semua postingan

Kamis, 21 Mei 2020

[IOT Ternyata Mudah] GeoPy Sebagai Pengolah Data GIS Paling Sederhana


Setelah berhasil menjadikan Raspberry Pi Zero sebagai broker MQTT Publik saya jadi berpikir untuk melihat resource yg dihabiskan oleh mosquitto pada komputer kecil ini. Dan ternyata masih banyak ruang tersedia untuk pengembangan lainnya , ini tidak berlebihan karena setelah saya kerjakan proyek data logger menggunakan mongoDB seperti yang kita bahas terdahulu disini http://www.aisi555.com/2019/10/iot-menyimpan-data-sensor-lewat-nbiot.html , terasa masih ringan saja bahkan bisa sampai sukses mengirim ke database di cloud.



Data GPS yang alat saya kirimkan melalui MQTT dapat di olah selanjutnya oleh python dan aplikasi GIS lanjutan pada mongoDB atlas. Apakah Raspberry Pi mampu mengolah data Geo menjadi pelaporan seperti gambar diatas ? Mungkin jalan masih jauh kearah sana karena keterbatasan kemampuan tukang solder ini. Lalu paling tidak, saya berkeinginan agar data GPS yg saya punya dapat disimpan menjadi data nama point terdekat atau alamat dari koordinat GPS nya, dan akan saya coba menggunakan kemampuan raspberry pi. Script yg saya bayangkan akan menunjukkan koordinat gambar dibawah ini sesuai dengan nama titik nya dan dapat dilakukan oleh komputer kecil Raspberry Pi Zero.




Langkah pertama adalah mencari plugin dari PYTHON yang bisa mengolah data GPS. 

Geopy merupakan library python yang mampu mengolah beberapa GEO API terkenal seperti google, openstreet, baidu, ArcGis dll. Secara default Raspbian telah menginstall python 2 dan 3 , untuk itu lakukan installasi di raspberry pi menggunakan perintah :

pi@raspberry:~ $ pip3 install geopy

Kita gunakan python 3.x agar lebih up to date , dan dari github resmi geopy untuk mengubah koordinat GPS menjadi nama lokasi kita gunakan cara seperti ini :

>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim(user_agent="specify_your_app_name_here")
>>> location = geolocator.reverse("lat, long")
>>> print(location.address)

Dari hasil membaca beberapa blog yg membahas GeoPy , Nominatim adalah API gratis walau terbatas yang paling mudah digunakan, untuk itu ayo kita mencoba nya di PC saya dulu sesuai contoh diatas, dan hasilnya saat saya masukkan koordinat tugu pahlawan -7.425808 , 112.737785 ...


Jiiiahhhh koordinatnya salah yang diberikan oleh website tadi...hahahah...cek punya googlemap ahh...Koordinat dari Tugu Pahlawan : -7.245862 ,  112.737799 ..dan kita coba ulang..

 -7.245862 ,  112.737799

Ternyata website yg pertama salah posisi 1 angka saja sudah menyebabkan sasaran melenceng jauh. Selanjutnya saya ingin menggunakan MQTT untuk mengirim / Publish data GPS dan kemudian diolah oleh Script Python pada Raspberry Pi untuk mendapatkan nama lokasi dan kemudian dikembalikan secara pPublish dan di Subscribe balik oleh pengirim awal. Untuk itu jangan lupa menginstal library PAHO MQTT pada raspberry pi.


 pi@raspberry:~ $ pip3 install paho-mqtt


Script python MQTT sudah pernah saya bahas pada tulisan data logger sebelumnya, dan untuk keperluan kali ini scritnya kira - kira seperti ini :


import paho.mqtt.client as mqtt #import mqtt client
from geopy.geocoders import Nominatim #import nominatim sebagai geocoder


geolocator = Nominatim(user_agent="my-application") #Gratisan Harus Seperti ini
########################################################
def on_message(client, userdata, message): #routine pesan mqtt masuk
    print("message received " ,str(message.payload.decode("utf-8")))
    print("message topic=",message.topic)

    if (message.topic == '/gps'): #jika topik /gps
       location = geolocator.reverse(str(message.payload.decode("utf-8")))
       lokasi = location.address #ambil lokasi dari geo
       print(lokasi)
       client.publish("/lokasi",lokasi) #kirim ke topik /lokasi
########################################################
broker_address="localhost"
broker_port=1883
broker_user="usernya"
broker_pass="paswordnya"
print("creating new instance")
client = mqtt.Client("P1") #instance mqtt baru
client.on_message=on_message #attach function ke routine callback
client.username_pw_set(broker_user,broker_pass)
print("connecting to broker")
client.connect(broker_address,broker_port) #connect to broker
 #start the loop
print("Subscribing to topic...")
client.subscribe("/gps")
client.loop_forever()
 #muter terusss


Jalankan script diatas pada terminal yg terhubung pada raspberry pi, dan buka juga 2 buah terminal (melalui putty dan sejenis) sebagai terminal PUB yang akan mengirim koordinat GPS ke topik /gps dan satunya sebagai SUB yang akan menunggu kiriman nama titik koordinat tadi dari topik /lokasi. Hasilnya seperti ini nih..


Sukses tapi tidak begitu menarik ya sepertinya karena semuanya berbasis teks. Yang menarik pakai apa ya ? Kita manfaatkan SMARTPHONE aja dengan menggunakan aplikasi IOT MQTT PANEL sebagai dashboard komunikasi MQTT paling terjangkau sampe saat ini karena masih GRATIS walau pake iklan. Cari pada play store dan install pada smartphone kamu dan lakukan setup koneksi ke broker yg digunakan.




Kita akan mengirim dan menerima TEKS , jadi kita butuh 2 panel yaitu  Text Input dan Text Log.



Dan hasilnya menggembirakan seperti dibawah ini :

Selamat Mencoba

Share:

Selasa, 19 Mei 2020

[IOT Ternyata Mudah] Memanfaatkan Raspberry Pi Sebagai Broker MQTT (Mosquitto) Yang dapat Diakses Publik



Beberapa hari terakhir penulis kembali disibukkan dengan project "tertunda" dari tahun 2019 milik seorang teman. Dapat dibilang sedikit beruntung karena penulis pada masa PSBB covid-19 ini  mempunyai waktu luang dikarenakan beberapa proyek yg seharusnya masa sebelum lebaran menjadi "sok sibuk" dengan terpaksa di cancel. Tapi live mas gogon - tetap berkreasi adalah pilihan yang terbaik daripada menjadi panik akibat virus yang tak kunjung ketemu vaksin nya.




Masih ingat gambar diatas ? Itu merupakan tulisan saat kawan yg mengajak saya mengerjakan proyek pengolahan data IOT membuat saya giat belajar teori + praktek pengiriman data IOT menggunakan protokol MQTT. Jika pembaca belum sempat memperhatikan ada baiknya menelaah dahulu pada link berikut : http://www.aisi555.com/2019/10/iot-lebih-lanjut-dengan-mqtt.html . Dan sangat terkejutnya ketika bulan mei 2020 saat mengerjakan proyek bersambung tadi, tersadar bahwa server/broker  CloudMqtt dot com yg saya sering gunakan, mulai memasang harga dan versi gratisnya dibilang "OUT OF STOCK". Ya saya maklum saja mereka butuh sewa server dan cari untung dan walau akun mqtt saya masih aman dan instance saya masih aktif akan tetapi kualitasnya menurun, putus-putus, dan mungkin ini sebabnya di berikan "meteran" agar terjadi keseimbangan antara penggunaan dan kapasitas server.


Lalu apakah yg harus saya perbuat ? Apakah mencari broker publik ? Dan pilihan tertuju ke sebuah alat kecil yg tergeletak di toolbox pemberian teman tadi, yang ditinggalkan mahasiswanya (seharusnya ikut mengerjakan proyek)  akibat kampus lockdown terdampak covid-19. Dan alat itu ternyata raspberry zero W.

Saya tidak akan membahas cara install raspi zero karena sangat umum ditemukan di internet, yang penting saran saya adalah gunakan SD CARD kualitas terbaik yaitu kelas EXTREME dengan kecepatan transfer s/d 100mbps dan lupakan membeli sd card class 10 yang banyak palsunya. Belilah di toko online yg jualan spesialis alat rekam video karena dijamin sudah terpercaya. Saya pilih OS yang paling umum yaitu RASPBIAN. Cara install mosquitto sangat gampang dan juga umum ditemukan dengan googling.


pi@raspberry:~ $ sudo apt install -y mosquitto mosquitto-clients

Jangan lupa untuk menjadikan mosquitto sebagai service sehingga auto start

pi@raspberry:~ $ sudo systemctl enable mosquitto.service

sudah...sederhana seperti itu dan bisa digunakan secara langsung..oh iya untuk mengetahui apakah broker mqtt sudah berjalan gunakan perintah 

pi@raspberry:~ $ mosquitto -v

secara default port yang digunakan adalah 1883 dan IP nya berapa ya ? Hayo coba googling sendiri cara menemukan IP dari raspberry kamu. Gampang kok...

dan script arduino kamu cukup dikosongkan username dan passwordnya seperti berikut :



Jika menginginkan MQTT brokernya lebih secure dengan user password, gunakan perintah berikut ini :

 pi@raspberry:~ $ mosquitto_passwd -c passwordfile user

nanti akan keluar perintah untuk memasukkan pasword. Nah..gampang begitu masak gak bisa? kalau melihat proyek sebelumnya menggunakan ESP8266 tinggal sambung ke wifi yang sama dan otomatis terhubung dengan mantap. 

Untuk melakukan sub dari topik pada raspberry gunakan perintah :

pi@raspberry:~ $ mosquitto_sub -h localhost -u namauser -P password -t TOPIKNYA 

Gunakan terminal telnet/ssh lainnya untuk PUBLISH message ke topic agar tertangkap pada terminal sebelumnya

pi@raspberry:~ $ mosquitto_pub -h localhost -u namauser -P password -t TOPIKNYA -m "saya publish pesan"


Lalu bagaimana jika menggunakan modem SIM800 sejenis yang mengakses servernya dari internet ? Cara termudah adalah dengan memanfaatkan PORT FORWARDING dari router wifi dari layanan internet rumahan indihome/mncplay/firstmedia dll. Secara umum langkahnya mirip yaitu mencari IP publik dari router dan melakukan port forwarding ke raspberry pi. 


Dengan setting diatas maka IP dari Raspberry yang kita gunakan akan bisa diakses dari luar begitu juga PORT MQTT nya. IP publik ini mungkin saja akan berubah saat terjadi rekonfigurasi dari pusat ISP, modem ter Reset atau lampu mati. Untuk itu agar memudahkan mengingat butuh DOMAIN PUBLIK yg khusus mengarahkan ke IP router kita dari jalur internet menggunakan Dynamic DNS atau DDNS. Salah satu layanan DDNS yang lumayan simple adalah noip dot com seperti gambar berikut :



Jadi pastikan servise DDNS tersedia dan aktif pada router kamu dan selanjutnya secara dinamis akan merubah pada public DNS domain dan IP routernya. Jika router kamu tidak memiliki fasilitas DDNS maka bisa menggunakan akses DDNS melalui aplikasi DUC pada raspberry pi kamu . Googling aja : " Raspberry noip DUC install "

Tuh kan..saya jadi bisa akses alat arduino saya melalui HP dengan koneksi 4G .


Selamat Mencoba


Share:

Kontak Penulis



12179018.png (60×60)
+6281331339072

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (29) artikel (11) attiny (3) attiny2313 (19) audio (8) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp32 (3) esp8266 (30) euro2020 (13) gcc (1) gis (3) gsm (1) iklan (1) infrared (2) Input Output (3) iot (78) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) openwrt (3) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (37) proyek (1) python (11) radio (31) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) SDR (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) statistik (5) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (96) tutorial (108) tv digital (6) tvri (2) unesa (8) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (6) yolo (9)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika