In einem anderen Thread hat jemand die identische Frage gestellt und auch eine Antwort bekommen.
Eine kleine Erweiterung im Code löst das Problem auch bei mir, allerdings nur für ein paar Stunden, denn dann aktualisiert Loxone denKW-Wert nicht mehr. Im Webinterface des Youless laufen aktuelle Werte auf und eine ebenfalls zugreifende FHEM Instanz kriegt aktuelle Werte.
char *pRet, *p, *s;
int pLen, sLen, tLen, event;
int rate = 10; // default refresh rate
printf("Starting YouLess Data Fetcher (YDF)");
while(TRUE)
{
event = getinputevent();
if(event & 0x01)
{
rate = (int)getinput(0);
printf("YDF [INFO]: Refresh rate changed! (%d)", rate);
}
pRet = httpget("192.168.178.14:80","/a");
if ((pRet != NULL) && (*pRet != 0))
{
p = strstrskip(pRet,"kWh"); // returns all after keyword "kWh"
s = index(p,0x20); // return to first blank
pLen = strlen(p);
sLen = strlen(s);
tLen = pLen - sLen;
char t[tLen+1];
strncpy(t,p,tLen);
t[tLen] = '\0'; // null terminate char array
if (p != NULL)
{
// debug
//printf("P:%s|LEN:%d|S:%s|LEN:%d|T:%s|LEN:%d\n", p, pLen, s, sLen, t, tLen);
setoutput(0,atof((char *)t+1)); // float from char
}
free(pRet); // free httpget resource
}
sleeps(rate);
}
Wenn ich nun die Änderung zurücknehme und den geänderten Code in den Miniserver speichere, dann die Korrektur erneut vornehme und wieder speichere, läuft es für kurze Zeit wieder....
Was ist da los?
Kommentar