diff --git a/0BUILD b/0BUILD index 36425b2..cd3cc8f 100644 --- a/0BUILD +++ b/0BUILD @@ -2,7 +2,7 @@ - + $(project_name) $(project_vmajor).$(project_vminor).$(project_vpatchlevel) diff --git a/apps/aqhome-cgi/modules/mdevices.c b/apps/aqhome-cgi/modules/mdevices.c index 3b57ca0..f5489f8 100644 --- a/apps/aqhome-cgi/modules/mdevices.c +++ b/apps/aqhome-cgi/modules/mdevices.c @@ -59,6 +59,8 @@ static void _writeValueListToTable(AQH_DATACLIENT *dc, const AQH_VALUE_LIST *val static void _writeValueToTable(AQH_DATACLIENT *dc, const AQH_VALUE *value, GWEN_BUFFER *dbuf); static void _addValueActionToForm(const AQH_VALUE *value, GWEN_BUFFER *dbuf); static uint32_t _colorFromHexString(const char *s); +static uint32_t _htmlColorToValueRGBW(uint32_t colorIn); +static uint32_t _rgbwToHtmlColor(uint32_t colorIn); static void _setRgbwData(AQH_DATACLIENT *dc, const AQH_VALUE *value, const char *sValue); static void _setOnOffData(AQH_DATACLIENT *dc, const AQH_VALUE *value, const char *sValue); static void _setOnOffAutoData(AQH_DATACLIENT *dc, const AQH_VALUE *value, const char *sValue); @@ -404,7 +406,8 @@ void _writeValueListToTable(AQH_DATACLIENT *dc, const AQH_VALUE_LIST *valueList, value=AQH_Value_List_First(valueList); while(value) { - _writeValueToTable(dc, value, dbuf); + if (AQH_Value_GetModality(value)!=AQH_ValueModality_Stats) + _writeValueToTable(dc, value, dbuf); value=AQH_Value_List_Next(value); } GBAS(dbuf, @@ -487,7 +490,6 @@ void _addValueActionToForm(const AQH_VALUE *value, GWEN_BUFFER *dbuf) uint32_t _colorFromHexString(const char *s) { uint32_t colorIn=0; - uint32_t colorOut; while(*s && *s<33) s++; @@ -505,7 +507,30 @@ uint32_t _colorFromHexString(const char *s) } /* hex 00RRGGBB -> GGRRWWBB */ - colorOut=(colorIn & 0x00ff0000) | ((colorIn & 0x00ff00)<<16) | (colorIn & 0x0000ff); + //return _htmlColorToValueRGBW(colorIn); + return colorIn; +} + + + +uint32_t _htmlColorToValueRGBW(uint32_t colorIn) +{ + uint32_t colorOut; + /* hex 00RRGGBB -> GGRRWWBB */ + /* RGBW GGRRWWBB GGRRWWBB GGRRWWBB */ + /* html 00RRGGBB 00RRGGBB 00RRGGBB*/ + colorOut=(colorIn & 0x00ff0000) | ((colorIn<<16) & 0xff000000) | (colorIn & 0x000000ff); + return colorOut; +} + + + +uint32_t _rgbwToHtmlColor(uint32_t colorIn) +{ + uint32_t colorOut; + /* RGBW GGRRWWBB GGRRWWBB GGRRWWBB */ + /* hex 00RRGGBB 00RRGGBB 00RRGGBB*/ + colorOut=(colorIn & 0x00ff0000) | ( (colorIn>>16) & 0x0000ff00) | (colorIn & 0x000000ff); return colorOut; } @@ -627,7 +652,20 @@ void _addLastValueToForm(AQH_DATACLIENT *dc, const AQH_VALUE *value, GWEN_BUFFER DBG_ERROR(NULL, "Adding actor"); switch(AQH_Value_GetModality(value)) { case AQH_ValueModality_RGBW: - GBAA(dbuf, "", sValueName, (unsigned int) u.f); + DBG_ERROR(NULL, "Color: %.f RGBW=%08x HTML=%08x, RGBW2=%08x", + u.f, + (uint32_t) (u.f), + _rgbwToHtmlColor(u.f), + _htmlColorToValueRGBW(_rgbwToHtmlColor(u.f))); +#if 1 + GBAA(dbuf, "", sValueName, (uint32_t) (u.f)); +#else + GBAA(dbuf, "#%08x (#%08x)", + sValueName, + _rgbwToHtmlColor((unsigned int) (u.f)), + _rgbwToHtmlColor((unsigned int) (u.f)), + (uint32_t) (u.f)); +#endif break; case AQH_ValueModality_OnOff: GBAA(dbuf, ""); break; default: -// GBAA(dbuf, "", sValueName, u.f); + // GBAA(dbuf, "", sValueName, u.f); GBAA(dbuf, "%.2f", u.f); break; } /* switch */ diff --git a/apps/aqhome-mqttlog/s_setdata.c b/apps/aqhome-mqttlog/s_setdata.c index 74f1b05..0cb54d6 100644 --- a/apps/aqhome-mqttlog/s_setdata.c +++ b/apps/aqhome-mqttlog/s_setdata.c @@ -191,8 +191,18 @@ const char *_valueTranslatedForDriver(const AQHMQTT_VALUE *value, double valueDa valueAsInt=(int) valueData; t=AQHMQTT_Translation_List_GetByAqhValue(translationList, valueAsInt); if (t) { - return AQHMQTT_Translation_GetDriverValue(t); + const char *s; + + s=AQHMQTT_Translation_GetDriverValue(t); + DBG_ERROR(NULL, "Translated value %d to %s", valueAsInt, s); + return s; } + else { + DBG_ERROR(NULL, "No translation found for %d", valueAsInt); + } + } + else { + DBG_ERROR(NULL, "No translation list"); } return NULL; diff --git a/apps/aqhome-mqttlog/xmlread.c b/apps/aqhome-mqttlog/xmlread.c index ddb19bd..e55504b 100644 --- a/apps/aqhome-mqttlog/xmlread.c +++ b/apps/aqhome-mqttlog/xmlread.c @@ -62,6 +62,7 @@ static AQHMQTT_TRANSLATION *_readXmlTranslation(GWEN_XMLNODE *translationNode); AQHMQTT_DEVICE_LIST *AQH_MqttLogServer_ReadDeviceFile(AQH_OBJECT *o, const char *sFilename) { + DBG_ERROR(NULL, "Reading device file \"%s\"", sFilename); if (o) { AQH_MQTTLOG_SERVER *xo; @@ -390,13 +391,15 @@ AQHMQTT_VALUE_LIST *_readXmlValueList(GWEN_XMLNODE *parentNode) AQHMQTT_VALUE *_readXmlValue(GWEN_XMLNODE *valueNode) { + const char *sValueName; AQHMQTT_VALUE *value; GWEN_XMLNODE *translationNode; const char *s; int i; + sValueName=GWEN_XMLNode_GetProperty(valueNode, "name", NULL); value=AQHMQTT_Value_new(); - AQHMQTT_Value_SetName(value, GWEN_XMLNode_GetProperty(valueNode, "name", NULL)); + AQHMQTT_Value_SetName(value, sValueName); AQHMQTT_Value_SetValueUnits(value, GWEN_XMLNode_GetProperty(valueNode, "units", NULL)); AQHMQTT_Value_SetPath(value, GWEN_XMLNode_GetProperty(valueNode, "path", NULL)); @@ -415,12 +418,12 @@ AQHMQTT_VALUE *_readXmlValue(GWEN_XMLNODE *valueNode) translationList=_readXmlTranslationList(translationNode); if (translationList) { - DBG_INFO(NULL, "Translations read"); + DBG_ERROR(NULL, "Translations read for value \"%s\"", sValueName); AQHMQTT_Value_SetTranslationList(value, translationList); } } else { - DBG_INFO(NULL, "No element"); + DBG_ERROR(NULL, "No element in value %s", sValueName); } return value; @@ -440,7 +443,7 @@ AQHMQTT_TRANSLATION_LIST *_readXmlTranslationList(GWEN_XMLNODE *parentNode) if (translation) AQHMQTT_Translation_List_Add(translation, translationList); else { - DBG_INFO(NULL, "Error reading element"); + DBG_ERROR(NULL, "Error reading element"); AQHMQTT_Translation_List_free(translationList); return NULL; } diff --git a/apps/aqhome-react/types/prgrule.c b/apps/aqhome-react/types/prgrule.c index a572687..965994c 100644 --- a/apps/aqhome-react/types/prgrule.c +++ b/apps/aqhome-react/types/prgrule.c @@ -312,29 +312,10 @@ const char *_readValueAndProbablyRange(const char *s, uint64_t *ptrBitField, int { int v=0; - if (*s=='#') { - while(*s) { - unsigned char c; - - c=tolower(*s); - if ((c>='0' && c<='9') || (c>='a' && c<='f')) { - c-='0'; - if (c>9) - c-=7; - v<<=4; - v+=c; - } - else - break; - s++; - } - } - else { - while(isdigit(*s)) { - v*=10; - v+=(*s)-'0'; - s++; - } + while(isdigit(*s)) { + v*=10; + v+=(*s)-'0'; + s++; } if (!_valueOkay(v, minValue, maxValue)) { DBG_INFO(NULL, "here"); @@ -368,13 +349,35 @@ const char *_readDouble(const char *s, double *ptrDouble) while(*s && isspace(*s)) s++; sStart=s; - while(*s && (isdigit(*s) || *s=='.' || *s=='+' || *s=='-')) - s++; + if (*s=='#') { + uint32_t v=0; - rv=GWEN_Text_StringToDouble(sStart, ptrDouble); - if (rv<0) { - DBG_ERROR(NULL, "Error reading double: %d", rv); - return NULL; + s++; + while(*s) { + unsigned char c; + + c=tolower(*s); + if ((c>='0' && c<='9') || (c>='a' && c<='f')) { + c-='0'; + if (c>9) + c-=7; + v<<=4; + v+=c; + } + else + break; + s++; + } + *ptrDouble=(double) v; + } + else { + while(*s && (isdigit(*s) || *s=='.' || *s=='+' || *s=='-')) + s++; + rv=GWEN_Text_StringToDouble(sStart, ptrDouble); + if (rv<0) { + DBG_ERROR(NULL, "Error reading double: %d", rv); + return NULL; + } } return s; diff --git a/apps/aqhome-react/units/u_valueset.c b/apps/aqhome-react/units/u_valueset.c index 4643174..ffb5389 100644 --- a/apps/aqhome-react/units/u_valueset.c +++ b/apps/aqhome-react/units/u_valueset.c @@ -66,7 +66,7 @@ AQHREACT_UNIT *AqHomeReact_UnitValueSet_new(AQH_OBJECT *aqh) param=AQHREACT_Param_new(); AQHREACT_Param_SetName(param, AQHOMEREACT_UNIT_VALUESET_PARAM_VALUENAME); - AQHREACT_Param_SetDataType(param, AQHREACT_DATAOBJECTTYPE_DOUBLE); + AQHREACT_Param_SetDataType(param, AQHREACT_DATAOBJECTTYPE_STRING); AQHREACT_Unit_AddParam(unit, param); return unit; @@ -131,7 +131,6 @@ AQH_MESSAGE *_mkSetDataMsgDouble(AQH_OBJECT *brokerEndpoint, const char *sValueN AQH_MESSAGE *msgOut; AQH_VALUE *v; double data; - int rv; v=AQH_Value_new(); AQH_Value_SetNameForSystem(v, sValueName); diff --git a/aqhome/data/storage.c b/aqhome/data/storage.c index ad3ffd1..f42ac59 100644 --- a/aqhome/data/storage.c +++ b/aqhome/data/storage.c @@ -404,7 +404,6 @@ uint64_t *AQH_Storage_GetDataPoints(AQH_STORAGE *sto, uint64_t valueId, uint64_t uint64_t *arrayPtr; uint64_t i; - DBG_ERROR(NULL, "Requested %d entries", (int) maxDataPointsRequested); df=_getDataFileByValueId(sto, valueId); if (df==NULL) { DBG_ERROR(AQH_LOGDOMAIN, "No file for value id %lu", (unsigned long int) valueId);