aqhome-storage now checks and parses mqtt messages and stores values in datafiles.
This commit is contained in:
@@ -204,6 +204,7 @@ void _writeEditingTable(AQH_HTTP_URLHANDLER *uh, GWEN_DB_NODE *dbValues, GWEN_BU
|
||||
{
|
||||
AQH_SERVICE *sv;
|
||||
AQH_STORAGE *sto;
|
||||
const GWEN_STRINGLIST *seenTopicsList;
|
||||
const AQH_DEVICE_LIST *deviceList;
|
||||
unsigned long int selectedDeviceId=0;
|
||||
int dataType;
|
||||
@@ -220,21 +221,40 @@ void _writeEditingTable(AQH_HTTP_URLHANDLER *uh, GWEN_DB_NODE *dbValues, GWEN_BU
|
||||
|
||||
/* topic */
|
||||
GWEN_Buffer_AppendArgs(pageBuf,
|
||||
" <table>"
|
||||
" <tr>"
|
||||
" <td><label for=\"topic\">%s: </label></td>"
|
||||
" <td><input type=\"text\" name=\"topic\" value=\"%s\" required></td>"
|
||||
" </tr>",
|
||||
"<table>"
|
||||
"<tr>"
|
||||
" <td><label for=\"topic\">%s: </label></td>"
|
||||
" <td>"
|
||||
" <input list=\"seenTopics\" type=\"text\" name=\"topic\" id=\"topic\" value=\"%s\" size=\"64\" required>\n"
|
||||
" <datalist id=\"seenTopics\">",
|
||||
I18N("MQTT Topic"),
|
||||
dbValues?GWEN_DB_GetCharValue(dbValues, "topic", 0, ""):"");
|
||||
seenTopicsList=AQH_Storage_GetRecvdTopicList(sto);
|
||||
if (seenTopicsList && GWEN_StringList_Count(seenTopicsList)) {
|
||||
GWEN_STRINGLISTENTRY *se;
|
||||
|
||||
se=GWEN_StringList_FirstEntry(seenTopicsList);
|
||||
while(se) {
|
||||
const char *s=GWEN_StringListEntry_Data(se);
|
||||
if (s && *s) {
|
||||
DBG_INFO(NULL, "Adding MQTT string %s", s);
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%s\">\n", s);
|
||||
}
|
||||
se=GWEN_StringListEntry_Next(se);
|
||||
}
|
||||
}
|
||||
else {
|
||||
}
|
||||
GWEN_Buffer_AppendString(pageBuf, "</datalist></td></tr>");
|
||||
|
||||
|
||||
/* device */
|
||||
GWEN_Buffer_AppendArgs(pageBuf,
|
||||
"<tr><td><label for=\"deviceId\">%s: </label></td>"
|
||||
"<td><select id=\"deviceId\" name=\"deviceId\">",
|
||||
I18N("Device"));
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"0\">%s</option>", I18N("-- select device --"));
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"0\">%s</option>\n", I18N("-- select device --"));
|
||||
|
||||
/* device */
|
||||
if (deviceList) {
|
||||
const AQH_DEVICE *device;
|
||||
|
||||
@@ -247,14 +267,14 @@ void _writeEditingTable(AQH_HTTP_URLHANDLER *uh, GWEN_DB_NODE *dbValues, GWEN_BU
|
||||
snprintf(numbuf, sizeof(numbuf)-1, "%lu", (unsigned long int) AQH_Device_GetId(device));
|
||||
numbuf[sizeof(numbuf)-1]=0;
|
||||
if (selectedDeviceId && AQH_Device_GetId(device)==selectedDeviceId)
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%s\" selected>%s</option>", numbuf, deviceName);
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%s\" selected>%s</option>\n", numbuf, deviceName);
|
||||
else
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%s\">%s</option>", numbuf, deviceName);
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%s\">%s</option>\n", numbuf, deviceName);
|
||||
}
|
||||
device=AQH_Device_List_Next(device);
|
||||
}
|
||||
}
|
||||
GWEN_Buffer_AppendString(pageBuf, "</select></td></tr>");
|
||||
GWEN_Buffer_AppendString(pageBuf, "</select></td></tr>\n");
|
||||
|
||||
/* data type */
|
||||
GWEN_Buffer_AppendArgs(pageBuf,
|
||||
@@ -262,16 +282,35 @@ void _writeEditingTable(AQH_HTTP_URLHANDLER *uh, GWEN_DB_NODE *dbValues, GWEN_BU
|
||||
"<td><select id=\"dataType\" name=\"dataType\">",
|
||||
I18N("Data Type"));
|
||||
if (dataType==AQH_MqttTopicType_Num)
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%d\" selected>%s</option>", dataType, I18N("numeric"));
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%d\" selected>%s</option>", AQH_MqttTopicType_Num, I18N("numeric"));
|
||||
else
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%d\" >%s</option>", dataType, I18N("numeric"));
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%d\" >%s</option>", AQH_MqttTopicType_Num, I18N("numeric"));
|
||||
if (dataType==AQH_MqttTopicType_Json)
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%d\" selected>%s</option>", dataType, I18N("JSON"));
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%d\" selected>%s</option>", AQH_MqttTopicType_Json, I18N("JSON"));
|
||||
else
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%d\" >%s</option>", dataType, I18N("JSON"));
|
||||
GWEN_Buffer_AppendString(pageBuf, "</select></td></tr>");
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<option value=\"%d\" >%s</option>", AQH_MqttTopicType_Json, I18N("JSON"));
|
||||
GWEN_Buffer_AppendString(pageBuf, "</select></td></tr>\n");
|
||||
|
||||
GWEN_Buffer_AppendString(pageBuf, "</tbody></table>");
|
||||
|
||||
if (seenTopicsList && GWEN_StringList_Count(seenTopicsList)) {
|
||||
GWEN_STRINGLISTENTRY *se;
|
||||
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "<tr><td valign=\"top\"><label for=\"receivedTopicsList\">%s: </label></td>", I18N("Received Topics"));
|
||||
GWEN_Buffer_AppendString(pageBuf, "<td><output name=\"receivedTopicsList\" id=\"receivedTopicsList\">");
|
||||
|
||||
se=GWEN_StringList_FirstEntry(seenTopicsList);
|
||||
while(se) {
|
||||
const char *s=GWEN_StringListEntry_Data(se);
|
||||
if (s && *s)
|
||||
GWEN_Buffer_AppendArgs(pageBuf, "%s<br>\n", s);
|
||||
se=GWEN_StringListEntry_Next(se);
|
||||
}
|
||||
GWEN_Buffer_AppendString(pageBuf, "</output></td></tr>");
|
||||
}
|
||||
|
||||
|
||||
|
||||
GWEN_Buffer_AppendString(pageBuf, "</tbody></table>\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user