SignalK updates over WiFi from ESP32 - Printable Version +- OpenMarine (https://forum.openmarine.net) +-- Forum: OpenPlotter (https://forum.openmarine.net/forumdisplay.php?fid=1) +--- Forum: How do I...? (https://forum.openmarine.net/forumdisplay.php?fid=3) +--- Thread: SignalK updates over WiFi from ESP32 (/showthread.php?tid=5385) |
SignalK updates over WiFi from ESP32 - KKempeneers - 2024-05-07 Hi, I'm trying, without any luck i might add to post sensordata to SignalK 2.7.2. using a ESP32 module over Wifi. I've been doing that using Python and C++. The only thing that seems to be happening;
But than i puzzled, what is the next step? Sorry to say this but i'm kind a wondering is all that security not a bit over the top? When someone tries to hack in to my closed network on the boot i have bigger problems than my instruments being unusable. Anyway, can someone pleas provide me with a good example in either C++ or Python that sends a SignalK update. And also, is it really necessary to add a timestamp on every update? If so can it be requested from the server? I do not want to add a RTC on something as stupid as a compass sensor. Kind regards, Koen. RE: SignalK updates over WiFi from ESP32 - PaddyB - 2024-05-07 I use micropython, create a data connection type signalk port 10119 then this code works for me, this is inside a class otherwise probably no need for the "self, ... > import socket def insertIntoSigKdata(self, path, value): # https://wiki.python.org/moin/UdpCommunication try: UDP_IP = "10.42.0.1" UDP_PORT = 10119 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) _sigKdata = {"updates": [{"values":[]}]} _sigKdata["updates"][0]["values"].append( {"path":path,"value": value}) MESSAGE = (ujson.dumps(_sigKdata)) sock.sendto(MESSAGE, (UDP_IP, UDP_PORT)) sock.close() except Exception as e: print("Send signalk error = ",e) the server will add a timestamp RE: SignalK updates over WiFi from ESP32 - KKempeneers - 2024-05-07 Well sorry to say that did not help ... i'm able to send the message but no one is listening, it certainly does not show up in the databrowser. I have a connection set up but nothing shows up. Koen. RE: SignalK updates over WiFi from ESP32 - PaddyB - 2024-05-07 (2024-05-07, 04:48 PM)KKempeneers Wrote: Well sorry to say that did not help ... i'm able to send the message but no one is listening, it certainly does not show up in the databrowser. Is the esp32 connecting to the openplotter wifi network OK? Actually that IP address could be wrong, that's from opV4 on bookworm, if you are on opV3 it's more likely 10.10.10.1. This is very messy & very old & I'm not even a programmer but most of it should work, any useful bits feel free to copy >> https://github.com/boatybits/boatymonpy/tree/beta RE: SignalK updates over WiFi from ESP32 - tkurki - 2024-05-07 The problem is either with the UDP communications or with the payload not being correct. You can verify that UDP is working by activating debug key signalktreams:udp in Server Log. If there is no output in Server Log comms is not working. If UDP works but there is nothing in Data Browser the problem is in the payload. RE: SignalK updates over WiFi from ESP32 - KKempeneers - 2024-05-11 Sorry i could not answer sooner ... upon tkurki's suggestion i dove in the server logs and found that the Signal K message was improper formated. For future reference, the C++ (Arduino code) should be: String makeSignalKDelta(const char* topic, float data) { String SignalKDelta; DynamicJsonDocument doc(256); // Create the Signal K Delta message JsonArray updatesArray = doc.createNestedArray("updates"); // Create an object within the updates array JsonObject updateObject = updatesArray.createNestedObject(); // Create the values array within the update object JsonArray valuesArray = updateObject.createNestedArray("values"); // Create an object within the values array JsonObject value = valuesArray.createNestedObject(); value["path"] = topic; value["value"] = data; serializeJson(doc, SignalKDelta); return SignalKDelta; } (You must include ArduinoJson.h in order to compile) With that sorted out ... how can i read data from the SignalK server? And are there aftermarket displays that withstand the weather and understand SignalK? Which one would you suggest? I realy would like the dept sounder and wind instrument on a display in the cockpit. to server: 10.10.10.1 95 bytes written. {"updates":[{"values":[{"path":"vessels.self.propulsion.0.revolutions","value":38.483} RE: SignalK updates over WiFi from ESP32 - PaddyB - 2024-05-11 (2024-05-11, 07:43 PM)KKempeneers Wrote: ... how can i read data from the SignalK server? One way is HTTP get "http://10.10.0.1:3000/signalk/v1/api/vessels/urn:mrn:imo:mmsi:"YOUR_MMSI"/environment/wind/speedTrue/value" |