Hallo,
meine fhem installation läuft ja soweit ganz gut aber die Addition von readings : attr dim_heating1_thermalenergy userReadings heatingthermalenergy {
((ReadingsVal("dim_heating3_thermalenergy","state",0)*100000000)+
(ReadingsVal("dim_heating2_thermalenergy","state",0)*10000)+
(ReadingsVal("dim_heating1_thermalenergy","state",0)))}
wird nicht ausgeführt.Es wird nur der Wert von dim_heating1_ angezeigt.Wie ist das bei anderen Anwendern.Kann mal jemand sein komplettes cfg veröffentlichen?Unter:http://<pcoweb>/config/adminpage.html kann ich die Werte aber sehen!
Nachdem ich im entsprechenden Unterforum keine Reaktion bekommen habe, habe ich meine Frage jetzt mal hier eingestellt.
Ich bin ja Anfänger :))
Hi,
am besten zeigst Du dazu mal die Ausgabe von
list dim_heating1_thermalenergy
Bitte die Hinweise hier beachten: https://forum.fhem.de/index.php/topic,71806.0.html
Auf den ersten Blick gibt es zwei Kritikpunkte am Code, die aber wahrscheinlich nicht entscheidend sind:
- mindestens ein paar Klammern () zuviel.
- ReadingsNum() anstatt ReadingsVal() nehmen.
Ansonsten bleibt nur die Vermutung, das es keinen Trigger gibt und die Berechnung des userReadings schlicht nicht angestoßen wird.
Gruß Otto
- Verwende ReadingsNum() statt ReadingsVal() wenn Du mit den Werten mathematisch rechnen möchtest.
- Verwende nur soviele Klammern wie wirklich nötig sind.
- Achte darauf, genau so viele Klammern zu schließen wie Du auch öffnest.
{ ReadingsNum("dim_heating3_thermalenergy","state",0)*1.0e+8 +
ReadingsNum("dim_heating2_thermalenergy","state",0)*1.0e+4 +
ReadingsNum("dim_heating1_thermalenergy","state",0) }
Zitat von: Otto123 am 28 März 2025, 10:04:07Ansonsten bleibt nur die Vermutung, das es keinen Trigger gibt und die Berechnung des userReadings schlicht nicht angestoßen wird.
Dazu brauchst Du keine Vermutungen anstellen, das steht doch schon - ohne code tags - im ersten Beitrag :)
attr dim_heating1_thermalenergy userReadings heatingthermalenergy {..}
Ja sorry, ich meinte nicht den trigger der die Ausführung des userReadings nur auf die Änderung von bestimmten Readings einschränkt sondern, dass es keine Aktualisierung der Gerätereadings an sich gibt.
Hallo, erst mal Danke, aber ihr müßt euch deswegen nicht streiten, ich werde mal Num statt Val ausprobieren.
Ich habe den code von hier:https://www.fhemwiki.de/wiki/Dimplex_W%C3%A4rmepumpenmanager übernommen und gedacht der ist inzwischen ausgereift und funktioniert.Vielleicht liegt es auch an der neuesten fhem version, kommt ja öfters vor das neuere Versionen nicht mit "altem ccode" zurechtkommen.
Das hat nix mit FHEM oder irgendwelchen Versionen zu tun.
Außerdem streiten wir uns nicht.
wir streiten nicht :)
aber wie geht es denn nun weiter? Aus deinem Link ins Wiki kann man zwar den Zusammenhang deines Auszuges mit dem "Gerät" erkennen aber leider nicht ob Deine Gerät überhaupt arbeitet.
Wenn ich mir die fhem.cfg anschaue dann ist der additionsbefehl nach der ersten Klammer abgeschnitten (fehlt) egal ob ich das define dierekt in die fehm.cfg kopiere oder über die Eingabezeile dem Programm hinzufüge.
Auch hier im list am Ende des codes zu sehen:Internals:
DEF 0 5096
FUUID 67dbbd20-f33f-3e5d-6162-4ebdc76e29f59ff4
HeatPumpServer_MSGCNT 1
HeatPumpServer_TIME 2025-03-29 07:53:43
IODev HeatPumpServer
LASTInputDev HeatPumpServer
MSGCNT 1
ModbusRegister_lastRcv 2025-03-29 07:53:43
NAME dim_heating1_thermalenergy
NOTIFYDEV global
NR 73
NTFY_ORDER 50-dim_heating1_thermalenergy
STATE 7112
TYPE ModbusRegister
eventCount 1
lastUpdate
nextUpdate Sat Mar 29 08:08:43 2025
READINGS:
2025-03-29 07:38:43 IODev HeatPumpServer
2025-03-29 07:53:43 RAW 1bc8
2025-03-29 07:53:43 state 7112
helper:
addr 3 0 5096
address 5096
disableRegisterMapping 0
lastUpdate 0
nextUpdate 1743232123.43244
nread 1
readCmd ␃␓�␁
register 5096
registerType 3
unitId 0
updateIntervall 900
cnv:
a 1
b 0
max 32767
min -32768
step 100
Attributes:
IODev HeatPumpServer
event-on-change-reading .*
plcDataType INT
registerType Holding
room Dimplex
updateInterval 00:15:00
userReadings heatingthermalenergy {
Anbei noch die Historie in verschiedenen Ansichten.In Bild 3 habe ich den Wert rot umrandet! Außerdem die fhem.cfg mit dem fehlenden Additionsbefehl in den Zeilen 249,258 und 266.
Dann nimm bitte diese Zeile und wirf sie in die FHEM Kommandozeile und drücke enter
attr dim_heating1_thermalenergy userReadings heatingthermalenergy { ReadingsNum("dim_heating3_thermalenergy","state",0)*1.0e+8 + ReadingsNum("dim_heating2_thermalenergy","state",0)*1.0e+4 + ReadingsNum("dim_heating1_thermalenergy","state",0) }
Zeilenumbrüche kannst Du später im DEF Editor machen.
Die fhem.cfg solltest Du besser von FHEM verwalten lassen und nicht per Hand editieren.
Das von Dir zitierte Wiki ist an dieser Stelle nicht für Anfänger geschrieben. Der gedruckte Code ist zwar lesbar, aber es nicht klar beschrieben wie der einzugeben ist.
Das war leider nicht die Lösung :(
Für was?
Steht das userReadings immer noch verstümmelt da? Oder wird es nicht berechnet?
Gibt es etwas im Log?
defmod dim_heating1_thermalenergy dummy
set dim_heating1_thermalenergy 1
attr dim_heating1_thermalenergy userReadings heatingthermalenergy { ReadingsNum("dim_heating3_thermalenergy","state",0)*1.0e+8 + ReadingsNum("dim_heating2_thermalenergy","state",0)*1.0e+4 + ReadingsNum("dim_heating1_thermalenergy","state",0) }
defmod dim_heating2_thermalenergy dummy
set dim_heating1_thermalenergy 2
defmod dim_heating3_thermalenergy dummy
set dim_heating1_thermalenergy 3
Danach haben die drei dummy-devices die states 1 2 und 3.
Wenn ich jetzt nochmal
set dim_heating1_thermalenergy 1
ausführe, entsteht im device "dim_heating1_thermalenergy"
das gewünschte userReading "heatingthermalenergy" mit dem Wert 300020001
setstate dim_heating1_thermalenergy 2025-03-30 12:30:26 heatingthermalenergy 300020001
Der vorgeschlagene code für das Attribut userReadings funktioniert also wie gewünscht.
Zitat von: genpop am 30 März 2025, 09:12:51Das war leider nicht die Lösung :(
Beschreibe doch bitte erst einmal die genaue Aufgabe, die Du eigentlich lösen möchtest.
Die einzelnen Werte erden nicht addiert.Siehe Bild.
Könnte es sein das die Addition zwar durchgeführt wird aber dann wieder durch den definierten 1.Wert überschrieben wird.Müßte man eventuell einen Gesamtwert definieren und dort die Addition ausführen?
Du willst ein Reading heatingthermalenergy im Device dim_heating1_thermalenergy erzeugen, Dein Bild zeigt etwas völlig anderes? Es zeigt (bin nicht sicher) bestenfalls den state von dim_heating1_thermalenergy in einer Übersicht.
Zeig doch nochmal ein list dim_heating1_thermalenergy
Hier das list:Internals:
DEF 0 5096
FUUID 67d5aeb8-f33f-3e5d-8b54-e9631b8431cfffcf
HeatPumpServer_MSGCNT 7
HeatPumpServer_TIME 2025-03-30 11:55:05
IODev HeatPumpServer
LASTInputDev HeatPumpServer
MSGCNT 7
ModbusRegister_lastRcv 2025-03-30 11:55:05
NAME dim_heating1_thermalenergy
NOTIFYDEV global
NR 216
NTFY_ORDER 50-dim_heating1_thermalenergy
STATE 7199
TYPE ModbusRegister
eventCount 2
lastUpdate Sun Mar 30 11:55:05 2025
nextUpdate Sun Mar 30 12:10:05 2025
READINGS:
2025-03-30 10:10:04 IODev HeatPumpServer
2025-03-30 11:55:05 RAW 1c1f
2025-03-30 10:04:49 heatingthermalenergy 17191
2025-03-30 11:55:05 state 7199
helper:
addr 3 0 5096
address 5096
disableRegisterMapping 0
lastUpdate 0
nextUpdate 1743329405.34753
nread 1
readCmd ␃␓�␁
register 5096
registerType 3
unitId 0
updateIntervall 900
cnv:
a 1
b 0
max 32767
min -32768
step 100
Attributes:
IODev HeatPumpServer
event-on-change-reading .*
plcDataType INT
registerType Holding
room Dimplex
updateInterval 00:15:00
userReadings heatingthermalenergy {
Wieso gibt es das Reading - er hat es mal berechnet?
Zitat2025-03-30 10:04:49 heatingthermalenergy 17191
und wieso ist das list hinten abgeschnitten? Der code vom userReadings fehlt wieder?
Das userReadings war einmal korrekt definiert, FHEM wurde anschliessend neu gestartet, ohne zuvor zu speichern.
Würde alle drei Fragen beantworten.
Nochmal:
Zitat von: betateilchen am 30 März 2025, 12:36:33Beschreibe doch bitte erst einmal die genaue Aufgabe, die Du eigentlich lösen möchtest.
Und nimm das Attribut event-on... erstmal raus, bis alles funktioniert wie es soll.
(mein Bauchgefühl läßt mich sogar einen möglichen Denkfehler beim Fragesteller annehmen)
Ich habe die Definitionen aus dem Dimplex-WIKI übertragen und verstehe den code für die Umweltenergie, die thermische Energie und die Brauchwasserenergie so daß bei der Anzeige der Modbusregister automatisch nur der aufadierte Wert der jeweils 3 Register angezeigt wird.Angezeigt werden aber die einzelnen Register.
2025-03-30 10:04:49 heatingthermalenergy 17191 wäre die gewünschte Anzeige für die thermische (Heizungs)energie.
Zitat von: Otto123 am 29 März 2025, 11:43:26Dann nimm bitte diese Zeile und wirf sie in die FHEM Kommandozeile und drücke enter
attr dim_heating1_thermalenergy userReadings heatingthermalenergy { ReadingsNum("dim_heating3_thermalenergy","state",0)*1.0e+8 + ReadingsNum("dim_heating2_thermalenergy","state",0)*1.0e+4 + ReadingsNum("dim_heating1_thermalenergy","state",0) }
Mach das bitte nochmal und zeige anschliessend das
List oder ein
Copy for Forum (unten in dem Device)
Ich habe die ganze fhem cfg gelöscht und alles neu kopiert.Dabei ist mir aufgefallen das er z.B *100000000 ignoriert und dafür die e Zahl haben will.
Kannst Du nicht ein Mal das machen, worum man Dich bittet?
Ich bin hier raus. Mir ist meine Zeit zu schade für solche Ignoranz.
In die fhem.cfg kopiert man nix.
Am besten Du löschst nochmal alles.
Die Code-Beispiele im Wiki wurden angepasst. Ergänze die über das + im f18-Style oder über Raw definition (in jedem Device unten zu finden, siehe Import von Code Snippets (https://wiki.fhem.de/wiki/Import_von_Code_Snippets))
Zitat von: betateilchen am 30 März 2025, 16:05:40Kannst Du nicht ein Mal das machen, worum man Dich bittet?
Ich bin hier raus. Mir ist meine Zeit zu schade für solche Ignoranz.
https://youtu.be/v_EWWyJfgPc?t=7
Zitat von: genpop am 30 März 2025, 14:50:46so daß bei der Anzeige der Modbusregister automatisch nur der aufadierte Wert der jeweils 3 Register angezeigt wird.Angezeigt werden aber die einzelnen Register.
Ich denke Du hast falsche Vorstellungen oder einen falschen Blickwinkel.
Du willst per sturem Copy und Paste eine Lösung erzielen die so noch gar nicht existiert.
Entschuldigung, eure Vorschläge kamen zu spät.
Ich habe nichts in die cfg kopiert sondern die cfg über die Eingabezeile neu aufgebaut.Bei den Definitionen mit den Additionen mußte ich die Zeile mit den Additionen durch die hier vorgeschlagene Zeile austauschen da er wie schon erwähnt nur e Zahlen akzeptiert.Da es nach Änderungen wegen der definierten update Zeiten manchmal etwas länger dauert habe ich in der Zwischenzeit etwas anderes gemacht.Wie man im neuesten registerbild sieht hat er wieder die environment 2 und heating 2 nicht aufaddiert.
Save config ?
Dimplex
Unsorted
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
Internals:
CFGFN
DEF 0 5096
FUUID 67e92ab4-f33f-3e5d-51bd-d3607209924bd55a
HeatPumpServer_MSGCNT 5
HeatPumpServer_TIME 2025-03-30 14:42:49
IODev HeatPumpServer
LASTInputDev HeatPumpServer
MSGCNT 5
ModbusRegister_lastRcv 2025-03-30 14:42:49
NAME dim_heating1_thermalenergy
NOTIFYDEV global
NR 77
NTFY_ORDER 50-dim_heating1_thermalenergy
STATE 7214
TYPE ModbusRegister
eventCount 2
lastUpdate Sun Mar 30 14:42:49 2025
nextUpdate Sun Mar 30 14:57:49 2025
READINGS:
2025-03-30 13:27:48 IODev HeatPumpServer
2025-03-30 14:42:49 RAW 1c2e
2025-03-30 14:42:49 heatingthermalenergy 0
2025-03-30 14:42:49 state 7214
helper:
addr 3 0 5096
address 5096
disableRegisterMapping 0
lastUpdate 0
nextUpdate 1743339469.81708
nread 1
readCmd ␃␓�␁
register 5096
registerType 3
unitId 0
updateIntervall 900
bm:
ModbusRegister_Attr:
cnt 11
dmx -1000
dtot 0
dtotcnt 0
mTS 30.03. 13:27:48
max 5.19752502441406e-05
tot 0.000191211700439453
mAr:
set
dim_heating1_thermalenergy
plcDataType
INT
ModbusRegister_Define:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 30.03. 13:27:48
max 0.000690221786499023
tot 0.000690221786499023
mAr:
HASH(0x21a3b79a048)
dim_heating1_thermalenergy ModbusRegister 0 5096
ModbusRegister_Notify:
cnt 105
dmx -1000
dtot 0
dtotcnt 0
mTS 30.03. 13:48:03
max 4.50611114501953e-05
tot 0.00079798698425293
mAr:
HASH(0x21a3b79a048)
HASH(0x21a39dcb0b8)
ModbusRegister_Set:
cnt 39
dmx -1000
dtot 0
dtotcnt 0
mTS 30.03. 13:57:49
max 0.00841283798217773
tot 0.212246417999268
mAr:
HASH(0x21a3b79a048)
dim_heating1_thermalenergy
?
cnv:
a 1
b 0
max 32767
min -32768
step 100
Attributes:
IODev HeatPumpServer
event-on-change-reading .*
plcDataType INT
registerType Holding
room Dimplex
updateInterval 00:15:00
userReadings heatingthermalenergy { ReadingsNum("dim_heating3_thermalenergy","state",0)*1.0e+8 + ReadingsNum("dim_heating2_thermalenergy","state",0)*1.0e+4 + ReadingsNum("dim_heating1_thermalenergy","state",0) }
Du kannst auf dieses Bild schauen solange Du willst, das Reading welches Du aufaddierst wirst Du dort nie sehen. Du schaust auf die Übersicht modbusregister. Schau doch einfach mal im Device, ob das Reading deinen Vorstellungen entspricht.
Das heist, mein fhem funktioniert wie es soll und die aufaddierten Werte werden nur im logfile der Jahresenergie angezeigt. Könnte man im WIKI erwähnen.
Danke für eure Ausführungen und Hilfe.
Jetzt aber noch etwas Neues, Diese Definition;########################################################
## Logfile Wärmemengen definieren
## Erstellt........: 06.01.2015
########################################################
define filelog_dim_thermalenergy_year FileLog ./log/filelog_dim_thermalenergy_year-%y.log
dim_heating1_thermalenergy:heatingthermalenergy:.*|
dim_dhw1_thermalenergy:dhwthermalenergy:.*|
dim_heating1_thermalenergy:heatingthermalenergy:.*
attr filelog_dim_thermalenergy_year room Dimplex
wird nicht angenommen Fehlermeldung regexpression fehlt.
Zitat von: TomLee am 30 März 2025, 16:09:22Die Code-Beispiele im Wiki wurden angepasst. Ergänze die über das + im f18-Style oder über Raw definition (in jedem Device unten zu finden, siehe Import von Code Snippets (https://wiki.fhem.de/wiki/Import_von_Code_Snippets))
Zitat von: genpop am 30 März 2025, 17:53:12die aufaddierten Werte werden nur im logfile der Jahresenergie angezeigt.
Nein, die Werte stehen in dem Reading. Du kannst Sie Dir anzeigen lassen wo immer Du willst ::)
Vielleicht musst Du weiter vorne anfangen? https://wiki.fhem.de/wiki/Erste_Schritte_in_FHEM
noch jemand Popcorn?
Jetzt wurde auch die Definition der Wärmemenge akzeptiert und ich finde die aufaddierten Werte unter den readings!
Danke und bis zu meinem nächsten Problem ;D
"_er_ nur _e-Zahlen_ akzeptiert". Soso, e-Zahlen. Schon mal hier gelesen: https://perldoc.perl.org/perlnumber
LG
pah