Enviando dados de aplicativo Python para Oracle IoT Cloud Service

Se você leu meu post “Enviar dados do Raspberry Pi para o Oracle IoT Cloud Service“, você aprendeu a usar a SDK de C POSIX para enviar dados do Raspberry Pi para o Oracle IoT Cloud Service. A Oracle fornece SDKs para muitas linguagens de programação, mas se você não encontrar um SDK para sua linguagem de programação favorita (por exemplo, python), poderá usar a REST API.

Neste post, você aprenderá a enviar dados de umidade e temperatura do Raspberry Pi para o Oracle IoT Cloud Service usando Python e REST API. Você pode clonar este projeto daqui: https://github.com/waslleysouza/oraclecloud_iotcs_DHT.

Para facilitar as coisas, criei um pacote Python simples usando a REST API do Oracle IoT Cloud Service, e você pode aprender mais aqui: https://github.com/waslleysouza/oraclecloud.

Primeiro de tudo, você precisa instalar os pacotes necessários do Python.

pip install oraclecloud Adafruit_DHT

Crie o arquivo formats.json.
Este arquivo tem o formato JSON da mensagem.

[
    {
        "name": "Message",
        "urn": "urn:com:oracle:iot:device:camera:message",
        "type": "DATA",
        "fields": [
            {
                "name": "license_plate",
                "optional": "False",
                "type": "STRING"
            },
            {
                "name": "confidence",
                "optional": "False",
                "type": "NUMBER"
            },
            {
                "name": "picture_url",
                "optional": "False",
                "type": "URI"
            }
        ]
    }
]

Crie o arquivo app.py.
Este é o arquivo principal do aplicativo.

#!/usr/bin/python3
# Waslley Souza (waslleys@gmail.com)
# 2018

import Adafruit_DHT
import time
import json
import os
import platform
from oraclecloud import Iot


USER = 'iot'
PASS = 'welcome1'
URL  = 'https://192.168.0.177:10443'
SHARED_SECRET = 'Welcome_1'

DEVICE_MODEL_URN = "urn:com:oracle:iot:device:temp_hum"
DEVICE_MODEL_FORMAT_URN = DEVICE_MODEL_URN + ":message"


sensor = Adafruit_DHT.DHT11
#sensor = Adafruit_DHT.DHT22

# GPIO pin
pino_sensor = 14


def main():
    print('Running...')
    
    while True:
      humidity, temperature = Adafruit_DHT.read_retry(sensor, pino_sensor)

      if humidity is not None and temperature is not None:
          print("Temperature = {0:0.1f} C  Humidity = {1:0.1f} %".format(temperature, humidity))
          data = {'humidity':humidity,'temperature':temperature}
          iot.send_message(device, DEVICE_MODEL_FORMAT_URN, data)
          time.sleep(1)
      
      else:
          print("Error !!!")


def _open_file(file_name):
    f = open(file_name, 'r')
    text = f.read()
    f.close()
    return text


def _create_file(file_name, text):
    f = open(file_name, 'w')
    f.write(text)
    f.close()


if __name__ == "__main__":
    iot = Iot(USER, PASS, URL, False)

    if os.path.isfile('device.txt'):
        device_id = _open_file('device.txt')
        device = iot.get_device(device_id)  
        iot.set_shared_secret(SHARED_SECRET)

    else:
        device_model = iot.get_device_model(DEVICE_MODEL_URN)
        if not device_model:
            formats = json.loads(_open_file('formats.json'))
            device_model = iot.create_device_model("TemperatureHumidity", DEVICE_MODEL_URN, formats)

        device_name = platform.node() + "_DHT"
        device = iot.create_device(device_name, SHARED_SECRET, hardware_id=device_name)
        iot.activate_device(device, DEVICE_MODEL_URN)

        _create_file('device.txt', device['id'])
    
    main()

Não se esqueça de alterar esta parte do código com as informações do seu ambiente.

USER = 'iot'
PASS = 'welcome1'
URL  = 'https://192.168.0.177:10443'

Execute o seguinte comando para iniciar seu aplicativo.

python app.py

Agora, você pode monitorar a umidade e a temperatura usando o Oracle IoT Cloud Service.

Divirta-se!

Autor: Waslley Souza

Consultor Oracle com foco em tecnologias Oracle Fusion Middleware e SOA. Certificado Oracle WebCenter Portal, Oracle ADF e Java.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *