Browse Source

copy and modify json endpoint

pull/356/head
Julian Gog 3 years ago
parent
commit
4f63ea7736
  1. 26
      tools/esp8266/app.cpp
  2. 2
      tools/esp8266/app.h
  3. 7
      tools/esp8266/web.cpp
  4. 1
      tools/esp8266/web.h

26
tools/esp8266/app.cpp

@ -574,6 +574,32 @@ String app::getJson(void) {
return modJson; return modJson;
} }
//-----------------------------------------------------------------------------
String app::getMetrics(void) {
DPRINTLN(DBG_VERBOSE, F("app::getMetrics"));
String metrics;
char headline[80];
snprintf(headline, 80, "ahoy_solar_info{version=\"%s\",image=\"\",devicename=\"%s\"} 1", mVersion, mSysConfig.deviceName);
metrics += "# TYPE ahoy_solar_info gauge\n" + String(headline) + "\n";
for(uint8_t id = 0; id < mSys->getNumInverters(); id++) {
Inverter<> *iv = mSys->getInverterByPos(id);
if(NULL != iv) {
char type[40], topic[60], val[25];
for(uint8_t i = 0; i < iv->listLen; i++) {
uint8_t channel = iv->assign[i].ch;
if(channel == 0) {
snprintf(type, 40, "# TYPE ahoy_solar_%s_ gauge", iv->getFieldName(i));
snprintf(topic, 60, "ahoy_solar_%s_{inverter=\"%s\"}", iv->getFieldName(i), iv->name);
snprintf(val, 25, "%.3f", iv->getValue(i));
metrics += String(type) + "\n" + String(topic) + " " + String(val) + "\n";
}
}
}
}
return metrics;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool app::getWifiApActive(void) { bool app::getWifiApActive(void) {

2
tools/esp8266/app.h

@ -73,8 +73,10 @@ class app {
void resetPayload(Inverter<>* iv); void resetPayload(Inverter<>* iv);
String getStatistics(void); String getStatistics(void);
String getJson(void); String getJson(void);
String getMetrics(void);
bool getWifiApActive(void); bool getWifiApActive(void);
uint8_t getIrqPin(void) { uint8_t getIrqPin(void) {
return mConfig.pinIrq; return mConfig.pinIrq;
} }

7
tools/esp8266/web.cpp

@ -71,6 +71,7 @@ void web::setup(void) {
mWeb->on("/visualization", std::bind(&web::showVisualization, this)); mWeb->on("/visualization", std::bind(&web::showVisualization, this));
mWeb->on("/livedata", std::bind(&web::showLiveData, this)); mWeb->on("/livedata", std::bind(&web::showLiveData, this));
mWeb->on("/json", std::bind(&web::showJson, this)); mWeb->on("/json", std::bind(&web::showJson, this));
mWeb->on("/metrics", std::bind(&web::showMetrics, this));
mWeb->on("/api", HTTP_POST, std::bind(&web::showWebApi, this)); mWeb->on("/api", HTTP_POST, std::bind(&web::showWebApi, this));
} }
@ -568,6 +569,12 @@ void web::showJson(void) {
mWeb->send(200, F("application/json"), mMain->getJson()); mWeb->send(200, F("application/json"), mMain->getJson());
} }
//-----------------------------------------------------------------------------
void web::showMetrics(void) {
DPRINTLN(DBG_VERBOSE, F("web::showMetrics"));
mWeb->send(200, F("application/metrics"), mMain->getMetrics());
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void web::showWebApi(void) void web::showWebApi(void)
{ {

1
tools/esp8266/web.h

@ -43,6 +43,7 @@ class web {
void showLiveData(void); void showLiveData(void);
void showJson(void); void showJson(void);
void showWebApi(void); void showWebApi(void);
void showMetrics(void);
private: private:
#ifdef ESP8266 #ifdef ESP8266

Loading…
Cancel
Save