Hallo Stefan,
Du musst beim Channel-Attribut einen anderen Readingsnamen verwenden, zB
attr <dev> channels {"1.8.1"=>"irgendwas"}
Das Problem mit dem Überschreiben ist dann erstmal aus der Welt.
mit Verlaub: das ist aus meiner Sicht keine Lösung. Warum sollte ich die "regulären" Channels:
1.8.0 = total_consumption
1.8.1 = total_consumption_Ch1
1.8.2 = total_consumption_Ch2jeweils nach "
irgendwas[_Ch[1|2]]" schieben um das Problem des Überschreibens zu "umgehen"?
Mein Landys + Gyr Zähler liefert schon die korrekten Werte bei den entsprechenden Teilen "
C.D.E" der OBIS-Kennzahlen:
1.8.0 Wirkarbeit Bezug gesamt (Summe aller tarifunterschiedenen Zählerstände)
1.8.1 Wirkarbeit Bezug Tarif 1 (Zählerstand zeitabhängiger Tarif 1)
1.8.2 Wirkarbeit Bezug Tarif 2 (Zählerstand zeitabhängiger Tarif 2)Man will doch an dieser Stelle die "regulären" Channels nicht zu Gunsten eines "Workarounds" aufgeben, bzw. in ein anderes Reading schieben. Also ich zumindest nicht.

Darüber hinaus liefert mein Zähler aber auch 15 Vorwerte. Hier am Beispiel "Zählerstand zeitabhängiger Tarif 1":
2017.09.19 17:18:04 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1(005506.056*kWh)
2017.09.19 17:18:19 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*29(005373.721)
2017.09.19 17:18:22 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*28(005149.744)
2017.09.19 17:18:26 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*27(004925.983)
2017.09.19 17:18:29 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*26(004716.804)
2017.09.19 17:18:33 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*25(004498.873)
2017.09.19 17:18:36 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*24(004292.119)
2017.09.19 17:18:40 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*23(004254.031)
2017.09.19 17:18:44 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*22(004078.582)
2017.09.19 17:18:47 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*21(003874.128)
2017.09.19 17:18:50 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*20(003633.982)
2017.09.19 17:18:54 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*19(003408.986)
2017.09.19 17:18:58 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*18(003187.478)
2017.09.19 17:19:01 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*17(003174.357)
2017.09.19 17:19:04 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*16(002962.042)
2017.09.19 17:19:09 5: OBIS (KG.fl.SM.PWR.01) - Msg-Parse: 1.8.1*15(002757.815)
Dein "Workaround" verlagert ja nur das eigentliche Problem:
Die eigentlichen Channels werden in "neue" Readings verschoben; die regulären Readings werden aber weiterhin durch die Vorwerte überschrieben. Das ist nicht ganz so im Sinne der "Philosophie" von FHEM: 1 Reading = 1 Wert = 1 Timestamp. Hier wird jedoch bei "einem Lauf" das Reading mehrfach mit neuen Werten überschrieben.
Zum einen könnte man diese Vorwerte durchaus in FHEM verwenden und in entsprechende Readings schieben und daraus Deltas bilden. Dazu müsste aber auch der Zeitpunkt des jeweiligen Vorzählerwertes bekannt sein. Ich habe jetzt nicht alle OBIS Kennzahlen gesichtet aber evtl. gibt es ja ein Channel in der ein passender Interval oder Zeitstempel steht, der auf die jeweiligen Vorwerte zutrifft.
Zum anderen ist hier durch das Trennzeichen '*' aber auch klar ersichtlich, das es sich um diese Vorwerte handelt. Diese kann man also sehr einfach parsen und ggf. ignorieren, sofern Du dies in die Logik aufnehmen würdest und ggf. ein neues Attribut spendierst. Somit können dann die Kennzahlen in das vorgesehen Reading geschrieben werden und man muss nicht erst ein "irgendwas" Reading zudichten.
In der Darstellung der Werte ist meiner Meinung nach ein Fehler. Setzt man das Attribut
unitReadings auf
on, dann sehen die Werte wie folgt aus:
2017-09-19 17:30:06 foo_consumption 007884.126*kWh
2017-09-19 17:30:04 foo_consumption_Ch1 005506.126*kWh
2017-09-19 17:30:05 foo_consumption_Ch2 002378.000*kWh
2017-09-19 17:30:15 power 0.33 kW
2017-09-18 21:43:26 state opened
2017-09-19 17:30:37 total_consumption 6097.351
2017-09-19 17:30:36 total_consumption_Ch1 4292.119
2017-09-19 17:30:37 total_consumption_Ch2 1805.232
Dabei entsprechen die "
foo_" Werte den "verschobenen" Channels 1.8.[0-2] und die "
total_" Werte den sich überschreibenden Werten. Bei gesetztem Attribut
unitReadings sollte meiner Meinung nach noch etwas "Housekeeping" durchgeführt und die führenden Nullen entfernt und die Maßeinheit mittels Leerstelle und nicht dem '*' getrennt werden.
Ich würde mich freuen, wenn Du diese Änderungen übernehmen könntest. Andere Installationen sollte das nicht beeinflussen.
Viele Grüße
Martin