93_DbLog - Überlegungen zur Optimierung (RPI und andere Systeme)

Begonnen von JoeALLb, 27 Januar 2017, 22:16:19

Vorheriges Thema - Nächstes Thema

DS_Starter

Morgen Joe,

eine Idee wäre einen Qualifier CN=<aufrufer> einzuführen.

Den Aufrufer müsste man im at oder doif in eine Variable stecken und den CN mitgeben.
In der addlog Funktion würde ich dem aus devspec resultierenden device das CN davorsetzen, also in der Art <CN>#device sofern CN angegeben.

In valueFn müsste man dann $DEVICE checken und ggf. splitten um CN zu extrahieren und damit dann die Steuerung vorzunehmen.
Das ist zwar ein bisschen Aufwand, aber sicherlich machbar und mir fällt momentan auch keine bessere Variante ein.

Vielleicht hat jemand noch eine bessere Idee.

Was denkst du / ihr ?

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

JoeALLb

Hallo Heiko,

Würden dann nicht bestehende Scripte nicht mehr funktionieren?

Spricht etwas dagegen eine eigene, neue Variable einzuführen?
Das splitten sehe ich als unproblematisch.

Schöne Grüße Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DS_Starter

was meinst du für Scripte genau ?

Man könnte auch $CN=<aufrufer> implementieren und die Variable $CN in valueFn auswertbar anbieten. Das wäre noch besser und vermindert den Aufwand splitten usw.

Naja, ich müsste das alles auch erstmal entwickeln und testen ... aber so im Prinzip als Idee .....
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

JoeALLb

Hallo Heiko,

Zitat von: DS_Starter am 06 April 2018, 11:30:08
was meinst du für Scripte genau ?

wenn $DEVICETYPE (wann wurde $DEVICE zu $DEVICETYPE umbenannt?) nicht mehr "heizkoerper" ist, sondern eben "cronjob#heizkoerper",
würden plötzlich schon vorhandene Scripte nicht mehr funktionieren.... (oder habe ich deineen Vorschlag falsch verstanden?

Von daher fände ich die Idee mit
$CN=<aufrufer>
besser, wenn nicht optimal.

Hintergrund:
Ich muss genau um 00:00:00 einige Werte loggen! Nun braucht FHEM manchmal etwas länger, sodass die letzten Werte dann erst um 00:00:01 geloggt werden!
Das macht probleme in Plots und anderen Scripten, weshalb ich per valueFn in diesem Fall die Uhrzeit eben wieder zurück ändere auf 00:00:00
(über)
if($DEVICETYPE eq "addLog" and $TIMESTAMP =~ m/\s00:00:[\d:]+/){
    $TIMESTAMP =~ s/([^\s]+)\s/\1 00:00:00/
}

Nun, trifft das eben manchmal auch auf andere addLogs zu was auch zu deren Zeitverschiebung führt. Das wäre falsch!
Daher würde ich eben gerne noch die Quelle, also "and $CN =~ m/cronjob.midnight/"
zu meiner Prüfung ergänzen...

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DS_Starter

Ok, verstanden.

Aber

wann wurde $DEVICE zu $DEVICETYPE umbenannt?

garnicht. $DEVICE heisst noch und $DEVICETYPE gibt es extra.

Ich entwerfe dann mal was und dann schauen wir ...  :)

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

#695
Hallo Joe,

addLog habe ich erweitert. Es wäre jetzt so anzuwenden:

set <name> addLog <devspec>:<Reading> [Value] [CN=<caller name>] [!useExcludes]

<caller name> ist das aufrufende Device (at etc.) oder ein beliebiger Erkennungsstring. Also zum Beispiel:

set <dblog> addLog USV:state CN=Test

In valueFn kann nun $CN ausgewertet werden, z.B.:


if ($CN eq "Test") {$READING = "statetest"}


Viel Spass beim Test ...

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Hallo Joe,

wie sieht es aus ? Passt die Erweiterung ?

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

JoeALLb

Hallo Heiko, bin noch am Heimflug und erst morgen wieder im Land. Werds dann gleich ansehen!
Sorry.

SG Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

JoeALLb

Hallo Heiko,

konnte mir das Update nun genauer ansehen... habe dazu aber noch eine Rückfrage:

Wäre es möglich, dass CN automatisch gefüllt wird, oder ist das im momentanen Kontext her kaum möglich?
define di.cronjob ([00:00])\
(set <dblog> addLog USV:state)


Könnte nicht in diesem Fall das CN automatisch "di.cronjob" lauten, um dann über
if ($CN eq "di.cronjob") {$READING = "statetest"}
mein ziel zu erreichen?

Für mich funktioniert die aktuelle Lösung gut, jedoch denke ich wäre die automatische Befüllung weniger "Erklärungsbedürftig".
Für meinen Zweck wäre die aktuelle Umsetzung jedoch top!!

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DS_Starter

Hi Joe,

nun ja ich wüßte nicht wie CN lauten soll wenn es dem addLog Aufruf nicht mitgegeben wird.
Ich "sehe" ja aus Perspektive DbLog nur

addLog USV:state

und entnehme daraus was passieren soll. Dem set wird nicht automatisch der aufrufenden Device name übergeben, zumindest nicht das ich wüßte.
Deswegen brauche ich diesen kleinen Zusatz um entsprechende Zuweisungen vornehmen zu können.

Dann ergänze ich mal die commandref hoffentlich einigermaßen verständlich  :) und checke den Stand ein.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

JoeALLb

Top! Mein Beispiel aus #693 könnte für die commandref als Beispiel dienen?


Danke! SG Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DS_Starter

#701
Ja, ich bastele was für die commandref zusammen damit es möglichst transparent wird.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

JoeALLb

#702
Hallo Heiko,
habe leider übersehen dass ich im Beispiel für "\1" eine Perlwarnung bekomme.

PERL WARNING: \1 better written as $1

kannst Du bitte bei Gelegenheit das in der commandref tauschen?

Hier die korrigierte Zeile ohne \1
{$TIMESTAMP=~ s/\s([^\s]+)/ 00:00:00/; }

Zusätzlich ist mir heute Nacht aufgefallen, dass ein Device mit addLog nicht geloggt wird
mit der Begründung:
Device: "Gaszaehler", reading: "verbrauch_EnergyDay" excluded by attribute DbLogExclude from addLog !
Der Aufruf enthielt aber "!useExcludes".

set <Device> addLog Gaszaehler:verbrauch_EnergyDay.* 0 !useExcludes CN=midnight

Kann es sein, dass der default Wert 0 hier irgendwie das !useExcludes "schluckt"?

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DS_Starter

Morgen Joe,

ZitatKann es sein, dass der default Wert 0 hier irgendwie das !useExcludes "schluckt"?
Kann eigentlich nicht sein.
Ich werde heute Abend das auch mal simulieren.

Danke für die Korrektur. Baue ich mal mit ein.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Habs gerade probiert. Klappt einwandfrei was !useExcludes betrifft. Allerdings habe ich einen Fehler festgestellt dass "0" wieder nicht zieht und habe es gleich korrigiert.
Hier angehängt.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter