sexta-feira, 31 de janeiro de 2025

FIBOCOM L610 - COMANDOS AT - FLOWCODE

 

O objetivo deste BLOG é demonstrar como pode-se enviar comandos AT para o L610 via aplicação em microcontrolador (ARDUINO UNO) através de uma COMM real (Wokwi) conectado ao Kit FIBOCOM L610-GL 

Foi utilizado o FLOWCODE para programar o envio do comando AT.


Neste exemplo, será enviado um comando AT+CCID (serial) e então mostrar o resultado em um display OLED.

PS: requer download do TOOLCHAIN


                                              Testes antes no Terminal Burro

Por  Uri Shaked

Best  Open Source Simulator

Wokwi é um simulador de eletrônica online. Você pode usá-lo para simular Arduino, MS13SF1 (ESP32) e muitas outras placas, componentes e sensores populares.


Simula várias partes (elementos Wokwi) como LEDs, shift registers, Buzzer, sensores (ultrassônico, temperatura, umidade etc. ) Display SSD, teclados e muito mais.

Você pode aprender programação Arduino onde quer que esteja. Nenhum hardware é necessário. Além de tudo isso, o simulador Arduino é totalmente gratuito!

FLOWCODE
Sobre o FLOWCODE

O Flowcode permite desenvolver de maneira rápida e fácil sistemas eletrônicos e eletromecânicos complexos. A ferramenta de programação gráfica permite que aqueles com pouca experiência desenvolvam sistemas em minutos.
O Flowcode é um ambiente de desenvolvimento integrado avançado (IDE) para o desenvolvimento de sistemas eletrônicos e eletromecânicos. Engenheiros - profissionais e acadêmicos - usam o Flowcode para desenvolver sistemas de controle e medição baseados em microcontroladores ou em interfaces industriais robustas usando computadores pessoais compatíveis com o Windows.
O Flowcode é perfeito para os dispositivos de programação PIC, incluindo os microcontroladores 8bit, 16bit e 32 bit da Microchip. É também uma solução fácil e eficaz para programar dispositivos baseados em Atmel AVR, Arduino e ARM.
Projeto no FLOWCODE

Abra o projeto

Serial Comms Worked Example - PC Developer


Adicione SSD1306 e envie a string AT+CCID e SSD


Manda uma string AT+CCID para o L610 e aguarda o serial, o qual será mostrado em um display.

Agora compile




No Wokwi, crie e desenhe o projeto abaixo


Redirecionado para COMM

{ "version": 1, "author": "Anonymous maker", "editor": "wokwi", "parts": [ { "type": "wokwi-arduino-uno", "id": "uno", "top": -66.6, "left": -10.2, "attrs": {} }, { "type": "wokwi-serial-port", "id": "serial", "top": 0, "left": 0, "attrs": { "baud": "9600" } }, { "type": "board-ssd1306", "id": "oled1", "top": 195.14, "left": 48.23, "attrs": { "i2cAddress": "0x3c" } } ], "connections": [ ["$serialMonitor:RX", "serial:TX", ""], ["$serialMonitor:TX", "serial:RX", ""] ], "dependencies": {} }





Execução

Clicando no Sketch (pode deixar vazio), pressione F1 e escolha

LOAD HEX FILE AND SIMULATE

e então COLE o BIN gerado pelo VISUINO


Execução


No Kit FIBOCOM L610-GL, a COMM11 escolhida para enviar comandos AT



Questões: suporte@smartcore.com.br



FONTES: 

SOBRE A SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.

Mais detalhes em www.smartcore.com.br

segunda-feira, 6 de janeiro de 2025

FIBOCOM L610 - COMANDOS AT COM MS13SF1 (ESP32) NO SIMULADOR WOKWI - VISUINO

O objetivo deste BLOG é demonstrar como pode-se enviar comandos AT para o L610 via simulador Wokwi através de uma COMM real conectado ao Kit FIBOCOM L610-GL.

Foi utilizado o VISUINO para programar o envio do comando AT.


Neste exemplo, será enviado um comando AT+CCID (serial) e então mostrar o resultado em um display OLED.


                                              Testes antes no Terminal Burro

Por  Uri Shaked

Best  Open Source Simulator

Wokwi é um simulador de eletrônica online. Você pode usá-lo para simular Arduino, MS13SF1 (ESP32) e muitas outras placas, componentes e sensores populares.


Simula várias partes (elementos Wokwi) como LEDs, shift registers, Buzzer, sensores (ultrassônico, temperatura, umidade etc. ) Display SSD, teclados e muito mais.

Você pode aprender programação Arduino onde quer que esteja. Nenhum hardware é necessário. Além de tudo isso, o simulador Arduino é totalmente gratuito!

VISUINO
O Visuino é o mais recente software inovador da Mitov Software. Um ambiente de programação visual que permite programar suas placas Arduino.
Os componentes encontrados no software Visuino representam seus componentes de hardware e você poderá criar e projetar facilmente seus programas usando arrastar e soltar. Nenhum equipamento ou hardware é necessário para executar o software no modo de design. Depois de ter concluído o design, você pode conectar o upload da placa Arduino e executá-lo.

Para aquelas pessoas que não são fortes em escrever código, em seguida, projetar, compilar e criar programas Arduino nunca foi tão fácil! Por que perder tempo criando código quando já se faz todo o trabalho duro para você? Você tem sua placa Arduino e um ótimo design de hardware, veja-a rodando em minutos, não em horas!

Projeto no VISUINO

Manda uma string AT+CCID para o L610 e aguarda o serial, o qual será mostrado em um display OLED.


Agora compile



Clique no ICONE para pegar o caminho completo do BIN gerado pelo VISUINO, o qual será colado no Wokwi.


No Wokwi, crie e desenhe o projeto abaixo




Redirecionado para COMM

{ "version": 1, "author": "Anonymous maker", "editor": "wokwi", "parts": [ { "type": "board-esp32-devkit-c-v4", "id": "esp", "top": 0, "left": 0, "attrs": {} }, { "type": "wokwi-serial-port", "id": "serial", "top": 0, "left": 0, "attrs": { "baud": "9600" } }, { "type": "board-ssd1306", "id": "oled1", "top": 22.34, "left": 144.23, "attrs": { "i2cAddress": "0x3c" } } ], "connections": [ [ "esp:TX", "serial:RX", "", [] ], [ "esp:RX", "serial:TX", "", [] ], [ "esp:21", "oled1:SDA", "green", [ "h24.04", "v-96", "h86.4" ] ], [ "esp:22", "oled1:SCL", "green", [ "h14.44", "v-86.4", "h86.4" ] ] ], "dependencies": {} }





Execução

Clicando no Sketch (pode deixar vazio), pressione F1 e escolha

LOAD HEX FILE AND SIMULATE

e então COLE o BIN gerado pelo VISUINO


Execução no Wokwi

No Kit FIBOCOM L610-GL, a COMM11 escolhida para enviar comandos AT

Projeto WOKWI


Execução



Questões: suporte@smartcore.com.br


Visuino Project


FONTES: 


SOBRE A SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.

Mais detalhes em www.smartcore.com.br

domingo, 5 de janeiro de 2025

FIBOCOM L610 - STM32 - COMANDOS AT - STM32F072 - TCP SOCKET

   

Neste blog é apresentado como você fazer a comunicação via comandos AT entre o STM32 e FIBOCOM L610-GL 

Basta baixar (CLONE OR DOWNLOAD) em uma basta qualquer os arquivos encontrados em 

超级网吧/L610资料 - 码云 - 开源中国



Descompacte a pasta 软件例程


Renomeia a pasta 软件例程 para fibocom

Com o Keil C instalado clique em

C:\l610-data\IOT\fibocom\STM32F072_FibocomL610\MDK-ARM

STM32F072_FibocomL610


Compile

Comece estudos analisando L610_init.h/cL610_TCP.h/c 



SOBRE A SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.

Mais detalhes em www.smartcore.com.br

FIBOCOM L610 - MS13SF1 - ACESSANDO MQTT (COMANDOS AT)

  

Neste blog é apresentado como você fazer a comunicação via comandos AT entre o MS13SF1 e FIBOCOM L610-GL e então acessar um broker MQTT.

Modulo WiFi 4 BLE 4.2 com antena integrada - ESP32 - MS13SF1 - SmartCore - one stop shop para fabricantes de soluções em IoT, rastreamento, telemetria e conectividade

Basta baixar (CLONE OR DOWNLOAD) em uma basta qualquer os arquivos encontrados em 

esp32-L610: 在Arduino环境下使用esp32采集智慧农业板块、智慧路灯板块数据,通过L610与things kit云平台建立mqtt、tcp、coap等连接,实现数据传输和可视化。


Com o VScode instalado (com extensão Platformio já instalada), abra a pasta (Open Folder) esp-32-l610

Altere arquivo platformio.ini para

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp32]
platform = espressif32
board_upload.flash_size=8MB
board = esp32dev
framework = arduino
monitor_speed=115200
lib_deps=
    robtillaart/SHT31 @ ^0.4.0
    claws/BH1750 @ ^1.3.0

Aguarde instalação dos toolchain do esp32

Altere L610.h com os parâmetros MQTT bem como os pinos de comunicação utIlizados pelo ESP32 (TX / RX)

Mande compilar e então grave no MS13SF1

* Executing task: C:\.platformio\penv\Scripts\platformio.exe run Processing esp32 (platform: espressif32; board: esp32dev; framework: arduino) ---------------------------------------------------------------------------------------------------------------------------------------------------Unpacking [####################################] 100% Library Manager: SHT31@0.4.0 has been installed! Library Manager: Installing claws/BH1750 @ ^1.3.0 Unpacking [####################################] 100% Library Manager: BH1750@1.3.0 has been installed! Verbose mode can be enabled via `-v, --verbose` option CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html PLATFORM: Espressif 32 (5.4.0) > Espressif ESP32 Dev Module HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa) PACKAGES: - framework-arduinoespressif32 @ 3.20006.221224 (2.0.6) - tool-esptoolpy @ 1.40400.0 (4.4.0) - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5 LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain, Compatibility ~ soft Found 37 compatible libraries Scanning dependencies... Dependency Graph |-- SHT31 @ 0.4.0 |-- BH1750 @ 1.3.0 |-- E53_IA1 |-- L610 Building in release mode Compiling .pio\build\esp32\src\main.cpp.o Building .pio\build\esp32\bootloader.bin Generating partitions .pio\build\esp32\partitions.bin esptool.py v4.4 Creating esp32 image... Merged 1 ELF section Successfully created esp32 image. Compiling .pio\build\esp32\lib811\Wire\Wire.cpp.o Compiling .pio\build\esp32\libfec\SHT31\SHT31.cpp.o Compiling .pio\build\esp32\lib374\BH1750\BH1750.cpp.o Compiling .pio\build\esp32\lib6d9\E53_IA1\E53_IA1.cpp.o Archiving .pio\build\esp32\lib811\libWire.a Compiling .pio\build\esp32\liba1c\L610\L610.cpp.o Archiving .pio\build\esp32\libfec\libSHT31.a Compiling .pio\build\esp32\FrameworkArduino\Esp.cpp.o Archiving .pio\build\esp32\lib374\libBH1750.a Compiling .pio\build\esp32\FrameworkArduino\FirmwareMSC.cpp.o Compiling .pio\build\esp32\FrameworkArduino\FunctionalInterrupt.cpp.o Archiving .pio\build\esp32\lib6d9\libE53_IA1.a Compiling .pio\build\esp32\FrameworkArduino\HWCDC.cpp.o Compiling .pio\build\esp32\FrameworkArduino\HardwareSerial.cpp.o Archiving .pio\build\esp32\liba1c\libL610.a Compiling .pio\build\esp32\FrameworkArduino\IPAddress.cpp.o Compiling .pio\build\esp32\FrameworkArduino\IPv6Address.cpp.o Compiling .pio\build\esp32\FrameworkArduino\MD5Builder.cpp.o Compiling .pio\build\esp32\FrameworkArduino\Print.cpp.o Compiling .pio\build\esp32\FrameworkArduino\Stream.cpp.o Compiling .pio\build\esp32\FrameworkArduino\StreamString.cpp.o Compiling .pio\build\esp32\FrameworkArduino\Tone.cpp.o Compiling .pio\build\esp32\FrameworkArduino\USB.cpp.o Compiling .pio\build\esp32\FrameworkArduino\USBCDC.cpp.o Compiling .pio\build\esp32\FrameworkArduino\USBMSC.cpp.o Compiling .pio\build\esp32\FrameworkArduino\WMath.cpp.o Compiling .pio\build\esp32\FrameworkArduino\WString.cpp.o Compiling .pio\build\esp32\FrameworkArduino\base64.cpp.o Compiling .pio\build\esp32\FrameworkArduino\cbuf.cpp.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-adc.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-bt.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-cpu.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-dac.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-gpio.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-i2c-slave.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-i2c.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-ledc.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-matrix.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-misc.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-psram.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-rgb-led.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-rmt.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-sigmadelta.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-spi.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-time.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-timer.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-tinyusb.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-touch.c.o Compiling .pio\build\esp32\FrameworkArduino\esp32-hal-uart.c.o Compiling .pio\build\esp32\FrameworkArduino\firmware_msc_fat.c.o Compiling .pio\build\esp32\FrameworkArduino\libb64\cdecode.c.o Compiling .pio\build\esp32\FrameworkArduino\libb64\cencode.c.o Compiling .pio\build\esp32\FrameworkArduino\main.cpp.o Compiling .pio\build\esp32\FrameworkArduino\stdlib_noniso.c.o Compiling .pio\build\esp32\FrameworkArduino\wiring_pulse.c.o Compiling .pio\build\esp32\FrameworkArduino\wiring_shift.c.o Archiving .pio\build\esp32\libFrameworkArduino.a Linking .pio\build\esp32\firmware.elf Retrieving maximum program size .pio\build\esp32\firmware.elf Checking size .pio\build\esp32\firmware.elf Advanced Memory Usage is available via "PlatformIO Home > Project Inspect" RAM: [= ] 7.0% (used 22856 bytes from 327680 bytes) Flash: [== ] 21.9% (used 287221 bytes from 1310720 bytes) Building .pio\build\esp32\firmware.bin esptool.py v4.4 Creating esp32 image... Merged 2 ELF sections Successfully created esp32 image. ========================================================== [SUCCESS] Took 78.71 seconds ========================================================== * Terminal will be reused by tasks, press any key to close it.



SOBRE SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.

Mais detalhes em www.smartcore.com.br

segunda-feira, 16 de dezembro de 2024

FIBOCOM - MICROPYTHON - MQTT (CLIENTE)

 

QuecPython

O QuecPython é um ambiente de tempo de execução para executar código MicroPython e representa uma nova abordagem para o desenvolvimento de IoT.

MicroPython é código aberto

MicroPython está disponível para uso geral sob licença MIT. Muitos de seus módulos e bibliotecas também estão disponíveis sob licença MIT ou licença de código aberto semelhante. O MicroPython é gratuito para uso educacional e comercial. Qualquer pessoa pode usar e modificar o firmware. É um projeto de código aberto com código-fonte disponível no Github. Por ser um projeto de código aberto, o MicroPython está aberto a contribuições da comunidade. Se você estiver procurando por uma versão de firmware voltada para uma plataforma de hardware, microcontrolador, porta ou recurso específico, verifique o link oficial de download do MicroPython.

Foram realizados testes com o Firmware abaixo*** e foi constatado que o mesmo deu boot no Módulo FIBOCOM L610-GL, pelo menos se conectou rede CLARO nos testes locais. Mas tem outros recursos habilitados.

Segundo documento com o zip, suporta:

1. aLiYun
2. app_fota
3. atcmd
4. dataCall
5. fota
6. net
7. ntptime
8. pm
9. uio
10. ujson
11. umqtt
12. usocket
13. utime
14. cellLocator
15. wifilocator
16. log
17. sysbus
18. queue
19. sim
20. Pin
21. ExtInt
22. UART
23. SPI
24. IIC
25. Timer
26. RTC
27. LCD
28. KeyPad
29. Power
30. ADC
31. PowerKey
32. PWM
33. quecgnss
34. audio
35. _thread
36. ussl
37. SecureData
38. uwebsocket

EG912U SERIES | QuecPython

***Resources Download | QuecPython

Download | QuecPython

EG912U-GL

QPY_OCPU_V0001_EG912U_GLAC_FW.ZIP

Gravando


Vendo se QuecPyhon responde


Verificando se tem sinal da operadora Claro


Mandando um Script que roda MQTT (client)


Script MQTT

''' @Author: Baron @Date: 2020-04-24 @LastEditTime: 2021-05-25 17:06:08 @Description: example for module umqtt @FilePath: example_mqtt_file.py ''' ''' The following two global variables are required. You can modify the values of the following two global variables according to your actual projects. The values of these two variables are printed before the user code is executed. ''' import utime import log import net import _thread import checkNet import dataCall from umqtt import MQTTClient PROJECT_NAME = "QuecPython_MQTT_example" PROJECT_VERSION = "1.0.0" checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) # Reclaim the thread resource through the status after calling MQTTClient.disconnect(). TaskEnable = True # Set the log output level. log.basicConfig(level=log.INFO) mqtt_log = log.getLogger("MQTT") # Encapsulate MQTT so it can support more custom logic. class MqttClient(): ''' mqtt init ''' # Note: The parameter reconn enables or disables the internal reconnection mechanism. Default value: True (enable). # If you need to test or use the external reconnection mechanism, please refer to this example code below. Before testing, set reconn to False, otherwise, the internal reconnection mechanism will be used by default. def __init__(self, clientid, server, port, user=None, password=None, keepalive=0, ssl=False, ssl_params={}, reconn=True): self.__clientid = clientid self.__pw = password self.__server = server self.__port = port self.__uasename = user self.__keepalive = keepalive self.__ssl = ssl self.__ssl_params = ssl_params self.topic = None self.qos = None # Network status flag. self.__nw_flag = True # Create a mutex. self.mp_lock = _thread.allocate_lock() # Create a class to initialize the MQTT object. self.client = MQTTClient(self.__clientid, self.__server, self.__port, self.__uasename, self.__pw, keepalive=self.__keepalive, ssl=self.__ssl, ssl_params=self.__ssl_params, reconn=reconn) def connect(self): ''' Connect to the MQTT server. ''' self.client.connect() # Register the callback function of network status. When the network status changes, the function will be called. flag = dataCall.setCallback(self.nw_cb) if flag != 0: # The network callback registration failed. raise Exception("Network callback registration failed") def set_callback(self, sub_cb): ''' Set the callback function of receiving messages. ''' self.client.set_callback(sub_cb) def error_register_cb(self, func): ''' Set the callback function of receiving MQTT thread error occurrence. ''' self.client.error_register_cb(func) def subscribe(self, topic, qos=0): ''' Subscribe to topics. ''' self.topic = topic # Save the topic. Multiple topics can be saved by a list. self.qos = qos # Save the QoS. self.client.subscribe(topic, qos) def publish(self, topic, msg, qos=0): ''' Publish a message. ''' self.client.publish(topic, msg, qos) def disconnect(self): ''' Disconnect from the MQTT server. ''' global TaskEnable # Close the monitoring thread of wait_msg. TaskEnable = False # Disconnect from the MQTT server and release the resources. self.client.disconnect() def reconnect(self): ''' MQTT reconnection mechanism (The following example is for your reference only and you can adjust based on actual needs.) Note: 1. If other services need to be restarted after the client reconnects to the server, determine whether to release the resources of the previous services before restarting the services. 2. This section needs to be added based on the actual business logic, and this example only covers the process that the client resubscribes to topics after reconnecting to the MQTT server. ''' # Determine whether the lock has been acquired. if self.mp_lock.locked(): return self.mp_lock.acquire() # Close the previous connection before reconnecting to release resources. Please note the differences between *MQTTClient.disconnect()* and *MQTTClient.close()*, where MQTTClient.close() only releases socket resources but *MQTTClient.disconnect()* releases resources including threads. self.client.close() # Reconnect to the MQTT server. while True: net_sta = net.getState() # Get network registration information. if net_sta != -1 and net_sta[1][0] == 1: call_state = dataCall.getInfo(1, 0) # Get data call information. if (call_state != -1) and (call_state[2][0] == 1): try: # The network is normal. Reconnect to the MQTT server. self.connect() except Exception as e: # Reconnection to the MQTT server failed. Try again 5 s later. self.client.close() utime.sleep(5) continue else: # The network is unrestored. Please wait. utime.sleep(10) continue # Connect to the MQTT server successfully and subscribe to the topic. try: # Multiple topics can be saved by a list. Traverse the list to resubscribe the topic. if self.topic is not None: self.client.subscribe(self.topic, self.qos) self.mp_lock.release() except: # Subscription failed. Reconnect to the MQTT server. self.client.close() utime.sleep(5) continue else: utime.sleep(5) continue break # Stop loop. # Exit and reconnect. return True def nw_cb(self, args): ''' Call the callback function of data call. ''' nw_sta = args[1] if nw_sta == 1: # Network connected. mqtt_log.info("*** network connected! ***") self.__nw_flag = True else: # Network disconnected. mqtt_log.info("*** network not connected! ***") self.__nw_flag = False def __listen(self): while True: try: if not TaskEnable: break self.client.wait_msg() except OSError as e: # Determine whether the network is disconnected. if not self.__nw_flag: # Reconnect after the network is restored from disconnection. self.reconnect() # Reconnect when the socket status is abnormal. elif self.client.get_mqttsta() != 0 and TaskEnable: self.reconnect() else: # You can call the raise method to return an exception or -1. return -1 def loop_forever(self): _thread.start_new_thread(self.__listen, ()) if __name__ == '__main__': ''' When running this routine manually, you can remove this delay. If you change the file name of the routine to main.py, you need to add this delay when you want to start the routine automatically. Otherwise, you cannot see the information printed in poweron_print_once() below from the CDC interface. ''' utime.sleep(5) checknet.poweron_print_once() ''' If the user program contains network-related codes, it must execute wait_network_connected() to wait for the network to be ready (successful data call); If it is a network-independent code, you can mask wait_network_connected(). 【This routine must retain the following line.】 ''' checknet.wait_network_connected() def sub_cb(topic, msg): # global state mqtt_log.info("Subscribe Recv: Topic={},Msg={}".format(topic.decode(), msg.decode())) c = MqttClient("clientId-Y1ymSzvQcC", "broker.hivemq.com", 1883, reconn=False) def err_cb(error): ''' Set the callback function of receiving MQTT thread error occurrence. ''' mqtt_log.info(error) c.reconnect() # Reconnect to MQTT server after error occurrences. # c = MqttClient("umqtt_client_753", "mq.tongxinmao.com", 18830, reconn=False) # Set the callback function of receiving messages. c.set_callback(sub_cb) # Set the callback function of error occurrence. c.error_register_cb(err_cb) # Connect to the MQTT server. c.connect() # Subscribe to topics. c.subscribe(b"/public/TEST/quecpython758") mqtt_log.info("Connected to mq.tongxinmao.com, subscribed to /public/TEST/quecpython topic") # Publish a message. c.publish(b"/public/TEST/quecpython758", b"my name is Quecpython!") mqtt_log.info("Publish topic: /public/TEST/quecpython758, msg: my name is Quecpython") # Monitor MQTT messages. c.loop_forever() # Wait for 5 s to receive the message. # Note: Comment c.disconnect () and utime.sleep(5) if you want to test the reconnection mechanism, including server disconnection. # utime.sleep(5) # Disconnect to the MQTT server. # c.disconnect()


Execução


Ref:

O que é MicroPython? – COMPRACO - Compra coordenada por IA
QPYcom User Guide - QuecPython
HiveMQ – The Most Trusted MQTT platform to Transform Your Business
Index of /
珍藏,广和通L610全套标准指令AT手册下载 / NB-IoT/2G模块/4G模块/GPRS模块/GPS/北斗 / WhyCan Forum(哇酷开发者社区)

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.

Mais detalhes em www.smartcore.com.br