sábado, 20 de novembro de 2021

Mongoose no u-blox NINA W106 - PPPos no SARA G350 - ACESSANDO THINGSTREAM COM JS (MQTT) - ACESSO REMOTO

 

O objetivo deste BLOG é demonstrar como é possível utilizar o Mongoose para programação do U-BLOX NINA W106. Foi utilizado o U-BLOX NINA W106 para o teste. A aplicação habilita que execute no MONGOOSE um STACK para acesso ao PPPos e então publique dados no broker MQTT da U-BLOX (ThingStream).

Nesta versão, vamos acessar Remotamente o W106 :) via mDASH

W106
Wi-Fi 802.11b/g/n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32, com 4MB FLASH

SARA G350



A série SARA-G3 de módulos GSM / GPRS apresenta consumo de energia extremamente baixo e um fator de forma LGA em miniatura. Os módulos SARA-G3 são intercambiáveis ​​e foram projetados tendo em mente as diversas necessidades dos clientes M2M. Diferentes funcionalidades e conjuntos de recursos estão disponíveis para atender aos diferentes requisitos do cliente e da aplicação. SARA-G340 / G350 são módulos GSM / GPRS completos com um conjunto abrangente de recursos, incluindo um amplo conjunto de protocolos de internet (TCP, UDP, HTTP, FTP e SMTP). Elas têm acesso totalmente integrado a chips de posicionamento GNSS u-blox e módulos, junto com a funcionalidade A-GNSS (AssistNow On line e AssistNow Off-line) incorporada. SARA-G350 é o versão quad-band para conectividade global e SARA-G340 (900/1800 MHz) é a versão de banda dupla para otimização de custos uso na Europa e na Ásia. Seu rico conjunto de recursos permite que os clientes desenvolvam facilmente uma ampla gama de dispositivos M2M com desenvolvimento mínimo de software no processador host. SARA-G340 ATEX e SARA-G350 ATEX são ATEX / IECEx variantes certificadas que complementam ainda mais a série de produtos oferecendo a solução ideal para o desenvolvimento de dispositivos inteligentes implantados em ambientes potencialmente explosivos. Módulos celulares u-blox são certificados e aprovados pelo principal órgãos reguladores e operadoras. Software RIL para Android está disponível gratuitamente. Os módulos SARA-G3 são fabricados em locais com certificação ISO / TS 16949. Cada módulo é testado e inspecionado durante a produção. Os módulos são qualificados de acordo com a ISO 16750 - Condições ambientais e testes elétricos para equipamentos elétricos e eletrônicos para rodovias veículos.

PPP
 

Em redes de computadores, o Point-to-Point Protocol (PPP), em português Protocolo ponto-a-ponto é um protocolo de enlace de dados (camada 2) usado para estabelecer uma conexão direta entre dois nós. Ele pode fornecer autenticação de conexão, criptografia de transmissão (usando ECP, RFC 1968) e compressão.

O PPP é usado sobre muitos tipos de redes físicas incluindo cabo serial, linha telefônica, linha tronco, telefone celular, enlaces de rádio especializados e enlaces de fibra ótica como SONET. O PPP também é usado sobre conexões de acesso à Internet. Provedores de serviços de Internet têm usado o PPP para acesso discado à Internet pelos clientes, uma vez que pacotes IP não podem ser transmitidos sobre uma linha de modem por si próprios, sem algum protocolo de enlace de dados. 

Conheça ThingStream, servidor MQTT da U-BLOX
Implementa também SSL e SN-MQTT

Ambiente thingstream

Características:
  • o custo do Thingstream como um MQTT Broker é muito menor do que o custo daqueles associados ao Azure e AWS;
  • o gerenciador de fluxo de dados é uma excelente vantagem, dados podem ser tratados no servidor e então encaminhados;
  • permite programação Node.js;
  • a segurança é diferente e muito mais simplificada do que tentar fazer uma troca de certificados com a AWS etc;
  • tem uma conexão segura em vez do dispositivo. Isso realmente simplifica a integração;
  • capacidade de se inscrever em vários tópicos diferentes;
  • nós para acessos para vários serviços da AWS Amazon, Azure IoT, IBM Watson, IFTTT (DashBoard e uma infinidade de outras opções)
  • criação de Coisas (Thing);
  • monitoração de eventos MQTT;
  • alertas quando algo não vai bem.
No modo tradicional, se você quer acessar AWS, AZURE, etc:
  • você deve fazer registro
  • gerar Certificados
  • manter, guardar e proteger seus Certificados
  • despachar cada Certificado um por um para os Devices na produção
  • você precisa manter identidades diferentes por cada um dispositivo e entregá-los com segurança
  • fortes impactos na complexidade na logística, produção tempo, configuração do sistema e custos de manutenção
Com ThingStream, se você quer acessar AWS, AZURE, etc:
  • você deve fazer um registro de CA (certificate authority) (Access ID e Secret Key), exemplo, IAM na AMAZON.
  • quando você cria um Device (Things) no ThingStream, você deve pegar as credenciais (Username, Password, Client ID) (Device Certificate), basicamente muda Client Id e Password para cada Device
  • utilize estas credenciais (Things) (Username, Password e Client ID) no Device (U-BLOX NINA W106) para acessar o ThingStream  via MQTT
  • crie Tópicos (Topics) que devem acessados pelos Devices (U-BLOX NINA W106), ou seja, para fazer Publish ou Subscribe
  • no DATAFLOW manager (Flows), o Nó ThingStream Subscribe deve estar conectado à um Tópico previamente criado para o seu Device (U-BLOX NINA W106), é por ele que começa o disparo para o DATAFLOW manager
  • Dentro do DATAFLOW pode de ter vários Nós ThingStream Subscribe
  • no DATAFLOW manager tenha fácil acesso à AWS, AZURE, etc utilizando Access ID e Secret Key e então solicite os serviços disponíveis (S3, LAMBDA, etc) (No caso da AMAZON)

FLOW

Saldo de "Publish"

Registros dos Eventos


Planos acessíveis



O que é o mongoose OS

Mongoose OS é um pequeno RTOS desenvolvido por Cesanta, Irlanda. Seu suporte a muitos pequenos e poderosos MCU como ESP32 (U-BLOX NINA W106). Mongoose OS é um sistema operacional integrado de código aberto para microcontroladores conectados de baixa potência.

Código em C ou JavaScript;
Recursos de segurança como suporte a chip de criptografia, criptografia de sistema de arquivos, etc;
AWS IoT integrado, integração do Google IoT;
Motor JavaScript incorporado - mJS;

Benefícios do Mongoose OS:
Provas rápidas de conceitos / protótipos;
Menor tempo de comercialização a um custo ideal;
Seguro, confiável e verificado por empresas líderes;
Infraestrutura confiável para produto comercial

https://mongoose-os.com/


u-blox NINA W106 e Moogoose

Como o módulo U-BLOX NINA W106 é baseado no chip ESP32 (cpu), será possível rodar o Mongoose sem problemas. O usuário deve dar atenção ao mapeamento de GPIOS da U-BLOX apenas conforme datasheet.

No link abaixo, há um roteiro muito interessante para que você possa preparar o ambiente para programar o U-BLOX NINA W106 


Basicamente

Crie uma pasta, MOS, copie o EXE para ela, crie um PATH no WINDOWS, crie pasta Projeto, baixe APP, compile na nuvem, faça o FLASH para o  U-BLOX NINA W106, configure SSID/PASSWORD, cadastre na Nuvem!


TESTANDO NO U-BLOX NINA W106

Seleção do ESP32 (U-BLOX NINA W106)

Criando Projeto

mkdir demo-js

mos clone https://github.com/mongoose-os-apps/demo-js app1

$ mos clone https://github.com/mongoose-os-apps/demo-js app1 app1: Does not exist, cloning from "https://github.com/mongoose-os-apps/demo-js"... app1: Checking out 2.19.1... app1: Done, hash e4ecb176b4e95f53e5938724b6cb6723b4b95fad

mos build --platform esp32

mos build --platform esp32 Connecting to https://build.mongoose-os.com, user test Uploading sources (2668 bytes) Firmware saved to C:\mos\app1\build\fw.zip Command completed.

mos flash

$ mos flash Loaded app1/esp32 version 1.0 (20210318-180524) Opening COM35 @ 115200... Connecting to ESP32 ROM, attempt 1 of 10... Connecting to ESP32 ROM, attempt 2 of 10... Connected, chip: ESP32D0WDQ6 R1 Running flasher @ 921600... Flasher is running Flash size: 4194304, params: 0x022f (dio,32m,80m) Flash encryption: disabled, scheme: None Secure boot: disabled Deduping... Writing... 28672 @ 0x1000 4096 @ 0x8000 16384 @ 0x9000 8192 @ 0xd000 1572864 @ 0x10000 262144 @ 0x190000 Wrote 1885280 bytes in 16.93 seconds (869.93 KBit/sec) Verifying... 25456 @ 0x1000 3072 @ 0x8000 16384 @ 0x9000 8192 @ 0xd000 1570032 @ 0x10000 262144 @ 0x190000 Booting firmware... All done!

Execução

[Mar 18 15:08:40.981] ������������� [Mar 18 15:08:40.981] I (117) boot: 5 fs_1 FS 01 82 00350000 00040000 00000000 [Mar 18 15:08:40.981] I (125) boot: End of partition table [Mar 18 15:08:40.981] I (130) boot: OTA data 0: seq 0x00000001, st 0x10, CRC 0x157a2b85, valid? 1 [Mar 18 15:08:40.981] I (137) boot: OTA data 1: seq 0x00000000, st 0x00, CRC 0x00000000, valid? 0 [Mar 18 15:08:40.981] I (145) boot_comm: chip revision: 1, min. application chip revision: 0 [Mar 18 15:08:40.981] I (152) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x44298 (279192) map [Mar 18 15:08:41.088] I (242) esp_image: segment 1: paddr=0x000542c0 vaddr=0x3ffbdb60 size=0x0394c ( 14668) load [Mar 18 15:08:41.088] I (247) esp_image: segment 2: paddr=0x00057c14 vaddr=0x40080000 size=0x00400 ( 1024) load [Mar 18 15:08:41.088] I (249) esp_image: segment 3: paddr=0x0005801c vaddr=0x40080400 size=0x07ffc ( 32764) load [Mar 18 15:08:41.088] I (270) esp_image: segment 4: paddr=0x00060020 vaddr=0x400d0020 size=0x119374 (1151860) map [Mar 18 15:08:41.557] I (605) esp_image: segment 5: paddr=0x0017939c vaddr=0x400883fc size=0x160f4 ( 90356) load [Mar 18 15:08:41.557] I (637) esp_image: segment 6: paddr=0x0018f498 vaddr=0x400c0000 size=0x00034 ( 52) load [Mar 18 15:08:41.557] I (653) boot: Loaded app from partition at offset 0x10000 [Mar 18 15:08:41.557] I (653) boot: Disabling RNG early entropy source... [Mar 18 15:08:41.557] I (654) cpu_start: Pro cpu up. [Mar 18 15:08:41.557] I (657) cpu_start: Application information: [Mar 18 15:08:41.557] I (662) cpu_start: Project name: app1 [Mar 18 15:08:41.557] I (667) cpu_start: App version: 2.19.1 [Mar 18 15:08:41.557] I (672) cpu_start: Compile time: Mar 18 2021 18:04:52 [Mar 18 15:08:41.557] I (678) cpu_start: ELF file SHA256: 8a6b25f01d7c479b... [Mar 18 15:08:41.557] I (684) cpu_start: ESP-IDF: 4.2-r1 [Mar 18 15:08:41.557] I (689) cpu_start: Single core mode [Mar 18 15:08:41.557] I (693) heap_init: Initializing. RAM available for dynamic allocation: [Mar 18 15:08:41.557] I (700) heap_init: At 3FF80034 len 00001FCC (7 KiB): RTCRAM [Mar 18 15:08:41.557] I (706) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM [Mar 18 15:08:41.557] I (713) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM [Mar 18 15:08:41.557] I (719) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM [Mar 18 15:08:41.557] I (725) heap_init: At 3FFC9078 len 00016F88 (91 KiB): DRAM [Mar 18 15:08:41.557] I (731) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM [Mar 18 15:08:41.557] I (737) heap_init: At 40078000 len 00008000 (32 KiB): IRAM [Mar 18 15:08:41.557] I (743) heap_init: At 4009E4F0 len 00001B10 (6 KiB): IRAM [Mar 18 15:08:41.557] I (750) cpu_start: Pro cpu start user code [Mar 18 15:08:41.557] I (766) spi_flash: detected chip: generic [Mar 18 15:08:41.661] I (767) spi_flash: flash io: qio [Mar 18 15:08:41.661] I (767) cpu_start: Starting scheduler on PRO CPU. [Mar 18 15:08:41.661] [Mar 18 15:08:41.661] [Mar 18 15:08:41.661] mgos_freertos.c:155 app1 1.0 (20210318-180524) [Mar 18 15:08:41.661] mgos_freertos.c:157 Mongoose OS 2.19.1 (20210318-180523/2.19.1-gd52032f) [Mar 18 15:08:41.661] mgos_freertos.c:161 CPU: 160 MHz, FreeRTOS 8.2.0, heap: 255848 total, 224772 free [Mar 18 15:08:41.661] mgos_freertos.c:163 Newlib 3.0.0 [Mar 18 15:08:41.661] esp32_main.c:65 ESP-IDF 4.2-r1 [Mar 18 15:08:41.661] esp32_main.c:68 Boot partition: app_0; flash: 4M [Mar 18 15:08:41.661] mongoose.c:15677 Mongoose 6.18, LwIP 2.1.3 [Mar 18 15:08:41.661] mongoose.c:4938 mbed TLS 2.16.6-cesanta1 [Mar 18 15:08:41.661] mgos_vfs_dev.c:73 fs_0: esp32part ({"label": "fs_0"}), size 262144 [Mar 18 15:08:41.661] mgos_vfs_dev.c:73 fs_1: esp32part ({"label": "fs_1"}), size 262144 [Mar 18 15:08:41.661] mgos_vfs.c:174 /: SPIFFS @ fs_0, opts {"bs":4096,"ps":256,"es":4096} [Mar 18 15:08:41.752] mgos_vfs.c:347 /: size 233681, used: 127759, free: 105922 [Mar 18 15:08:41.873] mgos_sys_config.c:368 MAC: f0:08:d1:c8:cf:98 [Mar 18 15:08:41.873] mgos_sys_config.c:376 WDT: 30 seconds [Mar 18 15:08:41.873] esp32_i2c_master.c:393 I2C0 init ok (SDA: 32, SCL: 33, freq: 100000) [Mar 18 15:08:41.873] I (1311) BTDM_INIT: BT controller compile version [3723d5b] [Mar 18 15:08:41.873] W (1311) phy_init: failed to load RF calibration data (0x1102), falling back to full calibration [Mar 18 15:08:42.009] I (1451) phy: phy_version: 4500, 0cd6843, Sep 17 2020, 15:37:07, 0, 2 [Mar 18 15:08:42.009] Coex register schm btdm cb faild [Mar 18 15:08:42.487] esp32_bt.c:177 Bluetooth init ok, MTU 500, pairing enabled, 0 paired devices [Mar 18 15:08:42.487] mgos_ota_shadow_lib:116 OTA over shadow initialised [Mar 18 15:08:42.487] mgos_wifi.c:458 WiFi mode: AP [Mar 18 15:08:42.487] I (1831) wifi:wifi driver task: 3ffb7190, prio:23, stack:6656, core=0 [Mar 18 15:08:42.487] I (1851) wifi:wifi firmware version: 1865b55 [Mar 18 15:08:42.487] I (1851) wifi:wifi certification version: v7.0 [Mar 18 15:08:42.487] I (1861) wifi:config NVS flash: enabled [Mar 18 15:08:42.487] I (1861) wifi:config nano formating: disabled [Mar 18 15:08:42.487] I (1861) wifi:Init data frame dynamic rx buffer num: 16 [Mar 18 15:08:42.487] I (1871) wifi:Init management frame dynamic rx buffer num: 16 [Mar 18 15:08:42.487] I (1881) wifi:Init management short buffer num: 32 [Mar 18 15:08:42.487] I (1881) wifi:Init dynamic tx buffer num: 16 [Mar 18 15:08:42.487] I (1881) wifi:Init static rx buffer size: 1600 [Mar 18 15:08:42.487] I (1891) wifi:Init static rx buffer num: 4 [Mar 18 15:08:42.487] I (1891) wifi:Init dynamic rx buffer num: 16 [Mar 18 15:08:42.487] I (1901) wifi_init: rx ba win: 4 [Mar 18 15:08:42.487] I (1901) wifi_init: tcpip mbox: 32 [Mar 18 15:08:42.487] I (1911) wifi_init: udp mbox: 6 [Mar 18 15:08:42.487] I (1911) wifi_init: tcp mbox: 6 [Mar 18 15:08:42.487] I (1911) wifi_init: tcp tx win: 5744 [Mar 18 15:08:42.487] I (1921) wifi_init: tcp rx win: 5744 [Mar 18 15:08:42.487] I (1921) wifi_init: tcp mss: 1440 [Mar 18 15:08:42.487] I (1931) wifi_init: WiFi IRAM OP enabled [Mar 18 15:08:42.487] I (1931) wifi_init: WiFi RX IRAM OP enabled [Mar 18 15:08:42.487] esp32_wifi.c:469 WiFi AP: SSID Mongoose_C8CF98, channel 6 [Mar 18 15:08:43.091] esp32_wifi.c:670 WiFi AP: protocol BGN (0x7) [Mar 18 15:08:43.091] I (2461) wifi:mode : softAP (f0:08:d1:c8:cf:99) [Mar 18 15:08:43.091] I (2471) wifi:Total power save buffer number: 8 [Mar 18 15:08:43.091] I (2471) wifi:Init max length of beacon: 752/752 [Mar 18 15:08:43.091] I (2481) wifi:Init max length of beacon: 752/752 [Mar 18 15:08:43.091] I (2481) wifi:Set ps type: 0 [Mar 18 15:08:43.091] [Mar 18 15:08:43.091] esp32_wifi.c:529 WiFi AP IP: 192.168.4.1/255.255.255.0 gw 192.168.4.1, DHCP range 192.168.4.2 - 192.168.4.100 [Mar 18 15:08:43.091] mgos_http_server.c:368 HTTP server started on [80] [Mar 18 15:08:43.091] mgos_provision_btn.c:90 Factory reset button: pin 0, pull up, hold_ms 0 (hold on boot) [Mar 18 15:08:43.091] mgos_provision_stat:120 Max state: 0 [Mar 18 15:08:43.091] mgos_rpc_channel_mq:203 0x3ffdb82c esp32_C8CF98/rpc [Mar 18 15:08:43.091] mgos_rpc_channel_ua:313 0x3ffdbf50 UART0 [Mar 18 15:08:43.091] mgos_init.c:36 Init done, RAM: 269304 total, 144956 free, 144956 min free [Mar 18 15:08:43.456] LED on -> false [Mar 18 15:08:43.527] mgos_mongoose.c:66 New heap free LWM: 118352 [Mar 18 15:08:43.527] mgos_ota_core.c:1330 UID: 0fef52e4924af156, license: none [Mar 18 15:08:43.527] esp32_bt_gap.c:100 BT device name esp32_C8CF98, addr f0:08:d1:c8:cf:9a,1 [Mar 18 15:08:43.527] esp32_bt_gatts.c:394 Starting BT service 5f6d4f53-5f44-4247-5f53-56435f49445f [Mar 18 15:08:43.527] esp32_bt_gatts.c:394 Starting BT service 5f6d4f53-5f52-5043-5f53-56435f49445f [Mar 18 15:08:44.467] online: false {"ram_free":123084,"uptime":2.870466,"btnCount":0,"on":false} [Mar 18 15:08:45.460] online: false {"ram_free":123064,"uptime":3.870175,"btnCount":0,"on":false} [Mar 18 15:08:46.470] online: false {"ram_free":123064,"uptime":4.870221,"btnCount":0,"on":false}

Configurando SSID e WIFI

mos wifi "Andreia Oi Miguel 2.4G" 12345678

$ mos wifi "Andreia Oi Miguel 2.4G" 12345678 Getting configuration... Setting new configuration... Command completed.

[Mar 18 15:17:10.966] I (4488) wifi:state: assoc -> run (10) [Mar 18 15:17:10.966] mgos_mongoose.c:66 New heap free LWM: 116612 [Mar 18 15:17:11.028] I (4528) wifi:connected with Andreia Oi Miguel 2.4G, aid = 1, channel 6, BW20, bssid = 9c:52:f8:43:7a:e0 [Mar 18 15:17:11.028] I (4538) wifi:security: WPA2-PSK, phy: bgn, rssi: -41 [Mar 18 15:17:11.028] I (4548) wifi:pm start, type: 0 [Mar 18 15:17:11.028] [Mar 18 15:17:11.028] mgos_wifi.c:136 WiFi STA: Connected, BSSID 9c:52:f8:43:7a:e0 ch 6 RSSI -42 [Mar 18 15:17:11.028] mgos_net.c:90 WiFi STA: connected [Mar 18 15:17:11.028] I (4568) wifi:AP's beacon interval = 102400 us, DTIM period = 1 [Mar 18 15:17:11.785] online: false {"ram_free":125128,"uptime":4.266742,"btnCount":0,"on":false} [Mar 18 15:17:12.787] online: false {"ram_free":125112,"uptime":5.267389,"btnCount":0,"on":false} [Mar 18 15:17:13.226] I (6728) esp_netif_handlers: sta ip: 192.168.100.116, mask: 255.255.255.0, gw: 192.168.100.1 [Mar 18 15:17:13.226] mgos_net.c:102 WiFi STA: ready, IP 192.168.100.116, GW 192.168.100.1, DNS 192.168.100.1 [Mar 18 15:17:13.226] mgos_provision_state:44 Current state: 1 -> 2 [Mar 18 15:17:13.226] mgos_provision_state:73 Setting provisioning timeout for 300 seconds [Mar 18 15:17:13.226] esp32_bt.c:82 Network is up, disabling Bluetooth [Mar 18 15:17:13.333] mgos_sys_config.c:174 Saved to conf9.json [Mar 18 15:17:13.790] online: false {"ram_free":162624,"uptime":6.266802,"btnCount":0,"on":false} [Mar 18 15:17:14.375] mgos_sntp.c:96 SNTP query to time.google.com [Mar 18 15:17:14.482] mgos_sntp.c:59 SNTP reply from 216.239.35.0: time 1616091435.341095, local 386.448222, delta 1616091048.892873 [Mar 18 15:17:14.777] online: false {"ram_free":162096,"uptime":7.266806,"btnCount":0,"on":false}


Pegue o TOKEN

Offline

mos config-set dash.enable=true dash.token=TOKEN
mos config-set dash.enable=true dash.token=xxxxxxxxxxxxxxxxxxxxxxx Getting configuration... Setting new configuration... Command completed.

Online!

Alterando init.js 
load('api_timer.js');

Timer.set(1000, Timer.REPEAT, function() {
    print('Hello From Smartcore!!!');
}, null);





$ mos build --platform esp32
Connecting to https://build.mongoose-os.com, user test
Uploading sources (1476 bytes)
Firmware saved to C:\mos\app1\build\fw.zip
Command completed.
$ mos flash 
ACESSANDO ThingStream via PPPoS
Na pasta MOS descompacte
git clone https://github.com/mongoose-os-apps/empty my-app
Cloning into 'my-app'...
remote: Counting objects: 68, done.
remote: Total 68 (delta 0), reused 0 (delta 0), pack-reused 68
Unpacking objects: 100% (68/68), done.
cd my-app    
  • edite mos.yml e coloque configurações da rede e MQTT
config_schema: - ["pppos.enable", true] - ["pppos.uart_no", 1] - ["pppos.baud_rate", 115200] - ["pppos.fc_enable", false] - ["pppos.apn", "java.claro.com.br"] - ["pppos.user", "claro"] - ["pppos.password", "claro"] - ["mqtt.enable", true] - ["mqtt.server", "52.211.238.211:1883"] - ["mqtt.user", "XXXXXXXXXXXXXXXXXXXX"] - ["mqtt.pass", "n6omeXXXXfBpKY2638AgYn1DqpZJa0lpBCI8yhzw"] - ["mqtt.client_id", "device:xxxxc9a7-xxxx-4e46-xxxx-a390f2e4ca86"] libs: - origin: https://github.com/mongoose-os-libs/pppos - origin: https://github.com/mongoose-os-libs/mqtt - origin: https://github.com/mongoose-os-libs/mjs - origin: https://github.com/mongoose-os-libs/boards - origin: https://github.com/mongoose-os-libs/ca-bundle - origin: https://github.com/mongoose-os-libs/rpc-service-config - origin: https://github.com/mongoose-os-libs/rpc-service-fs - origin: https://github.com/mongoose-os-libs/rpc-uart

  • Altere ini.js para
load('api_timer.js'); load('api_sys.js'); load('api_config.js'); load('api_mqtt.js'); load('api_log.js'); MQTT.setEventHandler(function(conn, ev, edata) { if (ev !== 0) print('MQTT event handler: got', ev); }, null); Timer.set(60000, Timer.REPEAT, function() { let res = MQTT.pub('esp32-sniffer/a4cf127531c8/ble', JSON.stringify({ temperatura: Math.random() * 100.0 , umidade: Math.random() * 100.0 }), 1); print('Published:', res ? 'yes' : 'no'); }, null);

  • em mgos_pppos.c tive que comentar as linhas abaixo (sob investigação) (requer compilar localmente)


  • Ligue os pinos 16 (TXD) e 17 (RXD) nos (RXD) (TXD) do modem U-BLOX SARA G350
  • C:\mos\my-app>c:\mos\mos build --platform esp32
  • C:\mos\my-app>c:\mos\mos flash

Veja vídeo


Dados no ThingStream



Compilando local

C:\mos\my-app>\mos\mos build --platform esp32 --local --verbose
e
então
C:\mos\my-app>\mos\mos build --platform esp32 --local --verbose  --no-libs-update

Acessando Remotamente

Com o TOKEN em mãos, será necessário transferir para o U-BLOX NINA W106 com o comando

C:\mos\my-app>c:\mos\mos config-set dash.enable=true dash.token=xxxxxxxxxxxxxxxxxxxxx --port comX

Mas, antes, deves adcionar em mos.yml

libs:
  ...
  - origin: https://github.com/mongoose-os-libs/dash
Então compile novamente

C:\mos\my-app>\mos\mos build --platform esp32 --local --verbose  --no-libs-update

e grave

C:\mos\my-app>c:\mos\mos flash --port COM8

Entrando no mDASH



Agora você pode atualizar remotamente a aplicação (JS) rodando no U-BLOX NINA W106, resetar, listar arquivos, RPC etc.


suporte@smartcore.com.br

Agradecimentos à @scaprile
no FORUM

REFERÊNCIAS


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   

Mongoose no u-blox NINA W106 - PPPos no SARA G350 - ACESSANDO THINGSTREAM COM JS (MQTT)

 


O objetivo deste BLOG é demonstrar como é possível utilizar o Mongoose para programação do u-blox NINA W106. Foi utilizado o U-BLOX NINA W106 para o teste. A aplicação habilita que execute no MONGOOSE um STACK para acesso ao PPPos e então publique dados no broker MQTT da U-BLOX (ThingStream).

W106
Wi-Fi 802.11b/g/n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32, com 4MB FLASH

SARA G350



A série SARA-G3 de módulos GSM / GPRS apresenta consumo de energia extremamente baixo e um fator de forma LGA em miniatura. Os módulos SARA-G3 são intercambiáveis ​​e foram projetados tendo em mente as diversas necessidades dos clientes M2M. Diferentes funcionalidades e conjuntos de recursos estão disponíveis para atender aos diferentes requisitos do cliente e da aplicação. SARA-G340 / G350 são módulos GSM / GPRS completos com um conjunto abrangente de recursos, incluindo um amplo conjunto de protocolos de internet (TCP, UDP, HTTP, FTP e SMTP). Elas têm acesso totalmente integrado a chips de posicionamento GNSS u-blox e módulos, junto com a funcionalidade A-GNSS (AssistNow On line e AssistNow Off-line) incorporada. SARA-G350 é o versão quad-band para conectividade global e SARA-G340 (900/1800 MHz) é a versão de banda dupla para otimização de custos uso na Europa e na Ásia. Seu rico conjunto de recursos permite que os clientes desenvolvam facilmente uma ampla gama de dispositivos M2M com desenvolvimento mínimo de software no processador host. SARA-G340 ATEX e SARA-G350 ATEX são ATEX / IECEx variantes certificadas que complementam ainda mais a série de produtos oferecendo a solução ideal para o desenvolvimento de dispositivos inteligentes implantados em ambientes potencialmente explosivos. Módulos celulares u-blox são certificados e aprovados pelo principal órgãos reguladores e operadoras. Software RIL para Android está disponível gratuitamente. Os módulos SARA-G3 são fabricados em locais com certificação ISO / TS 16949. Cada módulo é testado e inspecionado durante a produção. Os módulos são qualificados de acordo com a ISO 16750 - Condições ambientais e testes elétricos para equipamentos elétricos e eletrônicos para rodovias veículos.

PPP
 

Em redes de computadores, o Point-to-Point Protocol (PPP), em português Protocolo ponto-a-ponto é um protocolo de enlace de dados (camada 2) usado para estabelecer uma conexão direta entre dois nós. Ele pode fornecer autenticação de conexão, criptografia de transmissão (usando ECP, RFC 1968) e compressão.

O PPP é usado sobre muitos tipos de redes físicas incluindo cabo serial, linha telefônica, linha tronco, telefone celular, enlaces de rádio especializados e enlaces de fibra ótica como SONET. O PPP também é usado sobre conexões de acesso à Internet. Provedores de serviços de Internet têm usado o PPP para acesso discado à Internet pelos clientes, uma vez que pacotes IP não podem ser transmitidos sobre uma linha de modem por si próprios, sem algum protocolo de enlace de dados. 

Conheça ThingStream, servidor MQTT da U-BLOX
Implementa também SSL e SN-MQTT

Ambiente thingstream

Características:
  • o custo do Thingstream como um MQTT Broker é muito menor do que o custo daqueles associados ao Azure e AWS;
  • o gerenciador de fluxo de dados é uma excelente vantagem, dados podem ser tratados no servidor e então encaminhados;
  • permite programação Node.js;
  • a segurança é diferente e muito mais simplificada do que tentar fazer uma troca de certificados com a AWS etc;
  • tem uma conexão segura em vez do dispositivo. Isso realmente simplifica a integração;
  • capacidade de se inscrever em vários tópicos diferentes;
  • nós para acessos para vários serviços da AWS Amazon, Azure IoT, IBM Watson, IFTTT (DashBoard e uma infinidade de outras opções)
  • criação de Coisas (Thing);
  • monitoração de eventos MQTT;
  • alertas quando algo não vai bem.
No modo tradicional, se você quer acessar AWS, AZURE, etc:
  • você deve fazer registro
  • gerar Certificados
  • manter, guardar e proteger seus Certificados
  • despachar cada Certificado um por um para os Devices na produção
  • você precisa manter identidades diferentes por cada um dispositivo e entregá-los com segurança
  • fortes impactos na complexidade na logística, produção tempo, configuração do sistema e custos de manutenção
Com ThingStream, se você quer acessar AWS, AZURE, etc:
  • você deve fazer um registro de CA (certificate authority) (Access ID e Secret Key), exemplo, IAM na AMAZON.
  • quando você cria um Device (Things) no ThingStream, você deve pegar as credenciais (Username, Password, Client ID) (Device Certificate), basicamente muda Client Id e Password para cada Device
  • utilize estas credenciais (Things) (Username, Password e Client ID) no Device (U-BLOX NINA W106) para acessar o ThingStream  via MQTT
  • crie Tópicos (Topics) que devem acessados pelos Devices (U-BLOX NINA W106), ou seja, para fazer Publish ou Subscribe
  • no DATAFLOW manager (Flows), o Nó ThingStream Subscribe deve estar conectado à um Tópico previamente criado para o seu Device (U-BLOX NINA W106), é por ele que começa o disparo para o DATAFLOW manager
  • Dentro do DATAFLOW pode de ter vários Nós ThingStream Subscribe
  • no DATAFLOW manager tenha fácil acesso à AWS, AZURE, etc utilizando Access ID e Secret Key e então solicite os serviços disponíveis (S3, LAMBDA, etc) (No caso da AMAZON)

FLOW

Saldo de "Publish"

Registros dos Eventos


Planos acessíveis



O que é o mongoose OS

Mongoose OS é um pequeno RTOS desenvolvido por Cesanta, Irlanda. Seu suporte a muitos pequenos e poderosos MCU como ESP32 (U-BLOX NINA W106). Mongoose OS é um sistema operacional integrado de código aberto para microcontroladores conectados de baixa potência.

Código em C ou JavaScript;
Recursos de segurança como suporte a chip de criptografia, criptografia de sistema de arquivos, etc;
AWS IoT integrado, integração do Google IoT;
Motor JavaScript incorporado - mJS;

Benefícios do Mongoose OS:
Provas rápidas de conceitos / protótipos;
Menor tempo de comercialização a um custo ideal;
Seguro, confiável e verificado por empresas líderes;
Infraestrutura confiável para produto comercial

https://mongoose-os.com/


u-blox NINA W106 e Moogoose

Como o módulo u-blox NINA W106 é baseado no chip ESP32 (cpu), será possível rodar o Mongoose sem problemas. O usuário deve dar atenção ao mapeamento de GPIOS da U-BLOX apenas conforme datasheet.

No link abaixo, há um roteiro muito interessante para que você possa preparar o ambiente para programar o u-blox NINA W106 


Basicamente

Crie uma pasta, MOS, copie o EXE para ela, crie um PATH no WINDOWS, crie pasta Projeto, baixe APP, compile na nuvem, faça o FLASH para o  u-blox NINA W106, configure SSID/PASSWORD, cadastre na Nuvem!


TESTANDO NO u-BLOX NINA W106

Seleção do ESP32 (U-BLOX NINA W106)

Criando Projeto

mkdir demo-js

mos clone https://github.com/mongoose-os-apps/demo-js app1

$ mos clone https://github.com/mongoose-os-apps/demo-js app1 app1: Does not exist, cloning from "https://github.com/mongoose-os-apps/demo-js"... app1: Checking out 2.19.1... app1: Done, hash e4ecb176b4e95f53e5938724b6cb6723b4b95fad

mos build --platform esp32

mos build --platform esp32 Connecting to https://build.mongoose-os.com, user test Uploading sources (2668 bytes) Firmware saved to C:\mos\app1\build\fw.zip Command completed.

mos flash

$ mos flash Loaded app1/esp32 version 1.0 (20210318-180524) Opening COM35 @ 115200... Connecting to ESP32 ROM, attempt 1 of 10... Connecting to ESP32 ROM, attempt 2 of 10... Connected, chip: ESP32D0WDQ6 R1 Running flasher @ 921600... Flasher is running Flash size: 4194304, params: 0x022f (dio,32m,80m) Flash encryption: disabled, scheme: None Secure boot: disabled Deduping... Writing... 28672 @ 0x1000 4096 @ 0x8000 16384 @ 0x9000 8192 @ 0xd000 1572864 @ 0x10000 262144 @ 0x190000 Wrote 1885280 bytes in 16.93 seconds (869.93 KBit/sec) Verifying... 25456 @ 0x1000 3072 @ 0x8000 16384 @ 0x9000 8192 @ 0xd000 1570032 @ 0x10000 262144 @ 0x190000 Booting firmware... All done!

Execução

[Mar 18 15:08:40.981] ������������� [Mar 18 15:08:40.981] I (117) boot: 5 fs_1 FS 01 82 00350000 00040000 00000000 [Mar 18 15:08:40.981] I (125) boot: End of partition table [Mar 18 15:08:40.981] I (130) boot: OTA data 0: seq 0x00000001, st 0x10, CRC 0x157a2b85, valid? 1 [Mar 18 15:08:40.981] I (137) boot: OTA data 1: seq 0x00000000, st 0x00, CRC 0x00000000, valid? 0 [Mar 18 15:08:40.981] I (145) boot_comm: chip revision: 1, min. application chip revision: 0 [Mar 18 15:08:40.981] I (152) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x44298 (279192) map [Mar 18 15:08:41.088] I (242) esp_image: segment 1: paddr=0x000542c0 vaddr=0x3ffbdb60 size=0x0394c ( 14668) load [Mar 18 15:08:41.088] I (247) esp_image: segment 2: paddr=0x00057c14 vaddr=0x40080000 size=0x00400 ( 1024) load [Mar 18 15:08:41.088] I (249) esp_image: segment 3: paddr=0x0005801c vaddr=0x40080400 size=0x07ffc ( 32764) load [Mar 18 15:08:41.088] I (270) esp_image: segment 4: paddr=0x00060020 vaddr=0x400d0020 size=0x119374 (1151860) map [Mar 18 15:08:41.557] I (605) esp_image: segment 5: paddr=0x0017939c vaddr=0x400883fc size=0x160f4 ( 90356) load [Mar 18 15:08:41.557] I (637) esp_image: segment 6: paddr=0x0018f498 vaddr=0x400c0000 size=0x00034 ( 52) load [Mar 18 15:08:41.557] I (653) boot: Loaded app from partition at offset 0x10000 [Mar 18 15:08:41.557] I (653) boot: Disabling RNG early entropy source... [Mar 18 15:08:41.557] I (654) cpu_start: Pro cpu up. [Mar 18 15:08:41.557] I (657) cpu_start: Application information: [Mar 18 15:08:41.557] I (662) cpu_start: Project name: app1 [Mar 18 15:08:41.557] I (667) cpu_start: App version: 2.19.1 [Mar 18 15:08:41.557] I (672) cpu_start: Compile time: Mar 18 2021 18:04:52 [Mar 18 15:08:41.557] I (678) cpu_start: ELF file SHA256: 8a6b25f01d7c479b... [Mar 18 15:08:41.557] I (684) cpu_start: ESP-IDF: 4.2-r1 [Mar 18 15:08:41.557] I (689) cpu_start: Single core mode [Mar 18 15:08:41.557] I (693) heap_init: Initializing. RAM available for dynamic allocation: [Mar 18 15:08:41.557] I (700) heap_init: At 3FF80034 len 00001FCC (7 KiB): RTCRAM [Mar 18 15:08:41.557] I (706) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM [Mar 18 15:08:41.557] I (713) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM [Mar 18 15:08:41.557] I (719) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM [Mar 18 15:08:41.557] I (725) heap_init: At 3FFC9078 len 00016F88 (91 KiB): DRAM [Mar 18 15:08:41.557] I (731) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM [Mar 18 15:08:41.557] I (737) heap_init: At 40078000 len 00008000 (32 KiB): IRAM [Mar 18 15:08:41.557] I (743) heap_init: At 4009E4F0 len 00001B10 (6 KiB): IRAM [Mar 18 15:08:41.557] I (750) cpu_start: Pro cpu start user code [Mar 18 15:08:41.557] I (766) spi_flash: detected chip: generic [Mar 18 15:08:41.661] I (767) spi_flash: flash io: qio [Mar 18 15:08:41.661] I (767) cpu_start: Starting scheduler on PRO CPU. [Mar 18 15:08:41.661] [Mar 18 15:08:41.661] [Mar 18 15:08:41.661] mgos_freertos.c:155 app1 1.0 (20210318-180524) [Mar 18 15:08:41.661] mgos_freertos.c:157 Mongoose OS 2.19.1 (20210318-180523/2.19.1-gd52032f) [Mar 18 15:08:41.661] mgos_freertos.c:161 CPU: 160 MHz, FreeRTOS 8.2.0, heap: 255848 total, 224772 free [Mar 18 15:08:41.661] mgos_freertos.c:163 Newlib 3.0.0 [Mar 18 15:08:41.661] esp32_main.c:65 ESP-IDF 4.2-r1 [Mar 18 15:08:41.661] esp32_main.c:68 Boot partition: app_0; flash: 4M [Mar 18 15:08:41.661] mongoose.c:15677 Mongoose 6.18, LwIP 2.1.3 [Mar 18 15:08:41.661] mongoose.c:4938 mbed TLS 2.16.6-cesanta1 [Mar 18 15:08:41.661] mgos_vfs_dev.c:73 fs_0: esp32part ({"label": "fs_0"}), size 262144 [Mar 18 15:08:41.661] mgos_vfs_dev.c:73 fs_1: esp32part ({"label": "fs_1"}), size 262144 [Mar 18 15:08:41.661] mgos_vfs.c:174 /: SPIFFS @ fs_0, opts {"bs":4096,"ps":256,"es":4096} [Mar 18 15:08:41.752] mgos_vfs.c:347 /: size 233681, used: 127759, free: 105922 [Mar 18 15:08:41.873] mgos_sys_config.c:368 MAC: f0:08:d1:c8:cf:98 [Mar 18 15:08:41.873] mgos_sys_config.c:376 WDT: 30 seconds [Mar 18 15:08:41.873] esp32_i2c_master.c:393 I2C0 init ok (SDA: 32, SCL: 33, freq: 100000) [Mar 18 15:08:41.873] I (1311) BTDM_INIT: BT controller compile version [3723d5b] [Mar 18 15:08:41.873] W (1311) phy_init: failed to load RF calibration data (0x1102), falling back to full calibration [Mar 18 15:08:42.009] I (1451) phy: phy_version: 4500, 0cd6843, Sep 17 2020, 15:37:07, 0, 2 [Mar 18 15:08:42.009] Coex register schm btdm cb faild [Mar 18 15:08:42.487] esp32_bt.c:177 Bluetooth init ok, MTU 500, pairing enabled, 0 paired devices [Mar 18 15:08:42.487] mgos_ota_shadow_lib:116 OTA over shadow initialised [Mar 18 15:08:42.487] mgos_wifi.c:458 WiFi mode: AP [Mar 18 15:08:42.487] I (1831) wifi:wifi driver task: 3ffb7190, prio:23, stack:6656, core=0 [Mar 18 15:08:42.487] I (1851) wifi:wifi firmware version: 1865b55 [Mar 18 15:08:42.487] I (1851) wifi:wifi certification version: v7.0 [Mar 18 15:08:42.487] I (1861) wifi:config NVS flash: enabled [Mar 18 15:08:42.487] I (1861) wifi:config nano formating: disabled [Mar 18 15:08:42.487] I (1861) wifi:Init data frame dynamic rx buffer num: 16 [Mar 18 15:08:42.487] I (1871) wifi:Init management frame dynamic rx buffer num: 16 [Mar 18 15:08:42.487] I (1881) wifi:Init management short buffer num: 32 [Mar 18 15:08:42.487] I (1881) wifi:Init dynamic tx buffer num: 16 [Mar 18 15:08:42.487] I (1881) wifi:Init static rx buffer size: 1600 [Mar 18 15:08:42.487] I (1891) wifi:Init static rx buffer num: 4 [Mar 18 15:08:42.487] I (1891) wifi:Init dynamic rx buffer num: 16 [Mar 18 15:08:42.487] I (1901) wifi_init: rx ba win: 4 [Mar 18 15:08:42.487] I (1901) wifi_init: tcpip mbox: 32 [Mar 18 15:08:42.487] I (1911) wifi_init: udp mbox: 6 [Mar 18 15:08:42.487] I (1911) wifi_init: tcp mbox: 6 [Mar 18 15:08:42.487] I (1911) wifi_init: tcp tx win: 5744 [Mar 18 15:08:42.487] I (1921) wifi_init: tcp rx win: 5744 [Mar 18 15:08:42.487] I (1921) wifi_init: tcp mss: 1440 [Mar 18 15:08:42.487] I (1931) wifi_init: WiFi IRAM OP enabled [Mar 18 15:08:42.487] I (1931) wifi_init: WiFi RX IRAM OP enabled [Mar 18 15:08:42.487] esp32_wifi.c:469 WiFi AP: SSID Mongoose_C8CF98, channel 6 [Mar 18 15:08:43.091] esp32_wifi.c:670 WiFi AP: protocol BGN (0x7) [Mar 18 15:08:43.091] I (2461) wifi:mode : softAP (f0:08:d1:c8:cf:99) [Mar 18 15:08:43.091] I (2471) wifi:Total power save buffer number: 8 [Mar 18 15:08:43.091] I (2471) wifi:Init max length of beacon: 752/752 [Mar 18 15:08:43.091] I (2481) wifi:Init max length of beacon: 752/752 [Mar 18 15:08:43.091] I (2481) wifi:Set ps type: 0 [Mar 18 15:08:43.091] [Mar 18 15:08:43.091] esp32_wifi.c:529 WiFi AP IP: 192.168.4.1/255.255.255.0 gw 192.168.4.1, DHCP range 192.168.4.2 - 192.168.4.100 [Mar 18 15:08:43.091] mgos_http_server.c:368 HTTP server started on [80] [Mar 18 15:08:43.091] mgos_provision_btn.c:90 Factory reset button: pin 0, pull up, hold_ms 0 (hold on boot) [Mar 18 15:08:43.091] mgos_provision_stat:120 Max state: 0 [Mar 18 15:08:43.091] mgos_rpc_channel_mq:203 0x3ffdb82c esp32_C8CF98/rpc [Mar 18 15:08:43.091] mgos_rpc_channel_ua:313 0x3ffdbf50 UART0 [Mar 18 15:08:43.091] mgos_init.c:36 Init done, RAM: 269304 total, 144956 free, 144956 min free [Mar 18 15:08:43.456] LED on -> false [Mar 18 15:08:43.527] mgos_mongoose.c:66 New heap free LWM: 118352 [Mar 18 15:08:43.527] mgos_ota_core.c:1330 UID: 0fef52e4924af156, license: none [Mar 18 15:08:43.527] esp32_bt_gap.c:100 BT device name esp32_C8CF98, addr f0:08:d1:c8:cf:9a,1 [Mar 18 15:08:43.527] esp32_bt_gatts.c:394 Starting BT service 5f6d4f53-5f44-4247-5f53-56435f49445f [Mar 18 15:08:43.527] esp32_bt_gatts.c:394 Starting BT service 5f6d4f53-5f52-5043-5f53-56435f49445f [Mar 18 15:08:44.467] online: false {"ram_free":123084,"uptime":2.870466,"btnCount":0,"on":false} [Mar 18 15:08:45.460] online: false {"ram_free":123064,"uptime":3.870175,"btnCount":0,"on":false} [Mar 18 15:08:46.470] online: false {"ram_free":123064,"uptime":4.870221,"btnCount":0,"on":false}

Configurando SSID e WIFI

mos wifi "Andreia Oi Miguel 2.4G" 12345678

$ mos wifi "Andreia Oi Miguel 2.4G" 12345678 Getting configuration... Setting new configuration... Command completed.

[Mar 18 15:17:10.966] I (4488) wifi:state: assoc -> run (10) [Mar 18 15:17:10.966] mgos_mongoose.c:66 New heap free LWM: 116612 [Mar 18 15:17:11.028] I (4528) wifi:connected with Andreia Oi Miguel 2.4G, aid = 1, channel 6, BW20, bssid = 9c:52:f8:43:7a:e0 [Mar 18 15:17:11.028] I (4538) wifi:security: WPA2-PSK, phy: bgn, rssi: -41 [Mar 18 15:17:11.028] I (4548) wifi:pm start, type: 0 [Mar 18 15:17:11.028] [Mar 18 15:17:11.028] mgos_wifi.c:136 WiFi STA: Connected, BSSID 9c:52:f8:43:7a:e0 ch 6 RSSI -42 [Mar 18 15:17:11.028] mgos_net.c:90 WiFi STA: connected [Mar 18 15:17:11.028] I (4568) wifi:AP's beacon interval = 102400 us, DTIM period = 1 [Mar 18 15:17:11.785] online: false {"ram_free":125128,"uptime":4.266742,"btnCount":0,"on":false} [Mar 18 15:17:12.787] online: false {"ram_free":125112,"uptime":5.267389,"btnCount":0,"on":false} [Mar 18 15:17:13.226] I (6728) esp_netif_handlers: sta ip: 192.168.100.116, mask: 255.255.255.0, gw: 192.168.100.1 [Mar 18 15:17:13.226] mgos_net.c:102 WiFi STA: ready, IP 192.168.100.116, GW 192.168.100.1, DNS 192.168.100.1 [Mar 18 15:17:13.226] mgos_provision_state:44 Current state: 1 -> 2 [Mar 18 15:17:13.226] mgos_provision_state:73 Setting provisioning timeout for 300 seconds [Mar 18 15:17:13.226] esp32_bt.c:82 Network is up, disabling Bluetooth [Mar 18 15:17:13.333] mgos_sys_config.c:174 Saved to conf9.json [Mar 18 15:17:13.790] online: false {"ram_free":162624,"uptime":6.266802,"btnCount":0,"on":false} [Mar 18 15:17:14.375] mgos_sntp.c:96 SNTP query to time.google.com [Mar 18 15:17:14.482] mgos_sntp.c:59 SNTP reply from 216.239.35.0: time 1616091435.341095, local 386.448222, delta 1616091048.892873 [Mar 18 15:17:14.777] online: false {"ram_free":162096,"uptime":7.266806,"btnCount":0,"on":false}


Pegue o TOKEN

Offline

mos config-set dash.enable=true dash.token=TOKEN
mos config-set dash.enable=true dash.token=xxxxxxxxxxxxxxxxxxxxxxx Getting configuration... Setting new configuration... Command completed.

Online!

Alterando init.js 
load('api_timer.js');

Timer.set(1000, Timer.REPEAT, function() {
    print('Hello From Smartcore!!!');
}, null);





$ mos build --platform esp32
Connecting to https://build.mongoose-os.com, user test
Uploading sources (1476 bytes)
Firmware saved to C:\mos\app1\build\fw.zip
Command completed.
$ mos flash 
ACESSANDO ThingStream via PPPoS
Na pasta MOS descompacte
git clone https://github.com/mongoose-os-apps/empty my-app
Cloning into 'my-app'...
remote: Counting objects: 68, done.
remote: Total 68 (delta 0), reused 0 (delta 0), pack-reused 68
Unpacking objects: 100% (68/68), done.
cd my-app    
  • edite mos.yml e coloque configurações da rede e MQTT
config_schema: - ["pppos.enable", true] - ["pppos.uart_no", 1] - ["pppos.baud_rate", 115200] - ["pppos.fc_enable", false] - ["pppos.apn", "java.claro.com.br"] - ["pppos.user", "claro"] - ["pppos.password", "claro"] - ["mqtt.enable", true] - ["mqtt.server", "52.211.238.211:1883"] - ["mqtt.user", "XXXXXXXXXXXXXXXXXXXX"] - ["mqtt.pass", "n6omeXXXXfBpKY2638AgYn1DqpZJa0lpBCI8yhzw"] - ["mqtt.client_id", "device:xxxxc9a7-xxxx-4e46-xxxx-a390f2e4ca86"] libs: - origin: https://github.com/mongoose-os-libs/pppos - origin: https://github.com/mongoose-os-libs/mqtt - origin: https://github.com/mongoose-os-libs/mjs - origin: https://github.com/mongoose-os-libs/boards - origin: https://github.com/mongoose-os-libs/ca-bundle - origin: https://github.com/mongoose-os-libs/rpc-service-config - origin: https://github.com/mongoose-os-libs/rpc-service-fs - origin: https://github.com/mongoose-os-libs/rpc-uart

  • Altere ini.js para
load('api_timer.js'); load('api_sys.js'); load('api_config.js'); load('api_mqtt.js'); load('api_log.js'); MQTT.setEventHandler(function(conn, ev, edata) { if (ev !== 0) print('MQTT event handler: got', ev); }, null); Timer.set(60000, Timer.REPEAT, function() { let res = MQTT.pub('esp32-sniffer/a4cf127531c8/ble', JSON.stringify({ temperatura: Math.random() * 100.0 , umidade: Math.random() * 100.0 }), 1); print('Published:', res ? 'yes' : 'no'); }, null);

  • em mgos_pppos.c tive que comentar as linhas abaixo (sob investigação) (requer compilar localmente)


  • Ligue os pinos 16 (TXD) e 17 (RXD) nos (RXD) (TXD) do modem U-BLOX SARA G350
  • C:\mos\my-app>c:\mos\mos build --platform esp32
  • C:\mos\my-app>c:\mos\mos flash

Veja vídeo


Dados no ThingStream



Compilando local

C:\mos\my-app>\mos\mos build --platform esp32 --local --verbose
e
então
C:\mos\my-app>\mos\mos build --platform esp32 --local --verbose  --no-libs-update

suporte@smartcore.com.br

Agradecimentos à @scaprile
no FORUM

REFERÊNCIAS

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