error saving config
Danke und zwar gleich drei mal!
Ankündigung
Einklappen
Keine Ankündigung bisher.
error saving config
Einklappen
X
-
Hi Hendrik,
ich denke ich kann das Verhalten erklären.
Wenn SH.py gestartet wird und Du 'cache = yes' nicht spezifiziert hast, wird ein Num-Item mit 0 initialisiert.
Dein Zähler stand vor einer Minute bei ca. 299. Wobei die avg Funktion sehr unwahrscheinlich ein Integer liefern wird. Das wird sehr wahrscheinlich immer ein Float sein.
Dann wird aus:
(sh.Allgemein.Stromzaehler.Zaehlerstand()-sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i'))/60"
(0 - 299)/60 = -4,99
Das geht dann solange bis der Zähler das erste Mal gesetzt wird. Dann hast Du:
(300 - 299,XXX)/60 = 0,00....
Was kannst Du machen?
1. cache verwenden
2. max anstelle von avg (dann hast Du die Nachkommastellen nicht mehr und rechnest primär mit Integren)
3. Den Stromverbrauch nicht in kW/h/s angeben, sondern in kW/h/h.
Was kann ich machen?
1. wenn 'sqlite = init' angeben ist, den letzen Wert aus der Datenbank holen und das Item damit initialisieren. Die Machbarkeit muss ich aber noch prüfen.
Zitat von henfri Beitrag anzeigenMeinst du nicht, eine Funktion zur Abfrage spezifischer Werte wäre gut?
Ein bisschen Hintergrundwissen zu dem SQLite Plugin. Es ist so ausgelegt das die Werte in unregelmäßigen Abständen in die DB geschrieben werden. Diese werden einmal täglich in der DB verdichtet. Je älter die Einträge, desto größer der Zeitraum in dem die Werte zusammengefasst werden (ähnlich RRD).
Wenn Du relativ junge Einträge hast, wie in Deinem Fall, dann hast Du natürlich den zu dem gewünschten Zeitpunkt aktiven Wert. Du müsstest Ihn mit db('avg', '1i', '1i') abfragen können (habe ich allerdings nicht probiert).
Ich überlege mir aber, ob ich evtl. ein Methode anbieten kann die die gewünschte Funktionalität bietet.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Hi Marcus,Zitat von mknx Beitrag anzeigenich fasse das noch einmal zusammen. Du hast einen Zählerstand der regelmäßig aktualisiert wird und stetig größer wird.
Code:sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i')
Kannst Du bitte etwas zu dem Updateintervall und die Größe sagen.
Ist 280 eine realistische Größenordnung?
Code:"(sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i'))/60"
Im log finde ich:
Code:1min = -4.98918420139 via 1min = -4.98919923889 via 1min = 0.00040461875 via 1min = 0.000424542708332 1min = 0.00040452361111 v 1min = 0.000404415277778 1min = 0.000406177777777 1min = 0.000406282986111 1min = 0.000406467878313 1min = 0.000406612847223 1min = 0.000406839236112 1min = 0.000406697569446 1min = 0.000406807455987 1min = 0.000406694791668 1min = 0.000406818055555 1min = 0.000406369616061 1min = 0.000404819097221 1min = 0.000404892013889 1min = 0.000404140625001 1min = 0.000403825694444 1min = 0.000402888888889 1min = 0.000402139236111 1min = 0.000401755902778 1min = 0.000401768651078 1min = 0.000401571180555 1min = 0.00040116875 via 1min = 0.000400942361111 1min = 0.000400499999999 1min = 0.000400169719395 1min = 0.000399573895991 1min = 0.000399136805556 1min = 0.000399154513889 1min = 0.000398997863925 1min = 0.000398852430556 1min = 0.000399080208335 1min = 0.000399153125 via 1min = 0.000399256887385 1min = 0.000399360646313 1min = 0.000399441606529 1min = 0.000399733680555 1min = 0.000399725000001 1min = 0.000399934375 via 1min = 0.000400055902778 1min = 0.000400368055555 1min = 0.000400410416665 1min = 0.000400404861111 1min = 0.000400512152778 1min = 0.000400308680555 1min = 0.000399977777777 1min = 0.000399263831714 1min = 0.000398449305555 1min = 0.000397736458333 1min = 0.000397075673739 1min = 0.000396314930556 1min = 0.000395580902779 1min = 0.000394855902778 1min = 0.000394184722223 1min = 0.00039333576389 v 1min = 0.000392763194444 1min = 0.000392112214796 1min = 0.000391431944444 1min = 0.000390839930555 1min = 0.000390241666667 1min = 0.00038981076389 v 1min = 0.000389117013889 1min = 0.000388679980334 1min = 0.000388297222221 1min = 0.000387866666668 1min = 0.000387602777777 1min = 0.000387341113759 1min = 0.000382579166668 1min = 0.000386966319445 1min = 0.000386865972221
Ich habe jetzt mal das smarthome/var/log/ Verzeichnis gegreppt. Da kommen auch einige negative Werte vor. Allerdings könnte es sein, dass dies immer nach dem Start von smarthome ist...
Ja, ich habe mal nachgeguckt: Es ist tatsächlich so.
Davon abgesehen, könntest Du in Deinem Fall 'max' anstelle von 'avg' verwenden.
Das sollte ohne Probleme funktionieren.
Gruß,
Hendrik
Einen Kommentar schreiben:
-
Hi Hendrik,
ich fasse das noch einmal zusammen. Du hast einen Zählerstand der regelmäßig aktualisiert wird und stetig größer wird.
Code:sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i')
Kannst Du bitte etwas zu dem Updateintervall und die Größe sagen.
Ist 280 eine realistische Größenordnung?
Das scheint ein Bug zu sein den ich wirklich gerne fixen würde!
Davon abgesehen, könntest Du in Deinem Fall 'max' anstelle von 'avg' verwenden.
Das sollte ohne Probleme funktionieren.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Was ist auch gefixt? Das du dich bedankst, obwohl ich zu danken habe?!
Wie auch immer:
Es funktioniert soweit, dass es nicht abstürzt.
Aber die Werte sind komisch:
Code:sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i')
Wie kann der Wert negativ sein (das ist er hier).
Eigentlich will ich auch garnicht den Mittelwert vor 2 min über eine Minute, sondern den Wert vor genau einer Minute.
Das geht aber nicht, oder? Das wäre ein Feature-Request.
Gruß,
Hendrik
Einen Kommentar schreiben:
-
Hi Hendrik,
es war ein Bug im SQLite Plugin. Ist in develop gefixed.
Danke für die Geduld.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Hallo Marcus,
bist du da schon zu gekommen?
Gruß,
Hendrik
Einen Kommentar schreiben:
-
Hallo Hendrik,
Zitat von henfri Beitrag anzeigenHast du eine Idee?
Ich muss das mal nachstellen.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Hallo,
danke für Deine Tipps. Sie haben mich auf den richgigen weg gebracht.
Nach 1h Trial&Error habe ich dies als den Bösewicht identifiziert:
Code:# eval = "sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i')"
Dennoch ist das komisch.
Hast du eine Idee?
Gruß,
Hendrik
Einen Kommentar schreiben:
-
Hallo Hendrik,
und lösch/verschieb bitte mal die 1w_items.conf.
Und wenn alles nichts hilft, bitte mal die gesammte Config löschen. Also in der plugin.conf nur die visu drin lassen und alle Items löschen.
Und dann Telnet auf 2424.
Danke
Marcus
Einen Kommentar schreiben:
-
Hi Hendrik,
kommentier bitte mal das rrd aus der plugin.conf aus.
Danke
Marcus
Einen Kommentar schreiben:
-
Hi Hendrik,
ja, das passt alles soweit.
Bei mir wird sofort:
Code:2013-08-03 23:01:46,168 SmartHome.py INFO WebSocket: incoming connection from 127.0.0.1:55897 -- __init__.py:handle_accept:115
Bis dahin kann Python, oder ich, gar nicht so viel falsch machen.
btw. ich entwickle auf Ubuntu 12.04! Und teste gerade mit dem 0.9 Release, wie Du.
Ich denk noch mal nach, ist aber echt eine harte Nuss.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Hi Marcus,
das sieht doch eigentlich gut aus:Code:root@homeserver:~# netstat -lptu | grep 2424 tcp 0 0 *:2424 *:* LISTEN 12264/python root@homeserver:~# ps aux | grep smarthome.py root 1934 0.0 0.0 10896 932 pts/3 S+ 22:52 0:00 grep --color=auto smarthome.py root 12264 0.5 0.1 720144 13456 pts/1 Sl+ 22:34 0:06 python /usr/local/smarthome/bin/smarthome.py -n -d
Gruß,
Hendrik
Einen Kommentar schreiben:
Einen Kommentar schreiben: