U-BLOX NINA W106 SENDO PROGRAMADO COM .NET nanoFramework - Amazon ALEXA
Mandando Temperatura e Umidade para Assistente Alexa falar
Testado no VISUAL STUDIO 2019
O objetivo deste BLOG é demonstrar como é possível utilizar programar o módulo U-BLOX NINA W106 com .NET nanoframework e comandá-lo via Assistente Alexa em Português.
"Alexa, em casa, ligue/desligue a lâmpada"
"Alexa, em casa, temperatura sala"
"Alexa, em casa, umidade quarto"
A temperatura e umidade serão dados RANDOM gerados pela aplicação .NET C# e publicados a cada 30 segundos, você pode colocar seu próprio sensor, como DHT11, DTH22, BME280, etc.
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
4Mb FLASH
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
ASSISTENTE ALEXA
A Amazon Alexa, por exemplo, é um serviço de assistente pessoal inteligente na nuvem onde pode ser solicitadas tarefas como realizar pesquisas, mandar executar uma lista de músicas ou questionar o horário atual. Segundo o site da Amazon Alexa, o serviço permite se conectar com dispositivos (AWS IoT Cor) e por meio da Web Service da Amazon, efetuar comandos de voz, interpretá-los e tomar uma ação correspondente.
AMAZON ECHO
A 3ª geração do popular Amazon Echo Dot controlado por voz vem com um novo design impressionante, um alto-falante mais potente e muitas funções inteligentes. Alexa responde a perguntas, lê notícias, fornece boletins meteorológicos, ajusta o alarme e controla dispositivos domésticos inteligentes compatíveis. E, claro, você também pode ouvir música. Transmita músicas da Amazon Music, Spotify, Tuneln ou outros serviços - e desfrute do som rico e alto. Tudo que você precisa fazer é dizer "Alexa" para despertar o dispositivo, e então este pequeno milagre tecnológico fará o que você quiser.
MQTT
Para os dispositivos de Internet das Coisas (IoT), a conexão com a Internet é um requisito. A conexão com a Internet permite que os dispositivos trabalhem entre si e com serviços de backend. O protocolo de rede subjacente da Internet é o TCP/IP. Desenvolvido com base na pilha TCP/IP, o MQTT (Message Queue Telemetry Transport) tornou-se o padrão para comunicações de IoT.
É um protocolo de mensagens de publicação/assinatura, extremamente simples e leve, projetado para dispositivos restritos e redes de baixa largura de banda, alta latência ou não confiáveis. Os princípios de design são minimizar a largura de banda da rede e os requisitos de recursos do dispositivo, ao mesmo tempo em que tentam garantir a confiabilidade e algum grau de garantia de entrega. Esses princípios também acabam por tornar o protocolo ideal do emergente mundo "máquina para máquina" (M2M) ou "Internet das Coisas" de dispositivos conectados, e para aplicativos móveis onde a largura de banda e a bateria estão em um prêmio.
O AWS IoT Core é uma plataforma que permite que você conecte dispositivos a serviços da AWS e outros dispositivos, proteja dados e interações, processe e haja de acordo com os dados do dispositivo e permita que os aplicativos interajam com dispositivos mesmo quando estiverem off-line.
Os dados são armazenados em um local que recebe o nome de Thing Shadow, use tópicos para habilitar aplicativos e coisas para obter, atualizar ou excluir as informações do estado para uma Coisa.
O Amazon Alexa é um serviço de voz na nuvem da Amazon que permite que os desenvolvedores controlem por voz os serviços da Amazon conectados. Um aplicativo exemplo é o Amazon Echo, que é um assistente de controle de voz. Quando os usuários falam com o Amazon Echo, ele analisa a voz recebida e faz uma resposta apropriada. Neste exemplo, apresenta-se como conectar os serviços da Amazon (incluindo o Amazon Alexa, o AWS Lambda, o AWS IoT Core, o AWS IAM) e utilizar o Amazon Alexa para controlar a Lâmpada no U-BLOX NINA W106.
O Amazon Alexa Skills Kit (ASK) é um serviço de voz. Ele pode ser conectado a serviços da nuvem e o usuário pode controlar por voz os serviços conectados e receber resposta de voz. O recurso de análise de voz fornecido pelo Amazon Alexa está pronto para uso, faz com que os desenvolvedores possam se concentrar no design do serviço em nuvem e no modelo de interação do usuário.
O Amazon AWS Lambda é um serviço de computação. As linguagens de programação suportadas inclui o Node.js, o Python e o java. O Lambda permite que os usuários configurem os recursos requeridos pelo cálculo (como memória, tempo de computação).
Os três elementos basicamente trabalham em conjunto:
(1) Quando um usuário diz "Lâmpada ligue" para o dispositivo de teste (que suporta Amazon Alexa), Amazon Alexa analisa o comando de voz de acordo com o esquema e o arquivo das declarações de amostra (fornecido pelo usuário antes) e gera intenção JSON.
(2) Amazon Alexa envia a intenção JSON para o AWS Lambda. De acordo com a intenção, o serviço Lambda envia uma mensagem de atualização para o serviço AWS IoT Core Shadow.
(3) O serviço AWS IoT Core Shadow atualiza o estado de sombra de acordo com a mensagem de atualização do serviço Lambda.
(3.1) Se o U-BLOX NINA W106 estiver on-line e tiver assinado o serviço de sombra, o U-BLOX NINA W106 ativa o LED.
(3.2) Em seguida, o Lambda gera a mensagem de resposta de texto e voz e envia para o Amazon Alexa.
(4) Finalmente, o usuário pode ouvir a mensagem de voz para indicar que o LED foi acionado com sucesso.
(5) Quando um usuário diz "lampada ligue" para o dispositivo de teste (que suporta Amazon Alexa), Amazon Alexa analisa o comando de voz de acordo com o esquema e o arquivo das declarações de amostra (fornecido pelo usuário antes) e gera intenção JSON também e o procedimento é o mesmo para os itens anteriores.
MONTANDO AS REGRAS NO ASSISTENTE DE VOZ ALEXA (Resumo)
Primeiramente cria-se uma skill na Amazon Alexa. Para isso, primeiro cadastra-se o nome de invocação. Esse nome de invocação é o nome que o Amazon Alexa irá identificar que se trata da skill criada. Em seguida, são criadas as ações ou intents, que o Amazon Alexa irá solicitar ao Amazon Lambda que seja executado cada comando.
Os comandos são criados na tela de intents. Para ativar a execução de um intent, podem ser criados diversos comandos. Ou seja, quando se quer que através de diversas maneiras de falar apenas uma específica ação seja executada, cria-se uma lista de comando para apenas um intent. Pode-se observar que o comando contém uma palavra entre chaves. Esta palavra chama-se slot. Um slot é uma espécie de variável, onde os seus valores podem ser previamente definidos.
Cada intent é uma ação. Cada ação pode ter um ou mais comandos. Cada comando pode ou não ter um slot. No comando de acender ou apagar o quarto verde vê-se que tem apenas um comando com um slot. Já na ação (intent) de acender ou apagar todas as luzes vê-se três comandos, ou três formas de chamar esta ação.
SERVIDOR LAMBDA
O AWS Lambda da Amazon é uma plataforma que permite que o usuário, ou cliente, pague apenas o que consumir. Disponibiliza processamento sempre que preciso, ou até quando agendado que seja executado automaticamente.
Com a alta disponibilidade, o usuário apenas fornece seu código, ou cria a sua Função do Lambda, como é chamado. Cada função é gerenciada pela Amazon, desde a disponibilidade de execução e segurança. Com o AWS Lambda pode-se conectar com outros serviços da Amazon, como o AWS IoT Core e a Amazon Alexa.
Principais pontos do programa
OBS: ASSISTENTE ALEXA CONVERSA COM LAMBDA QUE ENTÃO CONVERSA COM AWS IoT CORE E FINALMENTE O MÓDULO U-BLOX NINA W106.
AWS IoT Core
A função da Amazon voltada para a Internet das Coisas (AWS IoT Core) permite conectar dispositivos à Internet para que se possam ser transmitidos dados, armazenados e analisados. Muitos tipos de objetos são usados nas aplicações para Internet das Coisas, desde câmeras de segurança a refrigeradores. Seja qual for o dispositivo desde que possa ser ligado, pode fazer parte do IoT. Essas aplicações tornaram dados antigamente inúteis em dados importantes para os usuários.
A Amazon oferece uma plataforma de Internet of Things (Internet das Coisas) onde se gerenciam dispositivos na nuvem facilmente. Podem-se criar aplicações que processam ou analisam informações de dispositivos conectados sem necessitar que o cliente tenha uma infraestrutura. O AWS IoT Core permite suporte ao protocolo HTTP e MQTT, que visa reduzir consumo de dados na rede. Estes protocolos utilizam suas respectivas portas para acesso aos serviços.
Certificados obtidos na Amazon
aws-iot-private.pem.key
aws-iot-certificate.pem.crt
AmazonRootCA1.pem
"Ao contrário do Arduino (por exemplo) você pode fazer debug a sério do código que está executando. Sem necessitar de ligações ou hardware complexo com o JTAG no caso de programação C pura."
.NET nanoFramework é uma plataforma livre e de código aberto que permite a escrita de aplicativos de código gerenciados para dispositivos incorporados restritos. É adequado para muitos tipos de projetos, incluindo sensores de IoT, wearables, prova acadêmica de conceito, robótica, criações de hobistas/fabricantes ou até mesmo equipamentos industriais complexos. Isso torna o desenvolvimento dessas plataformas mais fácil, rápido e menos caro, dando aos desenvolvedores incorporados acesso a tecnologias e ferramentas modernas usadas pelos desenvolvedores de aplicativos desktop.
Os desenvolvedores podem aproveitar o poderoso e familiar Microsoft Visual Studio IDE e seu conhecimento .NET C# para escrever rapidamente código sem ter que se preocupar com os meandros de hardware de baixo nível de um microcontrolador. Os desenvolvedores do Desktop .NET se sentirão "em casa" e poderão usar suas habilidades no desenvolvimento de sistemas embarcados, ampliando o pool de desenvolvedores embarcados qualificados.
Ele inclui uma versão reduzida do CLR (Common Language Runtime, tempo de execução da linguagem comum .NET) e possui um subconjunto das bibliotecas de classe base .NET, juntamente com as APIs mais comuns incluídas na Universal Windows Platform (UWP) permitindo o reaproveitamento de códigos de aplicativos de desktop, aplicativos IoT Core, milhares de exemplos de código e projetos de código aberto.
Usando o Microsoft Visual Studio, um desenvolvedor pode implantar e depurar o código diretamente em hardware real.
//
// Copyright (c) .NET Foundation and Contributors
// See LICENSE file in the project root for full license information.
//
usingSystem;usingSystem.Diagnostics;usingSystem.Security.Cryptography.X509Certificates;usingSystem.Text;usingSystem.Threading;usingnanoFramework.M2Mqtt;usingnanoFramework.M2Mqtt.Messages;usingnanoFramework.Networking;usingSystem.Device.Gpio;namespaceAwsMQTT{publicclassProgram{////////////////////////////////////////////////////////////////////////////////
// make sure to add your AWS endpoint and region!!!
privatestaticreadonlystringawsHost="xxxxxxxxxxxxx-ats.iot.us-east-1.amazonaws.com";////////////////////////////////////////////////////////////////////////////////
//This should really be persisted across reboots, but an auto generated GUID is fine for testing.
privatestaticreadonlystringclientId=Guid.NewGuid().ToString();//////////////////////////////////////////////////////////////////////////////////
// make sure to respect the formating bellow to have a correct certificate & key
// - NO identation
// - start tag '-----BEGIN(...)' right after the string open double quote
// - end tag '-----END(...)' immediately before the string closing double quote
//////////////////////////////////////////////////////////////////////////////////
//Device Certificate copied from AWS (this is a non working example)
privatestaticreadonlystringclientRsaSha256Crt=@"-----BEGIN CERTIFICATE-----
MIIDWjCCAkKgAwIBAgIVAOqviqfRCWkOjPQ6f8KJE1MXQXUCMA0GCSqGSIb3DQEB
CwUAME0xSzBJBgNVBAsMQkFtYXpvbiBXZWIgU2VydmljZXMgTz1BbWF6b24uY29t
IEluYy4gTD1TZWF0dGxlIFNUPVdhc2hpbmd0b24gQz1VUzAeFw0yMTA3MzAxMTU1
MjNaFw00OTEyMzEyMzU5NTlaMB4xHDAaBgNVBAMME0FXUyBJb1QgQ2VydGlmaWNh
dGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6PPAhJ/FByBdHFwls
Wj458/HaIMwYsaafTuMJjUCo+GEQaIIYYKbwnuy5efD/zhvLoPmiRQM+eBV3OmxL
Hm96NobTqtpMpSpin8fSfC6xZa65nsMkiSEIFhwY4ousglWDXpLXMvd5PanmuBj2
JM0aWL7lOK1UVCf+xcJfM14nKnAJMg6/kc5FyQe96NFrLu5YWUJp0YzyvJSs/n/X
GOFYq0CD4EBjNZ8AJ7NrFtVzg5hgVFjUEZQf30nvFjKv94Wk6KNGLLgaPZGh3E5Y
/g0vXPIObY7ry+i3ZFfsyLXD8uM21nHqCE8TO/0dKT2BHhmy/xleLLh577U12sQe
9UfJAgMBAAGjYDBeMB8GA1UdIwQYMBaAFIsf5so9vvcPyvZx9oMOuKpzusQeMB0G
A1UdDgQWBBSwyOjirj8HlluOcxmocRBxeGUwEzAMBgNVHRMBAf8EAjAAMA4GA1Ud
DwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAQEAQlkyQ/AqAWDG1Cfal0ZZy6sZ
aWJOrEZA5y6ehMEcSb8yZp4sugvWGWPLaxpjjcuzn32RszSY4qVgDYQubA37C0dn
FWGJOsxf6wEtXeCvky02N8EzHl4/OAYsn12/zbWFo9Qdk0/MhFeaC2m4UMFEImBc
SMJiZPI9UcQikRmCpyzwbBrXlDviYkY61KCVla2TaXGnfcR+yXUrcUjWvb+WZRyw
oDCZnQEPln9fWkEtE6y2suBLRqE4DFdg62+ffE8yRsq2Iay4Ip/r0Eq2DC3P1GRm
DoFH7GdNbMPFhzkxe1KFbr/v1AqKPnf0hzjw7sCmYnXGMCD3GQL0yuqc6RTygg==
-----END CERTIFICATE-----";//Device private key copied from AWS (this is a non working example)
privatestaticreadonlystringclientRsaKey=@"-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAujzwISfxQcgXRxcJbFo+OfPx2iDMGLGmn07jCY1AqPhhEGiC
GGCm8J7suXnw/84by6D5okUDPngVdzpsSx5vejaG06raTKUqYp/H0nwusWWuuZ7D
JIkhCBYcGOKLrIJVg16S1zL3eT2p5rgY9iTNGli+5TitVFQn/sXCXzNeJypwCTIO
v5HORckHvejRay7uWFlCadGM8ryUrP5/1xjhWKtAg+BAYzWfACejaxbVc4OYYFRY
1BGUH99J7xYyr/eFpOijRiy4Gj2RodxOWP4NL1zyDm2O68vot2RX7Mi1w/LjNtZx
6ghPEzv9HSk9gR4Zsv8ZXiy4ee+1NdrEHvVHyQIDAQABAoIBABiAV98k0BqlZlqV
70lv/evF6jWWRwOgq5kd2cSx7qXMN4jfFu56GLxjTCWCo3Aj/4gkn3L3vVuElN5g
s0qWsHfVoJtMSPf4asEa4EES0VnJVNlax7WQzOWxcvTbKSEC7Jkh4hOpwuESeb2+
zpnjcZBbyJGDiVok0DY2ckHwEhz4wNcaVueKV39BIoVyRct4MbDEBdzz1qm0KjlN
VXR5OCIl/oIaf41D5Jh/R4J0Kdk5Yvj6DolC7rj7ZLQhB5I56bmtxk8plVQWJBoc
k/Fbl63NX2YQ/92sR9X+8xiA1cjOIdV3Sj/miQtOYAKiwt4hYGqX1lVlCUqlCSHs
HPyqibkCgYEA4GshHaMIjmez9hGknRsFJZqMNnx0mJRyKEfzqvgJcS4EMBzNTB/T
VK1MBKvuJ3JXGWwTjpRDc4P/6D5nbd54VPE5rwKoYOz7PEdr/CXyIhTxOqVsCbn+
DJcHnicEg/jdFxz1o6UPp3RAwKYZ5UibHAXYLX/4oAL+t8hBt8TjKAMCgYEA1HJT
RbxbrAQRknUTeTR9t5xRRhfzFg1Tv6pa+d9lhoNtJWvaq1kTQXbJzhU27DJdmYwB
YivPE/Z80LDtmttPcqENUGX2V11gBPD0U+xlBXy6TcjWlqIXzmaWxRJQJtFxDMf0
pem8Wl5UoLuf1o+tuv19Wv8PnTHtuwJvGMyTRUMCgYEAlTCi40Du/zyRtpQkCw1b
bpQ/gjlaidSlz4GFy7L5E/SzdAixslm19CUA1Fo4CKFKpevjVHXcIX8vMQXLXI75
D/8NifsKVOU2X+xbLVVMkru5YnN2T0EGUvhUaB8oMVPQJv1pj1C8B2aRZYEG1hZe
h1KbVCQu9LEJBMRsa+7H1GECgYEAp+MdGZwL2flxJYtt8zffLc3TkI/2o3OuvmXS
9WpsoguUoqEEMqr3A6HrQvgS6j+3JlO0+C7ku8LrykQ30UwFEfJiQioBrfL1oZIF
k5jaEKcL19KienHoXE1IUrAxJmwXaeFO3hrDpaqsOEVtwDLVOVN/z/yHC1Pcqg/3
WeK5c18CgYEAk1/fXHFMexgRhSD0qRwwVxWRSoygrcQ45YIxMwwBZZgNfLtgWzuo
2bG9uM7vIyeIoHXe4pd1SC/zcAFiA5qZ62l5SHdL2p7WFFzsz4pW9NmrCPlX2Dl9
kbMLKV3fuBvdm6FGgbfWpADEPQh+98UsndV5G7vFf8o72k8yoV7dUeE=
-----END RSA PRIVATE KEY-----";privatestaticstringCA_certificate=@"-----BEGIN CERTIFICATE-----
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
jgSubJrIqg0CAwaAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
rqXRfboQnoZsG4q5WTP468SQvvG5
-----END CERTIFICATE-----";privatestaticMqttClientclient;privatestaticGpioControllers_GpioController;publicstaticvoidMain(){s_GpioController=newGpioController();Debug.WriteLine("Waiting for network up and IP address...");WifiConnect();Thread.Sleep(5000);SetupMqtt();Thread.Sleep(Timeout.Infinite);}staticvoidSetupMqtt(){DateTimestart=DateTime.UtcNow;Debug.WriteLine($"Starting @ {start}.");// setup CA root certificate and...
//var caCert = new X509Certificate(CA_certificate);
X509CertificatecaCert=newX509Certificate(Resources.GetBytes(Resources.BinaryResources.AwsCAroot));// ... client certificate
// make sure to add a correct pfx certificate, including the RSA key
X509Certificate2clientCert=newX509Certificate2(clientRsaSha256Crt,clientRsaKey,"");// TLS 1.2 is mandatory for AWS
client=newMqttClient(awsHost,8883,true,caCert,clientCert,MqttSslProtocols.TLSv1_2);// connect MQTT client
client.Connect(clientId);// subscribe to the topic with QoS 2
client.Subscribe(newstring[]{"$aws/things/lamp/shadow/update/accepted"},newMqttQoSLevel[]{MqttQoSLevel.AtMostOnce});GpioPinled=s_GpioController.OpenPin(4,PinMode.Output);// subscribe handler for message received
client.MqttMsgPublishReceived+=(s,e)=>Client_MqttMsgPublishReceived(s,e,led);TelemetryLoop();// launch telemetry thread
ThreadtelemetryThread=newThread(newThreadStart(TelemetryLoop));telemetryThread.Start();}//Coloque aqui a leitura de seu sensor de Temperatura e Umidade
staticvoidTelemetryLoop(){if(client.IsConnected){Randomrd=newRandom();stringSampleData="{\"state\": {\"reported\":{\"temp\":\""+rd.Next(100)+"\",\"umidade\":\""+rd.Next(100)+"\"}}}";//Debug.WriteLine(SampleData);
client.Publish("$aws/things/lamp/shadow/update",Encoding.UTF8.GetBytes(SampleData),MqttQoSLevel.AtMostOnce,false);}elseDebug.WriteLine("Problemas com MQTT");Thread.Sleep(30000);}staticvoidClient_MqttMsgPublishReceived(objectsender,MqttMsgPublishEventArgse,GpioPinled){stringMessage=newstring(Encoding.UTF8.GetChars(e.Message));//Debug.WriteLine("Message received: " + Message);
if(Message.IndexOf("\"lampada\":1")!=-1){led.Write(PinValue.High);}if(Message.IndexOf("\"lampada\":0")!=-1){led.Write(PinValue.Low);}}privatestaticvoidWifiConnect(){// Give 60 seconds to the wifi join to happen
CancellationTokenSourcecs=new(60000);// Conectar usando o autoreconnect, DHCP e horário local
varret=WiFiNetworkHelper.ScanAndConnectDhcp("Andreia Oi Miguel 2.4G","xxxxxxxx",requiresDateTime:true);// Caso conectar apenas sai do método
if(ret){Debug.WriteLine($"Connect to the network: {WiFiNetworkHelper.Status}");return;}Debug.WriteLine($"Can't connect to the network, error: {WiFiNetworkHelper.Status}");// Caso contrario, entra num loop com sleep de 500ms até conectar
do{try{Debug.WriteLine("Tryng Reconnect");WiFiNetworkHelper.Reconnect();}catch{Thread.Sleep(500);}}while(!ret);}}}
Atualize versões dos pacotes
Compile o código
Encontrando o U-BLOX NINA W106 (Device Explorer)
Fazendo ping se está ativo
Transferindo o programa (Deploy)
Execução
O projeto no .NET nanoframework:
Define as credenciais para acessar o servidor AWS IoT;
Conecta no servidor AWS IoT;
Inscreve em um tópico;
Aguarda que o LAMBDA publique algo neste Tópico;
Verifica o que foi publicado para então acionar ou não uma Lâmpada.
Console
Waiting for network up and IP address...
YAY! Connected to Wifi
Time after network available: 2022-02-16T16:13:39.3756610Z
O programa "[1] .NET nanoFramework application: Gerenciado" foi fechado com o código 0 (0x0).
A qualquer momento uma mensagem da Amazon Alexa vem para solicitar que apague ou acenda uma lâmpada, é então realizada a comparação com o componente Compare.