Ankündigung

Einklappen
Keine Ankündigung bisher.

error saving config

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • henfri
    antwortet
    error saving config

    Danke und zwar gleich drei mal!

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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 anzeigen
    Meinst du nicht, eine Funktion zur Abfrage spezifischer Werte wäre gut?
    Ich denke, das würde Dir an dieser Stelle nicht wirklich helfen. Siehe oben.
    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:


  • henfri
    antwortet
    Hi Marcus,
    Zitat von mknx Beitrag anzeigen
    ich fasse das noch einmal zusammen. Du hast einen Zählerstand der regelmäßig aktualisiert wird und stetig größer wird.
    Richtig.

    Code:
    sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i')
    wird z.T. negativ. Oder immer? Kannst Du das reproduzieren?
    Kannst Du bitte etwas zu dem Updateintervall und die Größe sagen.
    Ist 280 eine realistische Größenordnung?
    Der tatsächliche Code ist:
    Code:
    "(sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i'))/60"
    Und da habe ich Werte von 0.0014, -0.0246 und -0.05 in meinem Plot.


    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
    Hier fällt auf, dass der Wert direkt nach dem Start negativ ist, danach positiv.

    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.
    logisch, ja. Ist aber dennoch etwas umständlich zu denken. Meinst du nicht, eine Funktion zur Abfrage spezifischer Werte wäre gut?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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')
    wird z.T. negativ. Oder immer? Kannst Du das reproduzieren?
    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:


  • henfri
    antwortet
    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')
    Das sollte der aktuelle Zählerstand , also z.B. 280, Minus dem Durchschnittswert vor einer Minute, richtig?
    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:


  • callidomus
    antwortet
    ist auch in master gefixed.

    bis bald

    Marcus

    Einen Kommentar schreiben:


  • henfri
    antwortet
    error saving config

    Ich habe zu danken!

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi Hendrik,

    es war ein Bug im SQLite Plugin. Ist in develop gefixed.

    Danke für die Geduld.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo Marcus,

    bist du da schon zu gekommen?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Hendrik,

    Zitat von henfri Beitrag anzeigen
    Hast du eine Idee?
    leider Nein. Ich verstehe momentan den Zusammenhang noch nicht.
    Ich muss das mal nachstellen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • henfri
    antwortet
    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')"
    Jetzt muss es nicht an der Zeile selbst liegen... Es kann sein, dass es noch keine Daten für den gewünschten Zeitraum gibt, da ich den Rechner ja neu aufgesetzt habe.
    Dennoch ist das komisch.


    Hast du eine Idee?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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:


  • callidomus
    antwortet
    Hi Hendrik,

    kommentier bitte mal das rrd aus der plugin.conf aus.

    Danke

    Marcus

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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
    ins Log geschrieben, wenn ich mit Telnet auf den Port gehe.
    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:


  • henfri
    antwortet
    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
    Kann ich über Telnet sh.py etwas provozieren, so das etwas in das debug-log geschrieben wird?


    Gruß,
    Hendrik

    Einen Kommentar schreiben:

Lädt...
X