Hauptmenü

mehrere neue Userreadings

Begonnen von Heiner, 17 April 2014, 08:35:49

Vorheriges Thema - Nächstes Thema

Heiner

Hi,

ich versuche meinem Device neue Userreadings beizubringen. Mit einem klappt es ja noch naemlich dieser Codezeile:

             attr Wechselrichter userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Wechselrichter","Global.Radiation",0)*44.6*0.12;;}

Dieser Berechnet aus dem vorhandenen Readingvalue "Global Radiation" das neue Reading "EnergyExpected".

Nun will ich aber noch ein zweites erzeugen der aus den vorhanden Weten Strom und Spannung die Leistung berechnet. Deshalb habe ich den Befehl von oben versucht zu erweitern, klappt aber leider nicht.
            attr Wechselrichter userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Wechselrichter","Global.Radiation",0)*44.6*0.12;;},
                                                                 generator.1.power:generator.1.current { return ReadingsVal("Wechselrichter","generator.1.current",0)*generator.1.voltage { ReadingsVal("Wechselrichter","generator.1.voltage",0);;}

Was muss ich machen damit das klappt?

Vielen Dank fuer die Hilfe
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

betateilchen

deine geschweiften Klammern richtig und vor allem richtigrum setzen?

Das Setzen mehrere userreadings würde ich übrigens immer in eine Funktion in die 99_myUtils auslagern, da kann man sehr viel übersichtlicher arbeiten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Thorsten Pferdekaemper

Zitat von: Heiner am 17 April 2014, 08:35:49           attr Wechselrichter userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Wechselrichter","Global.Radiation",0)*44.6*0.12;;},
                                                                 generator.1.power:generator.1.current { return ReadingsVal("Wechselrichter","generator.1.current",0)*generator.1.voltage { ReadingsVal("Wechselrichter","generator.1.voltage",0);;}

Ich denke, dass der Teil "generator.1.voltage {" zu viel ist. Versuch's mal so:
attr Wechselrichter userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Wechselrichter","Global.Radiation",0)*44.6*0.12;;},
generator.1.power:generator.1.current { return ReadingsVal("Wechselrichter","generator.1.current",0) * ReadingsVal("Wechselrichter","generator.1.voltage",0);;}
FUIP

Heiner

@ Betateilchen: Leider bin ihc ein doofer Anfaenger und brauche sehr konkretes Feedback. Ich habs nun so versucht, geht aber auch nicht:

attr Wechselrichter userReadings EnergyExpected:Global.Radiation { return ReadingsVal("Wechselrichter","Global.Radiation",0)*44.6*0.12;;}, generator.1.power:generator.1.current { return ReadingsVal("Wechselrichter","generator.1.current",0)}*generator.1.voltage { ReadingsVal("Wechselrichter","generator.1.voltage",0)}

alles in einer Zeile.

Wie ich das in die 99_myUtils reinbekomme weiss ich gleich gar nicht, leider.
Kannst du etwas konkreter werden bitte?

@Thorsten:
klappt leider auch nicht.

Geht das nicht irgendwie auch simpler? Lassen wir mal den ersten Teil weg fuer den Moment, ich glaube zu wissen das ich mittels "," diesen Teil jederzeit wieder reinbekommen kann.

Nun will ich also 2 Readings miteinander multiplizieren und das Ergebnis als weiteres Reading haben, damit ich mir das in ein logfile schrieben kann. wie geth das in der simpelsten Methode?

attr Wechselrichter userReadings power:current { return ReadingsVal("Wechselrichter","current",0)}*voltage { readingsVal("Wechselrichter","voltage",0)}

so gehts offensichtlich nicht 9 ich hab die Namen hier ein wenig gekuertzt um die Uebersichtlichkeit zu erhoehen

Danke nochmals fuer jeden Hinweis
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Joachim

versuchs mal so:

attr Wechselrichter userReadings power:current { ReadingsVal("Wechselrichter","current",0) * readingsVal("Wechselrichter","voltage",0)}

Der Name des neuen readings ist power, er wird immer dann berechnet, wenn ein neues reading von current eintrifft, und dann wird current mit voltage multipliziert.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Heiner

Hi,

klappt leider nicht. es wird kein neues Reading fuer Power erzeugt. Aber auch keine Fehlermeldung im Log.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Heiner

Hallo, hier kommt sie:

define Wechselrichter KOSTALPIKO 192.168.178.xx xxxxx  xxxx
attr Wechselrichter delay 60
attr Wechselrichter delayCounter 4
attr Wechselrichter group PV-Anlage
attr Wechselrichter loglevel 4
attr Wechselrichter userReadings generator.1.power:generator.1.current { ReadingsVal("Wechselrichter","generator.1.current",0) * ReadingsVal("Wechselrichter","generator.1.voltage",0)}

und ein screenshot aus fhem
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2