IOT Basic Tutorial

Last updated: January 27 th, 2017

Geeknesia Microcontroller & IOT Starter Kit

Geeknesia Kit

Sebuah Starter Kit Lengkap dari Geeknesia untuk mempelajari IOT dan Micro Controller dengan mudah melalui praktek secara langsung.
Starter Kit ini menyediakan development board ESP 8266 tipe WeMos D1 yang compatible dengan board arduino sehingga mudah dipahami, muda diperlajari, dan mudah dimengerti. Dalam kit ini tersedia komponen elektronik lengkap untuk berbagai keperluan tutorial dan project real.

Read More or Buy Now !

Menghubungkan Intel Edison ke Geeknesia menggunakan bahasa Phyton dan PAHO MQTT Client

Sekarang kita akan mempelajari bagaimana menghubungkan Intel Edison boardpenerus dari Intel Galileo, bentuknya lebih kecil dan sudah dilengkapi dengan wifi dan bluetooth.

Sebelum kita menghubungkan Intel Edison ke Geeknesia, kita akan mempelajari terlebih dahulu bagaimana cara mengkontrol GPIO dari Arduino breakout yang dibuat khusus untuk Intel Edison. Untuk mengkontrol GPIO pada Intel Boardtelah tersedia module opensource yaitu Wiring-x86.

Terminal

 
$ pip install wiring-x86

Mari kita tes untuk membuat blinky LED.

blink.py

 
# Import the time module enable sleeps between turning the led on and off.
import time

# Import the GPIOEdison class from the wiringx86 module.
# In case you want to use a different board, simply the import right class
# below. The API is unified for all supported boards.
from wiringx86 import GPIOEdison as GPIO

# Create a new instance of the GPIOEdison class.
# Setting debug=True gives information about the interaction with sysfs.
gpio = GPIO(debug=False)
pin = 7
state = gpio.HIGH

# Set pin 7 to be used as an output GPIO pin.
print 'Setting up pin %d' % pin
gpio.pinMode(pin, gpio.OUTPUT)


print 'Blinking pin %d now...' % pin
try:
    while(True):
        # Write a state to the pin. ON or OFF.
        gpio.digitalWrite(pin, state)

        # Toggle the state.
        state = gpio.LOW if state == gpio.HIGH else gpio.HIGH

        # Sleep for a while.
        time.sleep(0.5)

# When you get tired of seeing the led blinking kill the loop with Ctrl-C.
except KeyboardInterrupt:
    # Leave the led turned off.
    print '\nCleaning up...'
    gpio.digitalWrite(pin, gpio.LOW)

    # Do a general cleanup. Calling this function is not mandatory.
    gpio.cleanup()

simpan dengan nama file blink.py , mari kita execute filenya.

Terminal

 
$ python blink.py

 

Hore!!! LED-nya kedap-kedip.

Setelah kita bisa mengkontrol GPIO dari Intel Edison sekarang saatnya kita menginstall package untuk MQTT Client. Salah satu module yang hits sekarang yaitu Paho-MQTT.

Terminal

 
$ pip install paho-mqtt

Selanjutnya, berikut kode dasar menggunakan paho-mqtt untuk berkomunikasi dengan Geeknesia :

mqttClient.py

 
from wiringx86 import GPIOEdison as GPIO
import paho.mqtt.client as paho, os, urlparse, time

gpio = GPIO(debug=False)
analogpin = 17
gpio.pinMode(analogpin, gpio.ANALOG_INPUT)
# Define event callbacks
def on_connect(mosq, obj, rc):
    print("rc: " + str(rc))

def on_message(mosq, obj, msg):
    print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))

def on_publish(mosq, obj, mid):
    print("mid: " + str(mid))

def on_subscribe(mosq, obj, mid, granted_qos):
    print("Subscribed: " + str(mid) + " " + str(granted_qos))

def on_log(mosq, obj, level, string):
    print(string)

mqttc = paho.Client()
# Assign event callbacks
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe

# Uncomment to enable debug messages
#mqttc.on_log = on_log

# Parse CLOUDMQTT_URL (or fallback to localhost)
url_str = os.environ.get('CLOUDMQTT_URL', 'mqtt://USERNAME:PASSWORD@geeknesia.com:1883')
url = urlparse.urlparse(url_str)

# Connect
mqttc.username_pw_set(url.username, url.password)
mqttc.connect(url.hostname, url.port)

# Start subscribe, with QoS level 0
mqttc.subscribe("hello/world", 0)

# Publish a message
mqttc.publish("iot/live", "DEVICE_ID")

# Continue the network loop, exit when an error occurs
rc = 0
while rc == 0:
    rc = mqttc.loop()
    value = gpio.analogRead(analogpin)
    mqttc.publish("iot/data", '{"code":"USERNAME:PASSWORD","attributes":{"LDR":"'+ `value` +'"}}')
    time.sleep(60)
print("rc: " + str(rc))

Analog Input pada module Wiring-x86 mulai dari pin 17-19. Jadi A0 = 17 , dan seterusnya. Untuk saat ini saya menggunakan A03 sebagai Analog Input. Dengan demikian saya menggunakan pin 17.

Jangan lupa ganti DEVICE_ID, USERNAME, dan PASSWORD , sesuai dengan informasi detail dari device yang Anda daftarkan pada Geeknesia. Mari kita execute script Python kita

Terminal

 
$ python mqttClient.py

 

Intel Edison akan selalu mengirimkan data dari sensor LDR ke Geeknesia dengan interval 60 detik. Semua source saya upload ke Github dengan nama repo python-mqtt-geeknesia.

Silakan berkreasi dengan dasar yang sudah ada.