FHEM Forum

FHEM => Automatisierung => Thema gestartet von: cs-online am 21 Oktober 2019, 20:50:00

Titel: letzten DBLog-Eintrag eines Devices/Readings z.B. in Dummy darstellen
Beitrag von: cs-online am 21 Oktober 2019, 20:50:00
Hallo,

gibt es eine Möglichkeit, den aktuellen Wert eines in DBLog geloggten Readings eines Devices wie in einem ReadingsProxy oder Dummy darzustellen ? Ich möchte damit Werte aus anderen FHEM-Installationen ohne FHEM2FHEM darstellen.

Ich habe z.B.

{get LOGDB ReadingsVal search_activ Volumenstrom 0}

im StateFormat eines Dummys probiert, bekomme aber den Fehler

Not enough arguments for main::ReadingsVal at (eval 5574832) line 1, at EOF

beim Speichern. Wenn ich das ohne {} probiere, dann wird nur der Text in den Dummy geschrieben, wenn ich das in die Kommandozeile eingebe, bekomme ich einen plausiblen Wert als Antwort, weiß aber nicht, ob das wirklich der aktuelle Wert ist...
Titel: Antw:letzten DBLog-Eintrag eines Devices/Readings z.B. in Dummy darstellen
Beitrag von: Frank_Huber am 21 Oktober 2019, 20:57:24
Der ReadingsVal hat einen falschen Syntax. Kuck mal in die commandref bzw wiki dazu. Imho gehört da ne klammer und Kommas ran.

Gesendet von meinem S60 mit Tapatalk

Titel: Antw:letzten DBLog-Eintrag eines Devices/Readings z.B. in Dummy darstellen
Beitrag von: DS_Starter am 21 Oktober 2019, 21:15:35
Hallo zusammen,

ich denke DbRep kann helfen (Auszug aus Commandref):

Sobald ein DbRep-Device definiert ist, wird sowohl die Perl Funktion DbReadingsVal als auch das FHEM Kommando dbReadingsVal zur Verfügung gestellt. Mit dieser Funktion läßt sich, ähnlich dem allgemeinen ReadingsVal, der Wert eines Readings aus der Datenbank abrufen. Die Funktionsausführung erfolgt blockierend.

    Die Befehlssyntax für die Perl Funktion ist:

    DbReadingsVal("<name>","<device:reading>","<timestamp>","<default>")

    Beispiele:
    $ret = DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-01-13_08:00:00","");
    attr <name> userReadings oldtemp {DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-04-13_08:00:00","")}

    Die Befehlssyntax als FHEM Kommando ist:

    dbReadingsVal <name> <device:reading> <timestamp> <default>

    Beispiel:
    dbReadingsVal Rep.LogDB1 MyWetter:temperature 2018-01-13_08:00:00 0

    <name>    : Name des abzufragenden DbRep-Device
    <device:reading>    : Device:Reading dessen Wert geliefert werden soll
    <timestamp>    : Zeitpunkt des zu liefernden Readingwertes (*) im Format "YYYY-MM-DD_hh:mm:ss"
    <default>    : Defaultwert falls kein Readingwert ermittelt werden konnte


(*) Es wird der zeitlich zu <timestamp> passendste Readingwert zurück geliefert, falls kein Wert exakt zu dem angegebenen Zeitpunkt geloggt wurde.

Grüße,
Heiko
Titel: Antw:letzten DBLog-Eintrag eines Devices/Readings z.B. in Dummy darstellen
Beitrag von: cs-online am 22 Oktober 2019, 07:46:11
Hallo Heiko,

danke, das wird ich mal ausprobieren :-)

Grüße

Christian