Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

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

  • startrix
    antwortet
    Zitat von schorge Beitrag anzeigen
    Versuche seit einiger Zeit auch meine DB umzustellen.
    Fehler:
    Code:
    2018-12-10 20:43:00 ERROR root Database [Database]: Could not connect to the database: object supporting the buffer API required
    2018-12-10 20:43:00 ERROR plugins.database Database: initialization failed: object supporting the buffer API required
    2018-12-10 20:44:00 ERROR root Database [Database]: Could not connect to the database: object supporting the buffer API required
    2018-12-10 20:44:00 ERROR plugins.database Database: initialization failed: object supporting the buffer API required
    [/CODE]
    schorge - konntest du das Problem lösen? Ich stehe gerade vor der selben Fehlermeldung.

    Viele Grüße
    Jannis

    Einen Kommentar schreiben:


  • psilo
    antwortet
    stabil ja, es wird aber nur mit dem DEV Core gehen!

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    psilo
    Super, danke.
    Ist die develop schon so stabil, dass man/ich einen Wechsel wagen kann?
    Oder kann ich auch nur das database-Plugin auf develop ziehen?

    Einen Kommentar schreiben:


  • psilo
    antwortet
    achja und nochwas: die funktionen des DB Plugins sind sogar per autocomplete im logikeditor verfügbar (DEV!)

    database_autocomplete.png

    Die API Übersicht gibts jetzt auch im Webif des Database Plugins:

    webif.JPG
    Zuletzt geändert von psilo; 17.12.2018, 18:14.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Ich habe das Cleanup jetzt in die WebGUI im DEV Plugin integriert. Du darfst zum Testen auf den Knopf drücken - ich habe Angst ;-)

    Scherz beiseite: bei mir ists gerade durchgelaufen. Dauert ggf. nur einige Minuten.
    Zuletzt geändert von psilo; 17.12.2018, 16:21.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Funktionen auf Plugins kannst Du einfach bspw. über eine Logik aufrufen. Aus dem CLI Plugin müsste das aber auch gehen.. oder Du baust dem Web-Interface des DB Plugins einfach einen Button dazu und stellst einen Pull Request ;-)))))

    Wenn wir jede Python Grundlage in die Doku schreiben würden, hätten wir einen 5000-seitigen Roman, den keiner mehr lesen würde (machen sie jetzt ja schon nicht...)

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo,

    ich möchte meinen Datenbank mal bereinigen.
    In der Doku steht dazu:
    dbplugin.cleanup()

    This method will remove all items and logs from database of items which are currenlty not configured to be logged to database. Beware of this using in a multi-instance setup, since one instance does not know the item of the other instance!
    Wie geht das genau?
    Über CLI oder eine Logik?
    Irgendwie stehe ich auf dem Schlauch?

    Ist in der Doku irgendwo geschrieben, wie die Funktionen, die ein Plugin mitbringt, angesprochen werden können?

    Danke Euch.

    Einen Kommentar schreiben:


  • schorge
    antwortet
    Versuche seit einiger Zeit auch meine DB umzustellen.
    MariaDB und Zugang funktioniert nach der Doku.
    Komme auch auf phpmyadmin erfolgreich auf die "LEEREN" Tabellen vom user: smarthome
    Leerzeilen in der plugin.yaml connect alle entfernt
    Läuft alles unter einer VirtualBox Debian9 unter OMV.

    Server-Version: 10.1.37-MariaDB-0+deb9u1 - Debian 9.6


    plugin.yaml
    Code:
    #neu 12/2018 db als mariaDB MySql
    database:
        class_name: Database
        class_path: plugins.database
        driver: pymysql
        connect:
          - host:127.0.0.1
          - user:smarthome
          - passwd:HdLQfgdge5Q0Z1OQp
          - db:smarthome_db
        instance: mysqldb
    Fehler:
    Code:
    2018-12-10  20:43:00 ERROR    root              Database [Database]: Could not connect to the database: object supporting the buffer API required
    2018-12-10  20:43:00 ERROR    plugins.database  Database: initialization failed: object supporting the buffer API required
    2018-12-10  20:44:00 ERROR    root              Database [Database]: Could not connect to the database: object supporting the buffer API required
    2018-12-10  20:44:00 ERROR    plugins.database  Database: initialization failed: object supporting the buffer API required
    Code:
    MariaDB [mysql]> select Host, User from user;
    +-----------+------------+
    | Host      | User       |
    +-----------+------------+
    | localhost | phpmyadmin |
    | localhost | root       |
    | localhost | smarthome  |
    +-----------+------------+
    4 rows in set (0.00 sec)
    
    
    +-----------------------------------+--------------+------------+
    | Host                              | Db           | USer       |
    +-----------------------------------+--------------+------------+
    | 127.0.0.1                         | smarthome_db | smarthome  |
    | localhost                         | phpmyadmin   | phpmyadmin |
    | localhost                         | smarthome_db | smarthome  |
    | «ip of your smarthomeng server»   | smarthome_db | smarthome  |
    +-----------------------------------+--------------+------------+

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Die Erweiterung wäre sicher gut. Mit wäre noch eine Erweiterung bzgl. Dauer eines Items >0 in sek wichtig. bspw item.db('duration', 'sh.time.minute.since.midnight.dbstr())

    Für den zeitlich Abfrag nehme ich:
    Code:
                gestern:
                    type: num
                    visu_acl: 'ro'
                    eval: round((sh...db('max', sh.time.minute.since.midnight.dbstr(), sh.time.minute.since.midnight.dbstr()) - sh...db('max', str(sh.time.minute.since.midnight() + 1440) + 'i', str(sh.time.minute.since.midnight() + 1440) + 'i')) / 60 /60, 2)
                    eval_trigger: heizung.recalc
                    crontab: 1 0 * * = 1
                    cache: 'yes'
                    database: 'yes'
    
                gestern_minus1:
                    type: num
                    visu_acl: 'ro'
                    eval: round((sh...db('max', str(sh.time.minute.since.midnight() + 1440) + 'i', str(sh.time.minute.since.midnight() + 1440) + 'i') - sh...db('max', str(sh.time.minute.since.midnight() + 2880) + 'i', str(sh.time.minute.since.midnight() + 2880) + 'i')) / 60 /60, 2)
                    eval_trigger: heizung.recalc
                    crontab: 1 0 * * = 1
                    cache: 'yes'
                
                gestern_minus2:
                    type: num
                    visu_acl: 'ro'
                    eval: round((sh...db('max', str(sh.time.minute.since.midnight() + 2880) + 'i', str(sh.time.minute.since.midnight() + 2880) + 'i') - sh...db('max', str(sh.time.minute.since.midnight() + 4320) + 'i', str(sh.time.minute.since.midnight() + 4320) + 'i')) / 60 /60, 2)
                    eval_trigger: heizung.recalc
                    crontab: 1 0 * * = 1
                    cache: 'yes'
                    
                gestern_minus3:
                    type: num
                    visu_acl: 'ro'
                    eval: round((sh...db('max', str(sh.time.minute.since.midnight() + 4320) + 'i', str(sh.time.minute.since.midnight() + 4320) + 'i') - sh...db('max', str(sh.time.minute.since.midnight() + 5670) + 'i', str(sh.time.minute.since.midnight() + 5670) + 'i')) / 60 /60, 2)
                    eval_trigger: heizung.recalc
                    crontab: 1 0 * * = 1
                    cache: 'yes'
    Das klappt gut.

    Einen Kommentar schreiben:


  • smai
    antwortet
    Da die Anforderung in der Art "der Durchschnitt von gestern" immer wieder kommt, wäre vielleicht eine entsprechende Erweiterung überlegenswert.
    Man das etwa so lösen, dass man vor die Zeitangabe ein "startof:" schreiben könnte, also z.B. item.db('avg', 'startof:2d', 'startof:1d') wäre dann vorgestern.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    So wie ich es verstehe, sind die Zeitangaben in der DB-Abfrage immer relativ zum Ausführungszeitpunkt. Im Grunde ist 1d nur eine andere Schreibweise von 24h und 1w nichts andere wie 7d oder 168h..
    Bedeutet (max, 2d, 1d) ist das gleiche wie (max, 48h, 24h) vom Ausführungszeitpunkt gesehen.

    Willst Du ein tag-genaues Ergebnis, musst entweder die Abfrage mit diesen relativen Zeit immer im Mitternacht mit crontab machen oder über Zeitlogik (ich glaube der Link war 2 Posts weiter oben) immer den aktellen Abstand von der Taggrenze (bspw hours since midnight) berechnen und das dann bei der db-Abfrage nutzen.

    Einen Kommentar schreiben:


  • schuma
    antwortet
    Ich habe nämlich einen Max wert von gestern aus der Datenbank geholt.
    (Max, 1d)
    Der Wert war 2.0. ( sind aber mehrere Werte in der DB mit 2.0)
    und vom Tag davor:
    (Max, 2d, 1d)
    Wert = 0.0
    und diese Beiden Werte addiert.
    =2.0
    Am nächsten Tag das Gleiche
    Ergebnis: 4.0
    Obwohl an dem Tag nur ein Wert 0.0 dazugekommen ist.
    Deshalb meine Vermutung, dass der vorletzte Tag eigentlich (Max, 3d, 2d) sein müsste.

    Wenn es aber um Stunden geht, hat sich bestimmt ein Wert auf die Tag 2 Seite geschmuggelt(24 Std von jetzt)
    Was aber echt blöd ist, da man dann ja nie einen Max Wert sicher von einem Tag bekommt.

    Versteht man was ich sagen möchte????
    Zuletzt geändert von schuma; 16.11.2018, 17:51.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    bei der diskussion hatten wir hier (https://www.smarthomeng.de/zeitdaten...ogik-berechnen) auch schon viel spass

    Einen Kommentar schreiben:


  • schuma
    antwortet
    Ok, mit Tagen ist das dann genauso?
    Also von jetzt -24Std?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Jein. Wenn die "letzte" Woche die letzten 7 Tage sind, stimmt's. Ist generell missverständlich, da man unter "letzte Woche" ja an Kalenderwoche denkt. Richtiger/Klarer wäre.. "heute minus 14 Tage bis heute minus 8 Tage"

    Einen Kommentar schreiben:

Lädt...
X