Probleme mit postproc und 'Makros' bzw. Parametern

Begonnen von Sven77, 23 Februar 2016, 09:23:05

Vorheriges Thema - Nächstes Thema

Sven77

Also dann hier an dieser Stelle nochmal die Wiederholung von hier:

Ich würde gern in einem ECMDDevice 'get' einen Parameter definieren und diesen im postproc nutzen, was leider nicht geht.
Nachdem ich den Code gelesen und ein wenig herumprobiert habe, stelle ich fest: es sind im postproc nur die Device-Parameter verfügbar, nicht die Command-Parameter!

Warum das Ganze? Kleines Beispiel...
Ich möchte ebusd-Werte auslesen. Diese enthalten aber teilweise mehrere Fields, hier mal die Vaillant-Broadcast-Meldung 'vdatetime':
u,broadcast,vdatetime,Datum/Uhrzeit,,fe,b516,00,time,m,BTI,,,,date,m,BDA,,,
Wenn man diese einfach abfragt, bekommt man Datum und Uhrzeit, ich hätte es aber gern separat, was man durch Benennung des Feldes erreicht:
# ebusctl r -c broadcast vdatetime
08:56:53;23.02.2016

# ebusctl r -c broadcast vdatetime time
08:56:53

# ebusctl r -c broadcast vdatetime date
23.02.2016


Ich würde jetzt allerdings gern vermeiden, in der ClassDef-Textdatei alles zu duplizieren, was schon für eBusd definiert ist und wollte daher ein "get read_field" erstellen und den Parameter als Reading-Bezeichnung nutzen...

Meine ClassDef:
params Circuit ValueName

get read_field params Field
get read_field {"r -c %Circuit %ValueName %Field\n"}
get read_field expect ".*\n*"
get read_field postproc { readingsSingleUpdate($defs{'%NAME'}, %Field, $_, 1); }


Dazu das ECMDDevice:
define eBus_vdatetime ECMDDevice ebusd.class broadcast vdatetime
Und nun würde ich gern mit "get eBus_vdatetime read_field time" und "get eBus_vdatetime read_field date" an dem Device die Readings "time 08:56:53" und "date 23.02.2016" wieder finden... was eben leider nicht geht.
Die Makros %Circuit und %ValueName könnte ich nutzen, da diese mit ECMDDevice_GetCachedSpecials gesetzt werden, doch die Command-Parameter werden direkt in ECMDDevice_Get ausgewertet.  :(

Kann hier jemand helfen??

Sven
VG, Sven

franky08

Verschieb es noch mal  ;)
Für ECMD wäre es unter "Sonstige Systeme" besser aufgehoben, da liest Boris auch mit.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

franky08

Lies dir den angepinnten Beitrag von Boris mal durch, damit dir geholfen werden kann  :)

VG
Frank

http://forum.fhem.de/index.php/topic,25748.0.html
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Sven77

Ja, vielen Dank!
Hatte ich schon gelesen - in der Hoffnung, dort vielleicht gleich Anregungen zu finden.

Letztlich habe ich dann doch keine Logs etc. gepostet, weil ich auf die Schnelle schon eine Lösung gefunden habe - durch eine zusätzliche Zeile Code in "67_ECMDDevice.pm". Ich muss aber noch die Nebenwirkungen davon untersuchen, bevor ich das offiziell vorschlage...

Letztlich wurde mir in einem anderen Thread ohnehin empfohlen, wohl doch jede Abfrage gezielt zu definieren, was das eigentlich überflüssig machen würde. Ich experimentiere weiter und melde mich dann hier wieder!!
VG, Sven