1111#include " emoncms.h"
1212#include " app_config.h"
1313#include " input.h"
14+ #include " event.h"
1415
1516boolean emoncms_connected = false ;
17+ boolean emoncms_updated = false ;
1618
1719unsigned long packets_sent = 0 ;
1820unsigned long packets_success = 0 ;
@@ -21,11 +23,21 @@ const char *post_path = "/input/post?";
2123
2224static MongooseHttpClient client;
2325
26+ static void emoncms_result (bool success, String message)
27+ {
28+ StaticJsonDocument<128 > event;
29+
30+ emoncms_connected = success;
31+ event[" emoncms_connected" ] = (int )emoncms_connected;
32+ event[" emoncms_message" ] = message.substring (0 , 64 );
33+ event_send (event);
34+ }
35+
2436void emoncms_publish (JsonDocument &data)
2537{
2638 Profile_Start (emoncms_publish);
2739
28- if (emoncms_apikey != 0 )
40+ if (config_emoncms_enabled () && emoncms_apikey != 0 )
2941 {
3042 String url = emoncms_server + post_path;
3143 String json;
@@ -47,23 +59,33 @@ void emoncms_publish(JsonDocument &data)
4759 MongooseString result = response->body ();
4860 DBUGF (" result = %.*s" , result.length (), result.c_str ());
4961
50- StaticJsonDocument<32 > doc;
62+ const size_t capacity = JSON_OBJECT_SIZE (2 ) + result.length ();
63+ DynamicJsonDocument doc (capacity);
5164 if (DeserializationError::Code::Ok == deserializeJson (doc, result.c_str (), result.length ()))
5265 {
66+ DBUGLN (" Got JSON" );
5367 bool success = doc[" success" ]; // true
5468 if (success) {
5569 packets_success++;
56- emoncms_connected = true ;
5770 }
71+ emoncms_result (success, doc[" message" ]);
5872 } else if (result == " ok" ) {
5973 packets_success++;
60- emoncms_connected = true ;
74+ emoncms_result ( true , result) ;
6175 } else {
62- emoncms_connected = false ;
6376 DEBUG.print (" Emoncms error: " );
6477 DEBUG.printf (" %.*s\n " , result.length (), (const char *)result);
78+ emoncms_result (false , result.toString ());
79+ }
80+ }, [](MongooseHttpClientResponse *response)
81+ {
82+ DBUGF (" onClose %p" , response);
83+ if (NULL == response) {
84+ emoncms_result (false , String (" Failed to connect" ));
6585 }
6686 });
87+ } else {
88+ emoncms_result (false , String (" Disabled" ));
6789 }
6890
6991 Profile_End (emoncms_publish, 10 );
0 commit comments