Para usar o servidor é necessario um cadastro, o servidor nao aceita conexao anonima.
É preciso fazer um cadastro basico, escolher um usuario e senha. Sem ele, voce nao consegue publicar topicos e msg. Basta entrar em cadastro.vault54.link e preencher a ficha.
Usuario e senha, e de sua responsabilidade, nao da pra recuperar. Entao guarde com cuidado.
A biblioteca disponivel ja vem toda configurada, basta colocar os dad , sem se preocupar com configuraçoes, basta colocar usuario e senha
Autenticação e conexão simples
A integração é simples, o serço se encarrega de tudo. De PIC a X86, a troca de menssagem é simples e transparente. Abaixo um codigo de exemplo.
A integração é simples, o serço se encarrega de tudo. De PIC a X86, a troca de menssagem é simples e transparente. Abaixo um codigo de exemplo.
//Bibliotecas
#include <WiFiManager.h>
#include <strings_en.h>
#include <wm_consts_en.h>
#include <wm_strings_en.h>
#include <wm_strings_es.h>
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <math.h>
//Configuraçoes
char open_server[40] = "vault54.freeddns.org"; // Endereço do servidor
char meu_usuario[40] = "Seu-Usuario"; // Usuário do servidor
char minha_senha[40] = "Sua-Senha"; // Senha do servidor
/*Topicos de mensagem 1, criar um pra cada topico. Para criar subtopico, so colocar barra "/".
Exemplo de uma casa, e na casa 1 quarto, e no quarto 1 lampada e uma TV;
char Casa[40] = "Casa/Quarto/lampada";
char Casa[40] = "Casa/Quarto/TV";
*/
char Topico1[40] = "Topico 1"; // Topico de mensagem 1, criar um pra cada topico
/*Variaveis que podem ser publicadas, voce pode publicar qualquer coisa*/
float NumeroQuebrado;
int NumeroInteiro;
String Palavra = "Suapalavra";
// --- Objetos de Conexão, ja esta configurado---
WiFiClient espClient;
PubSubClient client(espClient);
// Função para publicar mensagens, é ela que conecta e guarda o dado
void Publicar(const char* topico, const char* mensagem) {
if (!client.connected()) {
reconnect();
}
client.loop();
client.publish(topico, mensagem);
Serial.print("Publicado no topico '");
Serial.print(topico);
Serial.print("': ");
Serial.println(mensagem);
delay(1000);
}
// Função para reconectar ao Open-Server
void reconnect() {
while (!client.connected()) {
Serial.print("Tentando conectar ao Open-Server...");
if (client.connect("ESP32Client", meu_usuario, minha_senha)) {
Serial.println("Conectado!");
delay(2000);
} else {
Serial.print("Falha na conexao, rc=");
Serial.print(client.state());
Serial.println(" Nova tentativa em 5s");
delay(5000);
}
}
}
// Converte o dado Float e enviar publicar
void EnviarNumeroQuebrado(const char* topico, const char* chave, float valor) {
// Cria um documento JSON temporário
StaticJsonDocument<50> doc;
// Adiciona a chave e o valor
doc[chave] = valor;
// Cria um buffer para a string JSON
char bufferJson[150];
// Serializa o documento para o buffer, com a precisão de casas decimais
serializeJson(doc, bufferJson);
// Chama a sua função de publicação
Publicar(topico, bufferJson);
}
void EnviarNumeroInteiro(const char* topico, const char* chave, int valor) {
// Cria um documento JSON temporário
StaticJsonDocument<50> doc;
// Adiciona a chave e o valor
doc[chave] = valor;
// Cria um buffer para a string JSON
char bufferJson[150];
// Serializa o documento para o buffer, com a precisão de casas decimais
serializeJson(doc, bufferJson);
// Chama a sua função de publicação
Publicar(topico, bufferJson);
}
float arredondar(float valor, int casasDecimais) {
float multiplicador = pow(10.0, casasDecimais);
return roundf(valor * multiplicador) / multiplicador;
}
void setup() {
// WifiManager
Serial.begin(115200);
client.setServer(open_server, 1883);
delay(3000);
WiFiManager wm;
bool res;
// res = wm.autoConnect(); // auto generated AP name from chipid
// res = wm.autoConnect("AutoConnectAP"); // anonymous ap
res = wm.autoConnect("AutoConnectAP", "password"); // password protected ap
if (!res) {
Serial.println("Failed to connect");
// ESP.restart();
} else {
Serial.println("connected...yeey :)");
}
Serial.println(WiFi.localIP());
delay(5000);
}
void loop() {
/* Chama o serviço de publicar numero quebrado, ajustando os dados para serem armazenado.
Pega o Topico1, fala que é o numero quebrado que vai ser publicado, e "arredondar(NumeroQuebrado, 1)",
ele pega o NumeroQuebrado e arredonda pra 1 casa depois da virgula, se colocar 2, duas casas, e assim por diante.
*/
EnviarNumeroQuebrado(Topico1, "NumeroQuebrado", arredondar(NumeroQuebrado, 1));
//O mesmo, mas para Numero Inteiro
EnviarNumeroInteiro(Topico1, "NumeroInteiro",NumeroInteiro);
//Para Palavras é o mesmo, mas so publicar direto
Publicar(Topico1,Palavra);
client.loop();
}
No dashboard, é possivel customizar toda telemetria dos dispositivos, verificar em tempo real. Customizar graficos, verificar qualidade dos dados, planejar açoes, etc
WikiCopyright © Your name