HI!
Ich habe mir ein UserAttrib zusammengebaut welches mit 3 der readings zusammenzählen soll und als eigenständiges Reading "Hausverbrauch" angezeigt werden soll...
Leider zählt er nicht richtig...
Hat einer eine Idee woras es liegen kann?
So sieht mein userreading aus:
Hausverbrauch {(ReadingsVal($NAME,"NetzBezug",0)+($NAME,"PVBezug",0)+($NAME,"BatterieBezug"),0)}
HIer ein List vom Device:
Internals:
DEF 71 5 192.168.1.37:1502 TCP
DeviceName 192.168.1.37:1502
EXPECT idle
FD 33
FUUID 61c5cb53-f33f-e7ed-4848-ca7995b3573dd751
IODev Plenticore
Interval 5
LASTOPEN 1640529792.04861
MODBUSID 71
MODE master
MODULEVERSION Modbus 4.4.02 - 31.3.2021
NAME Plenticore
NOTIFYDEV global
NR 205
NTFY_ORDER 50-Plenticore
PARTIAL
PROTOCOL TCP
STATE opened
TCPConn 1
TYPE ModbusAttr
devioLoglevel 3
nextOpenDelay 60
OLDREADINGS:
QUEUE:
READ:
BUFFER
READINGS:
2021-12-26 16:07:34 BatterieBezug 189
2021-12-26 16:07:34 Batterieladung 91%
2021-12-26 16:07:35 Hausverbrauch 0
2021-12-26 16:07:34 NetzBezug 0
2021-12-26 16:07:35 PV-Leistung 53
2021-12-26 16:07:34 PVBezug 37
2021-12-26 15:43:12 state opened
REMEMBER:
lid 71
lname Plenticore
lrecv 1640531255.04361
lsend 1640531255.01886
defptr:
Plenticore 71
gotReadings:
PV-Leistung 53
hmccu:
lastRead:
h106 1640531254.58096
h1066 1640531255.04585
h108 1640531254.6868
h116 1640531254.80984
h172 1640530059.54056
h210 1640531254.91681
Attributes:
dev-type-Fl_R2-format %.0f
dev-type-Fl_R2-len 2
dev-type-Fl_R2-revRegs 1
dev-type-Fl_R2-unpack f>
obj-h106-poll 1
obj-h106-reading BatterieBezug
obj-h106-type Fl_R2
obj-h1066-poll 1
obj-h1066-reading PV-Leistung
obj-h1066-type Fl_R2
obj-h108-poll 1
obj-h108-reading NetzBezug
obj-h108-type Fl_R2
obj-h116-poll 1
obj-h116-reading PVBezug
obj-h116-type Fl_R2
obj-h210-format %s%
obj-h210-poll 1
obj-h210-reading Batterieladung
obj-h210-type Fl_R2
room PV-Anlage
userReadings Hausverbrauch {(ReadingsVal($NAME,"NetzBezug",0)+($NAME,"PvBezug",0)+($NAME,"BatterieBezug"),0)}
userattr obj-h208-format obj-h512-len obj-h515-len
1. Du solltest einen Trigger mit angeben! So wird es bei JEDER Änderung JEDES Readings "berechnet"!
2. Hausverbrauch {(ReadingsVal($NAME,"NetzBezug",0)+($NAME,"PVBezug",0)+($NAME,"BatterieBezug"),0)} -> was denkst du soll da passieren? Gibt das keinen Fehler?
Verm. so:
Hausverbrauch {(ReadingsVal($name,"NetzBezug",0)+ReadingsVal($name,"PVBezug",0)+ReadingsVal($name,"BatterieBezug",0))}
Auch $NAME gibt es nicht denke ich... Ich habe zumindest bei mir $name stehen ;)
Da es nur Zahlen sind? Noch besser ReadingsNum statt ReadingsVal...
Die ganz äußeren runden Klammern? Wozu? Können denke ich weg...
Gruß, Joachim
::)
Da habe ich ja mal wieder alles gegeben... ;D :-X
Noch eine Frage dazu... Der "NetzBezug" kannn bei mir auch weit ins Minus gehen... Also Negativ werden... Kann ich irgendwie verhindern das er dannn das mitberechnet? Er soll eigentlich nur Positive Zahlen Rechnen...
Vielen Dank!
Die Frage ist: was soll er denn machen bei negativ? Vielleicht ist die Rückgabe von undef nicht gut ...
Hausverbrauch:Netzbezug.* {ReadingsNum($name,"NetzBezug",0) < 0 ? undef : ReadingsNum($name,"NetzBezug",0) + ReadingsNum($name,"PVBezug",0) + ReadingsNum($name,"BatterieBezug",0)}
Nicht getestet ;)
Schöne Feiertage
Otto
Nee, undef ist nix gut... 0 wäre i.o.!
Hausverbrauch:Netzbezug.* {ReadingsNum($name,"NetzBezug",0) < 0 ? 0 : ReadingsNum($name,"NetzBezug",0) + ReadingsNum($name,"PVBezug",0) + ReadingsNum($name,"BatterieBezug",0)}
Werde es mal so testen!
Dankeschön!
Hmm... Nee klappt nicht ganz... Sobald der Wert negativ wird bekomme ich insgesamt 0 angezeigt... Er sollte aber 0 + die anderen positiven Werte zusammenrechnen..
Hausverbrauch:NetzBezug.* {ReadingsNum($name,"NetzBezug",0) < 0 ? 0 : ReadingsNum($name,"NetzBezug",0) + ReadingsNum($name,"PVBezug",0) + ReadingsNum($name,"BatterieBezug",0)}
Zitat von: misux am 26 Dezember 2021, 18:20:10
Hmm... Nee klappt nicht ganz... Sobald der Wert negativ wird bekomme ich insgesamt 0 angezeigt... Er sollte aber 0 + die anderen positiven Werte zusammenrechnen..
Hausverbrauch:NetzBezug.* {ReadingsNum($name,"NetzBezug",0) < 0 ? 0 : ReadingsNum($name,"NetzBezug",0) + ReadingsNum($name,"PVBezug",0) + ReadingsNum($name,"BatterieBezug",0)}
Dann musst du das auch so hinschreiben ;)
Schon mal nachgesehen was das "Fragezeichen" macht? ;)
Bedingung ? DasHierWennWahr : DasHierWennUnwahr
Also bei dir dann wohl:
Hausverbrauch:NetzBezug.* {ReadingsNum($name,"NetzBezug",0) < 0 ? 0 + ReadingsNum($name,"PVBezug",0) + ReadingsNum($name,"BatterieBezug",0) : ReadingsNum($name,"NetzBezug",0) + ReadingsNum($name,"PVBezug",0) + ReadingsNum($name,"BatterieBezug",0)}
Wenn ich mich nicht vertan habe...
Gruß, Joachim
Zitat von: Otto123 am 26 Dezember 2021, 17:32:00
Die Frage ist: was soll er denn machen bei negativ?
Die Frage hast Du ja nicht beantwortet - und mir erschließt sich der Sinn dieser Rechnung nicht?
Aber wie Joachim sagt, wir wollten Dir nur den Weg zeigen ...
Also ich möchte einen Gesamtwert aller 3 Werte als Reading bekommen. Problem ist aber das halt ein Wert auch ins negative rutschen kann. Aber als Gesamtwert darf das negative nicht mit berechnet werden...
Beispiel:
Wert1 + Wert2 + Wert3 =Gesamtwert
2 + 2 + 2 = 6
So der Normall Fall!
Aber Manchmal kann das passieren:
-2 + 2 + 2 = 2
Und das darf nicht passieren! In diesem Fall muss da 4 als Ergebnis kommen.
Hoffe das ist verständlich.
Wenn dem so ist: Joachim hat lange die Lösung gepostet
Das Rechnen ist mir klar, die Logik hinter diesem "Schwinbdel" ist mir nicht klar :)
Zitat von: misux am 26 Dezember 2021, 21:22:24
Also ich möchte einen Gesamtwert aller 3 Werte als Reading bekommen. Problem ist aber das halt ein Wert auch ins negative rutschen kann. Aber als Gesamtwert darf das negative nicht mit berechnet werden...
Beispiel:
Wert1 + Wert2 + Wert3 =Gesamtwert
2 + 2 + 2 = 6
So der Normall Fall!
Aber Manchmal kann das passieren:
-2 + 2 + 2 = 2
Und das darf nicht passieren! In diesem Fall muss da 4 als Ergebnis kommen.
Hoffe das ist verständlich.
Sollte mein Vorschlag doch machen?
(so hatte ich das schon verstanden ;) )
Sofern das der einzige Wert ist, der negativ werden kann...
Gruß, Joachim
huch! Ganz übersehen!
Sieht soweit ganz gut aus! Werde es beobachten!
Vielen Dank schon mal!
Zitat von: misux am 26 Dezember 2021, 21:57:37
huch! Ganz übersehen!
Sieht soweit ganz gut aus! Werde es beobachten!
Vielen Dank schon mal!
Ich denke Du beziehst Dich auf Dein Plenticore Projekt.
Das wird im WR_1 Device bereits richtig berechnet
SW_Home_own_consumption:[Total_Active_P_EM:|Total_AC_Active_P:].* {round(ReadingsVal($NAME,"Total_Active_P_EM",0)+ReadingsVal($NAME,"Total_AC_Active_P",0)+ReadingsVal("WR_2","Total_AC_Active_P",0),0)}
ReadingsVal("WR_2","Total_AC_Active_P",0) ist bei Dir immer 0 , da Du nur einen WR hast.
VG Christian
:o bist ja überall unterwegs... Ja, es ist das Plenticore Projekt. Fahre gerade zweigleisig. Einmal das kleine hier um zu sehen wie das grundsätzlich funktioniert und meine FTUI schon mal zu versorgen. Und dann das große Projekt, was mir ja, wie du weist, noch problemchen breitet...
In diesem kleinen Projekt stelle ich mir noch die frage ob was dagegenspricht die werte alle 5sek und noch öfter abzulesen... es wird ja eigentlich nichts geloggt, nur die eine Berechnung und dann im FTUI dargestellt... Oder macht das Probleme?
Im Bild zu sehen wofür ich das mache... Ist spielerei für die Frau in der Küche... 8)
Zitat von: misux am 27 Dezember 2021, 17:22:03
:o bist ja überall unterwegs... Ja, es ist das Plenticore Projekt. Fahre gerade zweigleisig. Einmal das kleine hier um zu sehen wie das grundsätzlich funktioniert und meine FTUI schon mal zu versorgen. Und dann das große Projekt, was mir ja, wie du weist, noch problemchen breitet...
In diesem kleinen Projekt stelle ich mir noch die frage ob was dagegenspricht die werte alle 5sek und noch öfter abzulesen... es wird ja eigentlich nichts geloggt, nur die eine Berechnung und dann im FTUI dargestellt... Oder macht das Probleme?
Im Bild zu sehen wofür ich das mache... Ist spielerei für die Frau in der Küche... 8)
Das problem wird sein, dass der Plenticore sehr viele Daten liefert und diese dann auch logged, was in der detailtreue nicht notwendig ist.
Auch für die Eigenverbrauchsteuerung bietet es keinen wirklichen Mehrwert, da die meisten verbraucher viel zu träge sind.
Mit 60 Sekunden bist Du da schon sehr gut am Puls des Hauses.
Sobald Du das WR_1 Problem gelöst hast sind alle Werte, die Du Dir hier errechnest bereits im Device WR_1 vorhanden. Dann kannst Du das in FTUI einfach übernehmen.
Und bevor Du jetzt mit Statistiken anfängst, die kommen aus dem WR_1_API Device ;-) und sind auch ziemlich umfangreich.
Im Notfall melde Dich doch einfach per PN für eine Teamviewer Session, dann geht es sicherlich am schnellsten weiter, Du müsstest Dich jedoch mit Deiner Identität outen :-)