SDK-ESP Automação-IOT Documentação

If you are looking for the english documentation go to here.

Guia Básico

SDK ESP é o kit de desenvolvimento de software pra os projetos relativos a Automação-IOT, baseados no hardware ESP8266 ou ESP32 Nodemcu. Este SDK foi baseado no projeto MicroPython (http://micropython.org/).

ESP8266

ESP8266 é um módulo WIFI de baixo custo, adequado para projetos de micontroladores, totalmente reprogramável. Possui como lista de recursos, os seguintes itens:

  • Protocolo 802.11 b/gn
  • Wi-fi direct (P2P)
  • Pilha de protocolo TCP/IP integrado

Pinagem ESP8266

_images/pinagem-ESP8266.png

Pinagem :

PINO GPIO
D0 16
D1 05
D2 04
D3 00
D4 02
D5 14
D6 12
D7 13
D8 15
D9 03
D10 01

ESP32

  • Protocolo 802.11 b/gn
  • WiFi: 2,4 GHz, 802.11 b/g/n
  • Bluetooth: Bluetooth Low Energy v4.2 (BLE)
  • 1 Sensor de temperatura interno
  • 1 Sensor de efeito Hall

Pinagem ESP32

_images/pinagem-ESP32.png

Projeto MicroPython

Projeto Micropython, que possui como foco principal a implementação do Python 3.X em pequenos sistemas embarcados.

_images/micropython.jpg

Bibliotecas SDK-ESP

Biblioteca Common

É representado pelo conjunto de classes e métodos comum a todas as classes da biblioteca Resources.

Importante

Bibliotecas Common. Relação de bibliotecas common

  • Api
  • Device
  • Resource
  • Wifi

Biblioteca Resources

É representado pelo conjunto de recursos de entrada/saída que possuam capacidade de integração e comunicação com dispositivo.

Importante

Bibliotecas Resources. Relação de bibliotecas resources

  • Dht
  • Ds1820
  • Led
  • Rele

Importante

Classe DHT

  • DHT11;
  • DHT21; e
  • DHT22.

Exemplos SDK-ESP

Exemplos de uso do SDK-ESP

Recurso Rele ESP8266

from Device import Device
from Rele import Rele
from Led import LedRGB


device = Device("PUBLIC_KEY","SECRET_KEY",1000)
device.SYS_CPU_160MHZ()
device.presenceLed(device.GPIO14,device.GPIO12,device.GPIO13,LedRGB.CATODO)
device.setNetworkConfig('SSID','PWD')
device.setDebug(True)

rele = Rele(idRELE,device.GPIOrele,Rele.OPEN,1000)

device.start()

Recurso Rele ESP32

from Device import Device
from Rele import Rele
from Led import LedRGB


device = Device("PUBLIC_KEY","SECRET_KEY",1000)
device.SYS_CPU_240MHZ()
device.presenceLed(device.GPIO25,device.GPIO26,device.GPIO27,LedRGB.CATODO)
device.setNetworkConfig('SSID','PWD')
device.setDebug(True)

rele = Rele(idRELE,device.GPIOrele,Rele.OPEN,1000)

device.start()

Recurso Dht ESP8266

from Device import Device
from Led import LedRGB
#from Dht import Dht

device = Device("PUBLIC_KEY","SECRET_KEY",1000)
device.SYS_CPU_160MHZ()
device.presenceLed(device.GPIO14,device.GPIO12,device.GPIO13,LedRGB.CATODO) # 14 (D5- RED) 12 (D6 - GREEN) 13 (D7 - BLUE)
device.setNetworkConfig('SSID','PWD')
device.setDebug(False)

dht = Dht(idTemperature,idHumidity,device.GPIOdht,Dht.type,True,1000)

device.start()

Recurso Ds1820 ESP32

from Device import Device
from Ds1820 import Ds1820
from Led import LedRGB

device = Device("PUBLIC_KEY","SECRET_KEY",1000)
device.SYS_CPU_240MHZ()
device.presenceLed(device.GPIO25,device.GPIO26,device.GPIO27,LedRGB.CATODO)
device.setNetworkConfig('SSID','PWD')
device.setDebug(True)

rele = Rele(idRELE,device.GPIOrele,Rele.OPEN,1000)
ds = Ds1820(idDS1820,device.GPIOds1820,Ds1820.type,device.escala,True)

device.start()

Criando Classe SDK

Estrutura Classe SDK

O módulo de SDK poderá ser expandido a outros sensores (recursos), para isto basta seguir o modelo de estrutura abaixo, para garantir a integração junto ao sistema da Automação IOT.

Classe Hipotética

Este recurso (hipoteticamente) lê dados de uma determinada GPIO e envia para a Base de Dados IoT:

LeGPIO.py


      from Device import Device
      from Resource import Resource


      class LeGPIO(Resource):

              def __init__(self, *args):

                      self.refresh = 1000
                      self.pin = None
                      self.state = None

                      if len(args) == 3:
                              self.id = args[0]
                              self.gpio = args[1]
                      elif len(args) == 4:
                              self.id = args[0]
                              self.gpio = args[1]
                              self.refresh = args[3]

                      Device.addResource(self,self)
                      self.tsLeGPIOBegin = Device.getTime(self)

              @staticmethod
              def start(cls, protocol, url, keyPublic, keySecret,debug):
                      try:
                              if(Resource.resourceTime(Device.getTime(cls),cls.tsLeGPIOBegin,cls.refresh)):
                                      cls.actionStart(protocol, url, keyPublic, keySecret, debug)
                                      cls.tsLeGPIOBegin = Device.getTime(cls)
                      except:
                              pass
                      return

              def actionStart(self,protocol, url, keyPublic, keySecret,debug):
                      try:
                              self.pin = Pin(self.gpio, Pin.IN)
                              valuePin = self.pin.value()

              value = Resource.createFeed(self.id, protocol, url, keyPublic, keySecret,valuePin, debug)
                      except:
                              pass
                      return