FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: m8haben am 02 März 2017, 19:34:41

Titel: Ich komme mit notify nicht klar
Beitrag von: m8haben am 02 März 2017, 19:34:41
Ich habe von meinem Bus folgende Werte meiner Solarthermie und möchte daraus die Momentanleistung haben.

Durchfluss  (Volumenstrom in ml/min
Kollektorvorlauf °C
Kollektorrücklauf °C
Dichte 993kg/m³
Wärmekapazität 3.8 kWs/kgK
und will nun die Momentanleistung errechnen lassen. Die Formel die ich nutzen will lautet:
Solarleistung=Wärmekapazität * Volumenstrom * Dichte * (Kollektorvorlauf - Kollektorrücklauf)
wie baue ich jetzt das richtige notify damit ich Solarleistung in KW angezeigt bekomme.

Danke für Lösungsvorschläge
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: CoolTux am 02 März 2017, 19:38:52
Ich würde das mit einem userReading machen. Ist nicht so aufwendig.
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: jkriegl am 02 März 2017, 20:27:32
Du kannst in einem notify rechnen. Beisp.
Verbr_h {my $val=ReadingsVal("HK.Th","T.Zaehler",0)-ReadingsVal("HK.Th","T.Zaehler_g",0); $val=sprintf("%.2f",$val);}
Ergebnis steht im Log.
Frage: Hast Du eine dynamische Pumpe?
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: jnewton957 am 04 März 2017, 07:13:41
Zitat von: m8haben am 02 März 2017, 19:34:41
Ich habe von meinem Bus folgende Werte meiner Solarthermie und möchte daraus die Momentanleistung haben.

Durchfluss  (Volumenstrom in ml/min
Kollektorvorlauf °C
Kollektorrücklauf °C
Dichte 993kg/m³
Wärmekapazität 3.8 kWs/kgK


Kannst du bitte mal schreiben, welche Hardware du hast und wie du diese Sensoren dann in FHEM eingebunden hast. Ich bin auch noch auf der Suche nach einer passenden Hardware und Lösung zur Einbindung in FHEM.

Danke
Jörg
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: jkriegl am 04 März 2017, 12:10:36
Ich denke Du kennst dies: https://forum.fhem.de/index.php/topic,29737.0/topicseen.html (https://forum.fhem.de/index.php/topic,29737.0/topicseen.html)
Zur Leistung- bzw. Ertragsmessung findest Du dort Hinweise von pah.
Grob kannst Du berechnen: TempDiff*Konstante
Habe einen ebus-Adapter von eService.
Woher hast Du Deine Werte, wenn Du noch HW suchst?
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: m8haben am 05 März 2017, 11:42:18
Zitat von: jnewton957 am 04 März 2017, 07:13:41
Kannst du bitte mal schreiben, welche Hardware du hast und wie du diese Sensoren dann in FHEM eingebunden hast. Ich bin auch noch auf der Suche nach einer passenden Hardware und Lösung zur Einbindung in FHEM.

Danke
Jörg

Ich habe eine ebus - USB Platine an der VRC620/3 und lese den ebus aus. Dort habe ich alle Werte aus der Solarthermie, also Durchfluss, Temperaturen usw. Jetzt will ich mit einem notify die Momentanleistung berechnen lassen und dann entsprechend anzeigen. Schaffe es aber nicht das notify entsprechend zu schreiben, damit die Momentanleistung berechnet wird.
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: jkriegl am 05 März 2017, 12:21:35
Wie lauten denn Deine Readings für die Durchflusstemperaturen.
Habe selbst nur die Rückfluss- und die Kollektor-Temperatur gefunden.
Kannst Du mir bitte den csv-Eintrag der Vorlauftemp verraten.
Der Durchfluss hängt bei meiner Pumpe von der Einstellung des Durchflussmengenbegrenzers ab und stimmte nicht mit der Einstellung an der 620 überein.
Setz in obigem Beispiel Deine Readings ein und triggere das notify.
Besser ist, wie empfohlen, ein userReading.
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: m8haben am 05 März 2017, 12:46:01
Mit einer csv von John30 kann ich die Daten aus der Solarstation VPM 20S von Vaillant lesen.



Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: m8haben am 12 März 2017, 12:00:00
Ich bekomme es nicht hin!

Bekomme immer nur 0.0 angezeigt, auch wenn ich noch nicht mit der richtigen Formel rechne. Muss noch die ml/min passend umrechnen, damit ich dann kw bekomme. Aber irgend etwas muss doch mit dem notify ausgelöst werden. 0.0 kann es nicht sein weil eine Multiplikation mit 0 ist nicht vorhanden, also muss ein Wert, wenn auch falsch berechnet werden. Zu meiner Person, ich bin kein Informatiker und kein Mathmatiker, aber denke das es nur was mit dem Verständnis von Perl bzw. Programmiersprachen zu tun hat.
Mein notify sieht so aus:

DurchFluss:.*|Solarleistung {
my $val=ReadingsVal("KollektorVorlauf","KollektorVorlauf",0)/
-ReadingsVal("KollektorRuecklauf","KollektorRücklauf",0)/
*ReadingsVal("Durchfluss","Durchfluss",0);/
*3.8 /
*1/3600;/
fhem("set val $Solarleistung");

}

Gruß Roland

P.S. Ich hoffe ihr könnt einem nicht Profi helfen.
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: automatisierer am 12 März 2017, 12:15:04
Die Multiplikation mit 0 kann schon sein, du hats ja bei ReadingsVal immer die 0 als Ersatzwert. Wenn du da also ein Reading abfragst, welches es nicht gibt, oder welches keinen Wert hat, dann wird da 0 eingesetzt.

im notify hast du DurchFluss:.* und im ReadingsVal Durchfluss soll das so, oder ist das nen Tippfehler? Fals falsch, hättest du da schon die Multiplikation mit 0
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: m8haben am 12 März 2017, 12:36:39
Es sollten ja immer Werte da sein wenn die Solaranlage läuft. Wenn Durchfluss keinen Wert oder 0 hat dann kann das Ergebnis auch 0 sein. Aber wie gesagt, habe ich die Syntax noch nicht verstanden. Lebe oft von copy und paste. Oft klappt das auch gut. LOL

VG
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: automatisierer am 12 März 2017, 13:09:20
Ich hab das was ich kann auch nur durch try and error und ganz viel lesen gelernt. Aber ich will mal versuchen dein Notify aufzudröseln.

DurchFluss:.*|Solarleistung {
my $val=ReadingsVal("KollektorVorlauf","KollektorVorlauf",0)/
-ReadingsVal("KollektorRuecklauf","KollektorRücklauf",0)/
*ReadingsVal("Durchfluss","Durchfluss",0);/
*3.8 /
*1/3600;/
fhem("set val $Solarleistung");

}

Also getriggert wird dein Notify durch ein Event von 'DurchFluss' oder von 'Solarleistung'. Das ':.*' hinter 'DurchFluss' soltest du genau so gut weg lassen könnnen. Notify kann durch Angabe eines Device (wird dann von jedem beliebigen Event dieses Device getriggert) oder durch angabe eines Device:Event getriggert werden. Da 'DurchFluss:.*' jedes Event zulässt, reicht also auch die Angabe des Device alleine.

Mit 'my $val=' füllst du die Variable 'val' (nicht sicher ob Variable der richtige Ausdruck für $ ist) mit dem was hinter dem '=' steht.

ReadingsVal("Device","Reading",Defaultwert)

mit dem:
fhem("set val $Solarleistung")

Setzt du den Wert von '$Solarleistung' (den du nicht hast) in das Device 'val'

Ich gehe mal davon aus, das du ein Dummy hast der Solarleistung heißt und du da den Wert aus $val rein haben willst.
also:
set Solarleistung $val


Zuletzt noch die ';' Semikolons, ich bin mir da nicht ganz sicher, würde aber mal sagen das du hingter dem letzten ReadingsVal keines setzen musst.
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: jkriegl am 19 März 2017, 12:53:33
Probier es mal mit
fhem( "setreading HK.SOL S.SolarL $Solarleistung");
Dann steht das Ergenis in einem reading
Habe so etwas in myUtils eingebaut, weil ich u. a. negative Werte ellliminiere.
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: m8haben am 19 März 2017, 20:16:18
Zitat von: jkriegl am 19 März 2017, 12:53:33
Probier es mal mit
fhem( "setreading HK.SOL S.SolarL $Solarleistung");
Dann steht das Ergebnis in einem reading
Habe so etwas in myUtils eingebaut, weil ich u. a. negative Werte ellliminiere.
Sei mir bitte nicht böse, aber ich verstehe im Moment garnichts.

Habe mal versucht alles ganz klein darzustellen. Die Formel verstehe ich, das ist Physikunterricht, aber nicht das "notify" ist "Polnische Dörfer"

Wenn ich wie in meinem Bild(PDF)die Leistung berechne passt es gerundet. # SpeicherRuecklauf lesen
get SpeicherRuecklauf cmd {"r -c pms Ntc4Sensor temp\n"}
get SpeicherRuecklauf expect ".*\n\n"
get SpeicherRuecklauf postproc { sprintf("%5.1f",$_) }
#

# SpeicherVorlauf lesen
get SpeicherVorlauf cmd {"r -c pms Ntc3Sensor temp\n"}
get SpeicherVorlauf expect ".*\n\n"
get SpeicherVorlauf postproc { sprintf("%.2f",$_) }
#

# Durchfluss lesen
get DurchFluss cmd {"r currentflow \n"}
get DurchFluss expect "\d+\n\n"
get DurchFluss postproc { sprintf("%5.0f",$_) }



Das habe ich in einer .cfg stehen.

define SolarleistungNoti notify DurchFluss:DurchFluss.* {\
\
my $val=ReadingsVal(($name,"KollektorVorlauf",)-ReadingsVal($name,"KollektorRuecklauf",))\
\
*ReadingsVal($name","Durchfluss",)\
*3.8*1/3600;;\
fhem("set Solarleistung $val");;\
\
}\


Das in der fhem.cfg, ich weiß, dass dort noch vieles falsch ist. Würde aber mal gerne sehen wie es richtig ist, weil ich wirklich die Syntax des notify noch garnicht verstehe.

Gruß Roland
Titel: Antw:Ich komme mit notify nicht klar
Beitrag von: jkriegl am 19 März 2017, 21:24:28
Du kannst Werte auslesen, obwohl ein ReadingsVal einen 3. Parameter braucht (s. cmd-Ref)
ZitatReadingsVal(<devicename>,<reading>,<defaultvalue>)
Deine ECMD-Definition hat einen class-Namen. Bei mir HK.SOL.class.
Also nimm den setreading-Vorschlag und trage Deine Namen ein.
fhem( "setreading HK.SOL Solarleistung $val");
Dein Notifytrigger dürfte ebenfalls nicht funktionieren. Schau Dir Beispiele in der cmd-Ref an und den Event-Monitor. Da gehört ein device hin.