Ankündigung

Einklappen
Keine Ankündigung bisher.

Höchste bisher gemessene Temperatur des aktuellen Tages

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

  • kex
    antwortet
    Sorry, dass ich erst jetzt antworte. Bin lange nicht dazu gekommen wieder in's Forum reinzuschauen.

    Zitat von ic14m001 Beitrag anzeigen

    kex : Frage: Wie hast Du das mit den Tagesminimalwerten hinbekommen? Habe mir auch den Blogpost dazu angesehen, aber da habe ich auch keinen Anhaltspunkt gefunden. Bei mir steht auch immer nur eine '0' drinnen. Abfrage schaut bei mir wie folgt aus:

    Code:
    eval: sh...Aktuell() if value == 99.9 or float(sh..self()) > sh...Aktuell() else sh..self.property.value
    Oder ist der Austausch des "kleiner/größer-Zeichens" wahrscheinlich nicht ausreichend ....
    DANKE!
    Es ist wie Sipple bereits geschrieben hat: Um den Minimalwert zu speichern, brauchst du ein weiteres Item das genauso aufgebaut ist wie das für den Maximalwert, dann müsste er den Minimalwert speichern.

    Und ja: In dem Blogeintrag ist bei der Beschreibung oben das ">" Zeichen falsch. Für den Maximalwert muss, wie ganz unten im Blogeintrag beim "endgültigen Item" ein "<" Zeichen stehen.

    Ich vermute aber, der Grund, warum bei dir immer '0' steht ist das selbe Problem wie bei mir: Aus einem Grund den ich noch genau untersuchen muss funktioniert der Crontab Eintrag nicht. Das heisst das automatische Zurücksetzen über den Wert '99,9' funktioniert irgendwie nicht. Nur wenn du von Hand über die Weboberfläche 99,9 in das Item rein schreibst aktualisiert sich der Wert. Dem Problem muss ich noch nachgehen.

    Gruß Andreas



    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Zitat von ic14m001 Beitrag anzeigen

    kex : Frage: Wie hast Du das mit den Tagesminimalwerten hinbekommen? Habe mir auch den Blogpost dazu angesehen, aber da habe ich auch keinen Anhaltspunkt gefunden. Bei mir steht auch immer nur eine '0' drinnen. Abfrage schaut bei mir wie folgt aus:

    Code:
    eval: sh...Aktuell() if value == 99.9 or float(sh..self()) > sh...Aktuell() else sh..self.property.value
    Oder ist der Austausch des "kleiner/größer-Zeichens" wahrscheinlich nicht ausreichend ....
    DANKE!
    Der Blogeintrag ist da wohl fehlerhaft und nicht vollständig.
    Du brauchst imho ein weiteres item, z.B. Minimum_Heute, das fast genauso aussieht wie das Maximum_Heute, nur die eval Zeile muss angepasst werden.
    Der Blogeintrag zeigt nur das Maximum Beispiel und da ist unten im "endgültige Item" Block das "<" verkehrt rum.
    Kann natürlich sein, dass ich da auch was übersehe oder falsch interpretiere.

    Das wirklich vollständige und funktionierende Maximum/Minimum Item von kex könnte es auflösen.

    Gruß, Martin

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Mit einem eingefügtem Item hat die Exception eher nichts zu tun.

    Das sieht danach aus, als ob Du ein Plugin nutzt, welches ein requirement setzt, welches für den Core bereits gesetzt ist.
    Die minimum Angabe 2.2.0 klingt für mich stark nach dem requests package. Dort hatten wir ein minimum gesetzt, weil ältere Versionen ein Security Issue haben.

    Schau mal in den Verzeichnissen der Plugins die Du konfiguriert hast in die requirements.txt un kontrolliere ob da bei einem Plugin noch requests aufgeführt ist.

    Btw.: Welche Version von SmartHomeNG nutzt Du? In v1.7.2 sollte die Exception eigentlich nicht mehr auftreten.
    Zuletzt geändert von Msinn; 30.10.2020, 21:18.

    Einen Kommentar schreiben:


  • manu241
    antwortet
    Huhu,

    ich habe gerade mal dein Item bei mir eingefügt. Nur bekomme ich im Log folgende Meldung:

    Code:
    2020-10-30 19:11:16 WARNING CP Server Thread-13 - requests: MULTIPLE requirements [{'max': '*', 'min': '*'}, {'min': '2.20.0'}]
    2020-10-30 19:11:16 ERROR CP Server Thread-13 [30/Oct/2020:19:11:16] HTTP
    Traceback (most recent call last):
    File "/usr/local/lib/python3.5/dist-packages/cherrypy/_cprequest.py", line 628, in respond
    self._do_respond(path_info)
    File "/usr/local/lib/python3.5/dist-packages/cherrypy/_cprequest.py", line 687, in _do_respond
    response.body = self.handler()
    File "/usr/local/lib/python3.5/dist-packages/cherrypy/lib/encoding.py", line 219, in __call__
    self.body = self.oldhandler(*args, **kwargs)
    File "/usr/local/lib/python3.5/dist-packages/cherrypy/_cpdispatch.py", line 54, in __call__
    return self.callable(*self.args, **self.kwargs)
    File "/usr/local/smarthome/modules/admin/systemdata.py", line 164, in pypi_json
    package_list = self.shpypi.get_packagelist()
    File "/usr/local/smarthome/lib/shpypi.py", line 437, in get_packagelist
    package['vers_req_min'] = required_packages[pkg_name].get('min', '*')
    AttributeError: 'list' object has no attribute 'get'
    Woher stammt diese Meldung. Verwendet habe ich das Imaga von Onkelandy.

    Gruß Manuel

    Einen Kommentar schreiben:


  • ic14m001
    antwortet
    Zitat von kex Beitrag anzeigen
    ..... Ich habe nach dem selben Prinzip auch ein Item angelegt, das sich den kleinsten Messwert des Tages merkt und hier steht aktuell der Wert „0“ drin. .........
    kex : Frage: Wie hast Du das mit den Tagesminimalwerten hinbekommen? Habe mir auch den Blogpost dazu angesehen, aber da habe ich auch keinen Anhaltspunkt gefunden. Bei mir steht auch immer nur eine '0' drinnen. Abfrage schaut bei mir wie folgt aus:

    Code:
    eval: sh...Aktuell() if value == 99.9 or float(sh..self()) > sh...Aktuell() else sh..self.property.value
    Oder ist der Austausch des "kleiner/größer-Zeichens" wahrscheinlich nicht ausreichend ....
    DANKE!

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Nähere Infos findest Du hier: https://www.smarthomeng.de/registrieren-und-bloggen

    Einen Kommentar schreiben:


  • kex
    antwortet
    Blogpost hört sich gut an. Wer kann denn alles Blogbeiträge schreiben? Sofern ich die nötigen Nutzerrechte hätte würde ich das gerne übernehmen. Natürlich kann ich auch einfach den Text liefern. Allerdings würde ich das item noch eine Weile testen und beobachten und wenn möglich noch gegen Ausreißer absichern: Ich habe nach dem selben Prinzip auch ein Item angelegt, das sich den kleinsten Messwert des Tages merkt und hier steht aktuell der Wert „0“ drin. Obwohl es sicher heute noch nicht so kalt war.

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Schön das es funktioniert. Das wäre glatt einen Blogpost wert. Bestimmt haben diese Aufgabenstellung noch andere...

    Einen Kommentar schreiben:


  • kex
    antwortet
    Danke euch allen! Jetzt funktionierts!

    So sieht mein Item jetzt aus (Weills so schön funktioniert hab ich das Minumum gelich dazu gemacht):
    Code:
    Wetterstation:
        Temperatur:
            Aktuell:
                type: num
                knx_dpt: 9
                visu_acl: ro
                knx_init: 1/2/3
                database: 'yes'
            Maximum_Heute:
                type: num
                visu_acl: ro
                eval: sh...Aktuell() if value == 99.9 or float(sh..self()) < sh...Aktuell() else sh..self.property.value
                eval_trigger: ..Aktuell
                crontab:
                 - 0 3 * * = 99.9
                 - init = 99.9
    Den Hinweis von Msinn, dass ich es mal mit sh..self() versuchen soll, hab ich überlesen. Irgendwie war ich von der Info, dass ich besser property.value statt property.last_value verwenden soll, so abgelenkt, dass ich das nicht gesehen hatte. ;-)

    Auch der Tipp von BMX mit dem Eval Checker hat mir wieder die Augen geöffnet, dass ich vielleicht mal wusste, dass es den gibt, ich aber total vergessen hatte. Hier hab ich allerdings festgestellt dass "value" im Eval-Cecker nicht bekannt ist. Das musste ich durch eine Konstante ersetzen um den Ausdruck prüfen zu können.

    Einen Kommentar schreiben:


  • Morg
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Morg Hast Du meinen Post von 18:45 Uhr gelesen?
    Ja, aber ... nöö Der letzte Satz hat mich so beeindruckt, dass ich den Rest davor wohl überlesen habe

    Das erklärt aber auch, wieso einige meiner eval-Versuche nicht so getan haben, wie ich das wollte

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von kex Beitrag anzeigen
    Das mit dem Aufruf ohne Klammer hat auf jeden Fall schonmal geholfen.
    Aber Python und ich werden enfach nicht Warm miteinander.
    Mit Klammern rufst Du eine Funktion auf. Properties sind jedoch keine Funktionen sondern eher wie Variablen zu sehen. Man kann sie nur nicht beliebig lesen und schreiben. Je nach Property ist es r/w, r/o oder evtl. sogar w/o.

    Zitat von kex Beitrag anzeigen
    Kann mir noch jemand einen Tipp geben wo mein Fehler liegen könnte?
    Auf die Schnelle nicht, ausser, dass ich sh...Aktuell() auch in float gcastet hätte. Aber hast Du schon mal

    Code:
        eval: sh...Aktuell() if value == 99.9 or float(sh..self()) < float(sh...Aktuell()) else sh..self.property.value
    bzw.
    Code:
        eval: sh...Aktuell() if value == 99.9 or float(sh..()) < float(sh...Aktuell()) else sh..self.property.value
    probiert wie ich oben vorgeschlagen habe?

    Zitat von Morg Beitrag anzeigen
    Ist das Absicht, dass im eval-String jetzt nicht mehr last_value sondern value steht?
    Morg Hast Du meinen Post von 18:45 Uhr gelesen?

    Einen Kommentar schreiben:


  • Morg
    antwortet
    Ist das Absicht, dass im eval-String jetzt nicht mehr last_value sondern value steht?

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Um solche Ausdrücke zu testen kann man im Admin Interface unter Dienste den Eval Syntax Prüfer nutzen oder das Executor Plugin. Dann muß man nicht immer neu starten.

    Einen Kommentar schreiben:


  • kex
    antwortet
    Das mit dem Aufruf ohne Klammer hat auf jeden Fall schonmal geholfen.
    Aber Python und ich werden enfach nicht Warm miteinander.

    Mein Item sieht jetzt so aus:

    Code:
    Wetterstation:
        Temperatur:
            Aktuell:
                type: num
                knx_dpt: 9
                visu_acl: ro
                knx_init: 1/2/3
                database: 'yes'
            Maximum_Heute:
                type: num
                visu_acl: ro
                eval: sh...Aktuell() if value == 99.9 or float(sh..self.property.value) < sh...Aktuell() else sh..self.property.value
                eval_trigger: ..Aktuell
                crontab:
                 - 0 3 * * = 99.9
                 - init = 99.9
    Jetzt kommt eine "invalid syntax" Fehlermeldung im Log
    Code:
    2020-05-20  19:19:33 WARNING  lib.item            Item Wetterstation.Temperatur.Maximum_Heute: problem evaluating sh.Wetterstation.Temperatur.Aktuell() if value == 99.9 or float(sh.Wetterstation.Temperatur.Maximum_Heute.property.value) < sh...Aktuell() else sh.Wetterstation.Temperatur.Maximum_Heute.property.value: invalid syntax (<string>, line 1)
    Wenn ich float(sh.Wetterstation.Temperatur.Maximum_Heute.pr operty.value) durch einen Konstanten Wert ersetze (z.B. 42.0) kommt der Fehler nicht. Ich hab es auch schon ohne den Cast nach Float versucht. Dann kommt allerdings der selbe Fehler.

    Kann mir noch jemand einen Tipp geben wo mein Fehler liegen könnte?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Value enthält zur eval Auswertung bereits den neuen Eingangs-Wert, damit man mit ihm rechnen kann um den Wert der in das Item geschrieben werden soll zu berechnen.

    Über Property greifst Du auf die Werte des Items vor der Veränderung zu. property.last_value sollte also den vorletzten Wert enthalten. Du müsstest also eigentlich property.value nutzen oder stattdessen den Wert des Items selbst abfragen: sh..()

    property.last_value musst Du wie alle Properties ohne anschließende Klammern aufrufen!

    Einen Kommentar schreiben:

Lädt...
X