Browse Source

Merge branch 'development03' of https://github.com/lumapu/ahoy into development03

pull/430/head
lumapu 2 years ago
parent
commit
453d8eb5ec
  1. 10
      src/.vscode/extensions.json
  2. 5
      src/.vscode/settings.json
  3. 2
      src/app.cpp
  4. 17
      src/web/html/api.js
  5. 17
      src/web/html/system.html
  6. 29
      src/web/mqtt.h
  7. 15
      src/web/webApi.cpp
  8. 8
      src/wifi/ahoywifi.cpp

10
src/.vscode/extensions.json

@ -0,0 +1,10 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}

5
src/.vscode/settings.json

@ -21,6 +21,9 @@
// https://clang.llvm.org/docs/ClangFormatStyleOptions.html
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0}",
"files.associations": {
"typeinfo": "cpp"
"typeinfo": "cpp",
"string": "cpp",
"istream": "cpp",
"ostream": "cpp"
},
}

2
src/app.cpp

@ -261,7 +261,7 @@ void app::setupMqtt(void) {
mMqttActive = true;
if(mMqttActive)
mMqtt.setup(&mConfig->mqtt, mConfig->sys.deviceName, mVersion, mSys, &mUtcTimestamp);
mMqtt.setup(this, &mConfig->mqtt, mConfig->sys.deviceName, mVersion, mSys, &mUtcTimestamp);
}
//-----------------------------------------------------------------------------

17
src/web/html/api.js

@ -31,6 +31,23 @@ function parseESP(obj) {
document.getElementById("esp_type").innerHTML="Board: " + obj["esp_type"];
}
function parseSysInfo(obj) {
document.getElementById("sdkversion").innerHTML= "SDKv.: " + obj["sdk_version"];
document.getElementById("cpufreq").innerHTML= "CPU MHz: " + obj["cpu_freq"] + "MHz";
document.getElementById("chiprevision").innerHTML= "Rev.: " + obj["chip_revision"];
document.getElementById("chipmodel").innerHTML= "Model: " + obj["chip_model"];
document.getElementById("chipcores").innerHTML= "Core: " + obj["chip_cores"];
document.getElementById("esp_type").innerHTML= "Type: " + obj["esp_type"];
document.getElementById("heap_used").innerHTML= "Used: " + obj["heap_used"];
document.getElementById("heap_total").innerHTML= "Total: " + obj["heap_total"];
}
function changeProgressbar(id, value, max) {
document.getElementById(id).value = value;
document.getElementById(id).max = max;
}
function setHide(id, hide) {
var elm = document.getElementById(id);
if(hide) {

17
src/web/html/system.html

@ -17,7 +17,18 @@
<div id="topnav" class="hide"></div>
</div>
<div id="wrapper">
<div id="content"></div>
<div id="content">
<ul>
<li>Heap:<progress id="heap" max="100" value="70"></progress> <span id="heap_used"></span>(<span id="heap_total"></span>)</li>
<li><span id="sdkversion"></span></li>
<li><span id="cpufreq"></span></li>
<li><span id="chiprevision"></span></li>
<li><span id="chipmodel"></span></li>
<li><span id="chipcores"></span></li>
<li><span id="esp_type"></span></li>
</ul>
<div id="system"></div>
</div>
</div>
<div id="footer">
<div class="left">
@ -39,13 +50,15 @@
function parseSys(obj) {
parseVersion(obj);
parseESP(obj);
changeProgressbar("heap", obj["heap_used"], obj["heap_total"]);
}
function parse(obj) {
if(null != obj) {
parseMenu(obj["menu"]);
parseSys(obj["system"]);
var e = document.getElementById("content");
parseSysInfo(obj["system"]);
var e = document.getElementById("system");
e.innerHTML = obj["html"];
if(null != obj["refresh"]) {

29
src/web/mqtt.h

@ -33,16 +33,17 @@ class mqtt {
~mqtt() { }
void setup(cfgMqtt_t *cfg, const char *devName, const char *version, HMSYSTEM *sys, uint32_t *utcTs) {
void setup(app *app, cfgMqtt_t *cfg_mqtt, const char *devName, const char *version, HMSYSTEM *sys, uint32_t *utcTs) {
DPRINTLN(DBG_VERBOSE, F("mqtt.h:setup"));
mAddressSet = true;
mCfg = cfg;
mApp = app;
mCfg_mqtt = cfg_mqtt;
mDevName = devName;
mSys = sys;
mUtcTimestamp = utcTs;
mClient->setServer(mCfg->broker, mCfg->port);
mClient->setServer(mCfg_mqtt->broker, mCfg_mqtt->port);
mClient->setBufferSize(MQTT_MAX_PACKET_SIZE);
setCallback(std::bind(&mqtt<HMSYSTEM>::cbMqtt, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
@ -70,7 +71,7 @@ class mqtt {
//DPRINTLN(DBG_VERBOSE, F("mqtt.h:sendMsg"));
if(mAddressSet) {
char top[66];
snprintf(top, 66, "%s/%s", mCfg->topic, topic);
snprintf(top, 66, "%s/%s", mCfg_mqtt->topic, topic);
sendMsg2(top, msg, false);
}
}
@ -168,21 +169,21 @@ class mqtt {
if(strlen(mDevName) > 0) {
// der Server und der Port müssen neu gesetzt werden,
// da ein MQTT_CONNECTION_LOST -3 die Werte zerstört hat.
mClient->setServer(mCfg->broker, mCfg->port);
mClient->setServer(mCfg_mqtt->broker, mCfg_mqtt->port);
mClient->setBufferSize(MQTT_MAX_PACKET_SIZE);
char lwt[MQTT_TOPIC_LEN + 7 ]; // "/uptime" --> + 7 byte
snprintf(lwt, MQTT_TOPIC_LEN + 7, "%s/uptime", mCfg->topic);
snprintf(lwt, MQTT_TOPIC_LEN + 7, "%s/uptime", mCfg_mqtt->topic);
if((strlen(mCfg->user) > 0) && (strlen(mCfg->pwd) > 0))
resub = mClient->connect(mDevName, mCfg->user, mCfg->pwd, lwt, 0, false, "offline");
if((strlen(mCfg_mqtt->user) > 0) && (strlen(mCfg_mqtt->pwd) > 0))
resub = mClient->connect(mDevName, mCfg_mqtt->user, mCfg_mqtt->pwd, lwt, 0, false, "offline");
else
resub = mClient->connect(mDevName, lwt, 0, false, "offline");
// ein Subscribe ist nur nach einem connect notwendig
if(resub) {
char topic[MQTT_TOPIC_LEN + 13 ]; // "/devcontrol/#" --> + 6 byte
// ToDo: "/devcontrol/#" is hardcoded
snprintf(topic, MQTT_TOPIC_LEN + 13, "%s/devcontrol/#", mCfg->topic);
snprintf(topic, MQTT_TOPIC_LEN + 13, "%s/devcontrol/#", mCfg_mqtt->topic);
DPRINTLN(DBG_INFO, F("subscribe to ") + String(topic));
mClient->subscribe(topic); // subscribe to mTopic + "/devcontrol/#"
}
@ -221,6 +222,13 @@ class mqtt {
sendMsg("uptime", val);
sendMsg("wifi_rssi", String(WiFi.RSSI()).c_str());
String sunrise = String(mApp->getSunrise());
String sunset = String(mApp->getSunset());
sendMsg("sunrise", sunrise.c_str());
sendMsg("sunset", sunset.c_str());
while(!mSendList.empty()) {
memset(total, 0, sizeof(float) * 4);
for (uint8_t id = 0; id < mSys->getNumInverters(); id++) {
@ -422,13 +430,14 @@ class mqtt {
DPRINTLN(DBG_INFO, F("app::cbMqtt finished"));
}
app *mApp;
WiFiClient mEspClient;
PubSubClient *mClient;
HMSYSTEM *mSys;
uint32_t *mUtcTimestamp;
bool mAddressSet;
cfgMqtt_t *mCfg;
cfgMqtt_t *mCfg_mqtt;
const char *mDevName;
uint32_t mLastReconnect;
uint32_t mTxCnt;

15
src/web/webApi.cpp

@ -153,6 +153,21 @@ void webApi::getSysInfo(JsonObject obj) {
obj[F("ts_sun_upd")] = mApp->getLatestSunTimestamp();
obj[F("wifi_rssi")] = WiFi.RSSI();
obj[F("pwd_set")] = (strlen(mConfig->sys.adminPwd) > 0);
obj[F("hostname")] = WiFi.getHostname();
obj[F("sdk_version")] = ESP.getSdkVersion();
obj[F("cpu_freq")] = ESP.getCpuFreqMHz();
obj[F("heap_total")] = ESP.getHeapSize();
obj[F("heap_used")] = ESP.getHeapSize() - ESP.getFreeHeap();
obj[F("sketch_total")] = ESP.getFreeSketchSpace();
obj[F("sketch_used")] = ESP.getSketchSize();
//obj[F("littlefs_total")] = LittleFS.totalBytes();
//obj[F("littlefs_used")] = LittleFS.usedBytes();
obj[F("chip_revision")] = ESP.getChipRevision();
obj[F("chip_model")] = ESP.getChipModel();
obj[F("chip_cores")] = ESP.getChipCores();
#if defined(ESP32)
obj[F("esp_type")] = F("ESP32");
#else

8
src/wifi/ahoywifi.cpp

@ -113,6 +113,12 @@ void ahoywifi::setupAp(const char *ssid, const char *pwd) {
DPRINTLN(DBG_VERBOSE, F("app::setupAp"));
IPAddress apIp(192, 168, 4, 1);
DBGPRINTLN(F("\n---------\nAhoy Info:"));
DBGPRINT(F("Version: "));
DBGPRINTLN(String(VERSION_MAJOR) + F(".") + String(VERSION_MINOR) + F(".") + String(VERSION_PATCH));
DBGPRINT(F("Github Hash: "));
DBGPRINTLN(String(AUTO_GIT_HASH));
DBGPRINT(F("\n---------\nAP MODE\nSSID: "));
DBGPRINTLN(ssid);
DBGPRINT(F("PWD: "));
@ -120,6 +126,8 @@ void ahoywifi::setupAp(const char *ssid, const char *pwd) {
DBGPRINT(F("\nActive for: "));
DBGPRINT(String(WIFI_AP_ACTIVE_TIME));
DBGPRINTLN(F(" seconds"));
DBGPRINTLN("\nIp Address: " + apIp[0] + apIp[1] + apIp[2] + apIp[3]);
DBGPRINTLN(F("\n---------\n"));
WiFi.mode(WIFI_AP);

Loading…
Cancel
Save