Hola,
Si genera un punto de acceso Local, OP lo genera.
Al Esp32, Con Arduino, que viene a ser C, le mandas un JSON (con los datos de los sensores conectados) que lo recibe Signal K, este los lee y los pone disponibles.
La cosa fué complicada de c*j*n*s.... sudor y lagrimas. Al final generé una función (recopilando info de varios foros/webs) que le mandas la palabra clave y valor y esta se ocupa de mandar a signal K, es rudimentario pero funciona.
La ventaja es que le das voltaje al esp32, y ni cables de datos ni nada...
esta es la funcion:
void Send_to_SignalK(String path, float value){
String cmd;
char valuestring[6]; // Valor suficiente mente largo para acomodar el espacio
int len;
// Preparamos el string para mandar:
cmd = "{\"updates\": [{\"$source\": \"ESP32\",\"values\":[ {\"path\":\"";
cmd += path; cmd += "\","; cmd += "\"value\":";
dtostrf(value,4,1,valuestring); // Convierte el flota en una cadena, el ancho debe ser suficiente, el desbordamiento causa error.
cmd += valuestring;
cmd += "}]}]}\0";
len=cmd.length(); // Obten la longitud del mensaje que necesita la escritura UDP.
//la preparamos para mandar a SignalK server
uint8_t buffer[len]; // Búfer para contener los caracteres de la cadena cmd.
memcpy(buffer,&cmd[0],len); // Convierte la cadena a bytes, udp.write no acepta el búfer de tipo de cadena como entrada vaya por Dios....
//vamos a mandar buffer to server
Udp.beginPacket(udpAddress, udpPort);
Udp.write(buffer, len);
Udp.endPacket();
delay(10);
} /* final Send_to_SignalK */
(copiar y pegar en arduino ide)
Falta la preparación:
const char * ssid = "x"; // ssid del wifi, el que declaremos en OP
const char * pwd = "x"; // la password del wifi
const char * udpAddress = "x"; // ip de signal K Server
const int udpPort = 20220; // wifi puerto que signal K escucha
Sin problemas y para no meter un tocho ( que ya es un tocho) puedo mandar un programa entero de arduino, donde mande por ejemplo algo básico, temperatura, humedad... etc...
Ahora bien, y para no engañar a nadie, he tenido que tirar de conocimientos de programación en C que ya tenia... si no, no lo logro ni a tiros...
Saludos
