2018-09-30, 04:13 PM
(2018-09-29, 08:42 PM)awwbaker@yahoo.com Wrote: ------------------------------------------------------------------------------
First of all....complete NUBE!!! That said, I have put together an Mega 2560 Arduino based board which is measuring solar panel current, voltage as well as a temperature and humidity sensor. I am using
WiFiEspClient espClient;
PubSubClient client(espClient);
to send the data to MQTT broker on OpenPlotter running on a RPi. Using the interface there I mapped MQTT messages to SignalK. I then started up Wilhelm used generic controls to display....all working and very cool. Then tried to use Temperature and Ratio Controls. The Wilhelm author Mr Bender discovered I was sending strings rather than numerical values through MQTT.
I tried building the EspSigK example but I suspect because of the Mega 2560 getting build errors that are currently beyond my skill level to resolve. (error on some includes in EspSigK.h) At this point not sure if I should abandon the MQTT and go after the EspSigK? Any suggestions GREATLY appreciated. VR Anthony
So is it sending over Wifi or serial? Either way there'll be a way to send as signalk intead of mqtt - you could maybe try this function I pinched and tweaked, think it was from espsigk. Not sure if that will work but worth a try, #include.... goes at the top then the WifiUDP above the setup.
So to send just go >
"sendSigK("mytest.test", 12345 );"
You might need to add the json library, in the arduino IDE go into Sketch|include Library|manage libraries and search fo arduinojson, might be better not to add a beta librry, but go for an earlier one.
Good luck, for a nube you seem to have hit the ground running!!! :
Code:
#include <ArduinoJson.h>
#include <WiFiUdp.h>
WiFiUDP Udp; // A UDP instance to let us send and receive packets over UDP
void sendSigK(String sigKey, float data) { // send SigK via UDP *****************************************
DynamicJsonBuffer jsonBuffer;
//String deltaText;
// build delta message
JsonObject& delta = jsonBuffer.createObject();
//updated array
JsonArray& updatesArr = delta.createNestedArray("updates");
JsonObject& thisUpdate = updatesArr.createNestedObject(); //Json Object nested inside delta [...
JsonArray& values = thisUpdate.createNestedArray("values"); // Values array nested in delta[ values....
JsonObject& thisValue = values.createNestedObject();
thisValue["path"] = sigKey;
thisValue["value"] = data;
thisUpdate["Source"] = "ESP11";
// Send UDP packet
Udp.beginPacket(remoteIp, remotePort);
delta.printTo(Udp);
delta.printTo(Serial);
Serial.println();
Udp.println();
Udp.endPacket();
delay(10);
Serial.print("UDP sent. remoteIP = ");
Serial.println(remoteIp);
Serial.print("remote port = ");
Serial.println(remotePort);
Serial.print("Wifi mode = ");
Serial.println(WiFi.getMode());
}