Hallo zusammen,
ich betreibe ein BHKW von Senertec. Ich habe mir die Wärmeführung jetzt über fhem selber realisiert, damit das BHKW nur über Stromführung gestartet wird, wenn die Temperatur im Puffer unter einen bestimmten Wert fällt.
Das funktioniert soweit alles, aber ich suche eine Möglichkeit die Mindesttemperatur des Pufferspeichers über die Außentemperatur dynamisch anzupassen. Im Winter habe ich halt mehr Entnahme aus dem Puffer als im Sommer.
Ich habe es schon über ein notify mit eine If elsif versucht. leider wird das Ereignis nicht so ausgelöst wie gedacht. Es gibt ja den PID als Regler. Kann man irgendwie eine Temperaturkurve simulieren, die dann entsprechend die T-Soll nach der Außentemperatur verändert.
Mir schwebt vor, ab 13 ° C mit 40 ° C T-Soll anzufangen und dann bei 0 ° C auf 55 ° C T-Soll zu kommen.
Vielleicht hat ja jemand eine Idee
Hi,
Ideen haben sich er viele ;)
Aber es fehlen ein paar Infos.
Wie hast du dein BHKW eingebunden?
Poste doch mal ein list des "Devices":
list DeviceName
in die WebCmd von fhem und dann das Ergebnis hier in code-Tags ('#' Zeichen im Menü) posten.
Und das gleiche von dem Tempfühler für außen.
Wie hast du das aktuell nicht funktionierende notify erzeugt?
Was geht dabei nicht?
Wird es nicht ausgelöst?
Oder macht es beim Auslösen nicht was es soll...
Gruß, Joachim
Hallo Joachim,
hier die Definition. Ist eine Webseite die ich auswerte.
Die Temperatur Dachs:Temp.sbAussen soll das Notify auslösen und dann mache ich eine Auswertung wie die Außentemperatur ist.
Je nach wert unter 13 ° C möchte ich die Einschalttemperatur schrittweise erhöhen.
Internals:
BUSY 0
DEF http://glt:PW@192.168.178.100:8080/getKey?k=Hka_Bd.ulBetriebssekunden&k=Hka_Bd.ulAnzahlStarts&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbAussen&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.Temp.sbFuehler2&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&_rnd=9619 60
Interval 60
LASTSEND 1512117904.68117
MainURL http://glt:PW@192.168.178.100:8080/getKey?k=Hka_Bd.ulBetriebssekunden&k=Hka_Bd.ulAnzahlStarts&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbAussen&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.Temp.sbFuehler2&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&_rnd=9619
ModuleVersion 3.4.0 - 9.9.2017
NAME Dachs
NR 139
STATE Status: Aus
TRIGGERTIME 1512117964.67976
TRIGGERTIME_FMT 2017-12-01 09:46:04
TYPE HTTPMOD
addr http://192.168.178.100:8080
auth glt:PW
buf
code 200
conn
data
displayurl http://glt:PW@192.168.178.100:8080/getKey?k=Hka_Bd.ulBetriebssekunden&k=Hka_Bd.ulAnzahlStarts&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbAussen&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.Temp.sbFuehler2&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&_rnd=9619
header
host 192.168.178.100
httpheader HTTP/1.0 200 OK
Content-Length: 411
Cache-Control: max-age=4, must-revalidate
Content-Type: text/plain
Date: Fri, 01 Dec 2017 08:45:04 GMT
httpversion 1.0
hu_blocking 0
hu_filecount 80
hu_port 8080
hu_portSfx :8080
ignoreredirects 0
loglevel 4
path /getKey?k=Hka_Bd.ulBetriebssekunden&k=Hka_Bd.ulAnzahlStarts&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbAussen&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.Temp.sbFuehler2&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&_rnd=9619
protocol http
redirects 0
timeout 2
url http://glt:PW@192.168.178.100:8080/getKey?k=Hka_Bd.ulBetriebssekunden&k=Hka_Bd.ulAnzahlStarts&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbAussen&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.Temp.sbFuehler2&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&_rnd=9619
value 0
QUEUE:
READINGS:
2017-12-01 09:45:04 Aktor.fUPKuehlung false
2017-12-01 09:45:04 Betriebsstunden 25500.896
2017-12-01 09:45:04 Starts 14155
2017-12-01 09:45:04 Temp.sAbgasHKA 69.200
2017-12-01 09:45:04 Temp.sAbgasMotor 77.200
2017-12-01 09:45:04 Temp.sKapsel 66.400
2017-12-01 09:45:04 Temp.sbAussen 2
2017-12-01 09:45:04 Temp.sbFuehler1 75
2017-12-01 09:45:04 Temp.sbFuehler2 47
2017-12-01 09:45:04 Temp.sbGen 72
2017-12-01 09:45:04 Temp.sbMotor 76
2017-12-01 09:45:04 Temp.sbRegler 29
2017-12-01 09:45:04 Temp.sbRuecklauf 38
2017-12-01 09:45:04 Temp.sbVorlauf 78
2017-12-01 09:45:04 usDrehzahl 0
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url http://glt:PW@192.168.178.100:8080/getKey?k=Hka_Bd.ulBetriebssekunden&k=Hka_Bd.ulAnzahlStarts&k=Hka_Mw1.Temp.sKapsel&k=Hka_Mw1.Temp.sbAussen&k=Hka_Mw1.Temp.sbFuehler1&k=Hka_Mw1.Temp.sbFuehler2&k=Hka_Mw1.Temp.sbGen&k=Hka_Mw1.Temp.sbMotor&k=Hka_Mw1.Temp.sbRegler&k=Hka_Mw1.Temp.sbRuecklauf&k=Hka_Mw1.Temp.sbVorlauf&k=Hka_Mw1.Aktor.fUPKuehlung&k=Hka_Mw1.usDrehzahl&k=Hka_Mw1.Temp.sAbgasHKA&k=Hka_Mw1.Temp.sAbgasMotor&_rnd=9619
value 0
defptr:
readingBase:
Aktor.fUPKuehlung reading
Betriebsstunden reading
Starts reading
Temp.sAbgasHKA reading
Temp.sAbgasMotor reading
Temp.sKapsel reading
Temp.sbAussen reading
Temp.sbFuehler1 reading
Temp.sbFuehler2 reading
Temp.sbGen reading
Temp.sbMotor reading
Temp.sbRegler reading
Temp.sbRuecklauf reading
Temp.sbVorlauf reading
usDrehzahl reading
readingNum:
Aktor.fUPKuehlung 10
Betriebsstunden 12
Starts 13
Temp.sAbgasHKA 14
Temp.sAbgasMotor 15
Temp.sKapsel 1
Temp.sbAussen 2
Temp.sbFuehler1 3
Temp.sbFuehler2 4
Temp.sbGen 5
Temp.sbMotor 6
Temp.sbRegler 7
Temp.sbRuecklauf 8
Temp.sbVorlauf 9
usDrehzahl 11
readingOutdated:
requestReadings:
update:
Aktor.fUPKuehlung reading 10
Betriebsstunden reading 12
Starts reading 13
Temp.sAbgasHKA reading 14
Temp.sAbgasMotor reading 15
Temp.sKapsel reading 1
Temp.sbAussen reading 2
Temp.sbFuehler1 reading 3
Temp.sbFuehler2 reading 4
Temp.sbGen reading 5
Temp.sbMotor reading 6
Temp.sbRegler reading 7
Temp.sbRuecklauf reading 8
Temp.sbVorlauf reading 9
usDrehzahl reading 11
sslargs:
Attributes:
fp_Keller 75,1315,1,Dachs,
group Heizung
reading10Name Aktor.fUPKuehlung
reading10Regex Hka_Mw1.Aktor.fUPKuehlung=([\w\.]+)
reading11Name usDrehzahl
reading11Regex Hka_Mw1.usDrehzahl=([\d\.]+)
reading12Name Betriebsstunden
reading12Regex Hka_Bd.ulBetriebssekunden=([\d\.]+)
reading13Name Starts
reading13Regex Hka_Bd.ulAnzahlStarts=([\d\.]+)
reading14Name Temp.sAbgasHKA
reading14Regex Hka_Mw1.Temp.sAbgasHKA=([\d\.]+)
reading15Name Temp.sAbgasMotor
reading15Regex Hka_Mw1.Temp.sAbgasMotor=([\d\.]+)
reading1Name Temp.sKapsel
reading1Regex Hka_Mw1.Temp.sKapsel=([\d\.]+)
reading2Name Temp.sbAussen
reading2Regex Hka_Mw1.Temp.sbAussen=(-?[\d\.]+)
reading3Name Temp.sbFuehler1
reading3Regex Hka_Mw1.Temp.sbFuehler1=([\d\.]+)
reading4Name Temp.sbFuehler2
reading4Regex Hka_Mw1.Temp.sbFuehler2=([\d\.]+)
reading5Name Temp.sbGen
reading5Regex Hka_Mw1.Temp.sbGen=([\d\.]+)
reading6Name Temp.sbMotor
reading6Regex Hka_Mw1.Temp.sbMotor=([\d\.]+)
reading7Name Temp.sbRegler
reading7Regex Hka_Mw1.Temp.sbRegler=([\d\.]+)
reading8Name Temp.sbRuecklauf
reading8Regex Hka_Mw1.Temp.sbRuecklauf=([\d\.]+)
reading9Name Temp.sbVorlauf
reading9Regex Hka_Mw1.Temp.sbVorlauf=([\d\.]+)
room Heizkeller
stateFormat { sprintf("Status: %s", getBooleanStateOpenClose(ReadingsVal($name,"Aktor.fUPKuehlung",0)))}
userattr reading10Name reading10Regex reading11Name reading11Regex reading12Name reading12Regex reading13Name reading13Regex reading14Name reading14Regex reading15Name reading15Regex reading1Name reading1Regex reading2Name reading2Regex reading3Name reading3Regex reading4Name reading4Regex reading5Name reading5Regex reading6Name reading6Regex reading7Name reading7Regex reading8Name reading8Regex reading9Name reading9Regex
Frage:Wie hast du das aktuell nicht funktionierende notify erzeugt?
Antwort: Ich habe es auf die Änderung von Dachs:Temp.sbAussen definiert.
Frage:Was geht dabei nicht?
Antwort:Es wird anscheinend bei einer Änderung nicht ausgelöst.
Dann hättest du ja auch ein list des aktuell nicht funktionierenden Notifys posten können... ;)
...dann hätte man evtl. sehen können warum es nicht auslöst.
Aber es geht auch anders:
Wenn du den EventMonitor öffnest und dann bei Filter z.B. Dachs.* einträgst und wartest bis der gewünschte Event (also beispielsweise Reading Temp.sbAussen) kommt einfach die Zeile markieren und auf Define/Modify und dann das Notify anlegen lassen...
Eine Anmerkung: der '.' (also Punkt) hat eine besondere Bedeutung in RegEx (und das ist was beim Notify passen muss, damit es triggert) und sollte in Namen vermieden werden...
Um zu testen, ob das Notify auch ausgelöst wird, mache ich immer erst mal eine Logausgabe, also beispielsweise: define myNotify notiy Dachs:Temp.sbAussen.* {Log3(undef,3,"Testnachricht");}
Wenn das Notify dann triggert kannst du dann dort direkt mittels perl "Berechnungen" anstellen: define myNotify notiy Dachs:Temp.sbAussen.* { PERLCODE }
oder eine Sub in myUtils aufrufen: define myNotify notiy Dachs:Temp.sbAussen.* { SUBAUFRUF()}
https://wiki.fhem.de/wiki/99_myUtils_anlegen
per fhem "FHEMAUFRUF" kannst du dann von Perl heraus auch wieder fhem Kommandos absetzen:
define myNotify notiy Dachs:Temp.sbAussen.* { PERLCODE; fhem "set DisUndDas Wert"}
Das alles nur Beispiele, ungetestet und nur für's Verständnis schon alleine deswegen weil ich nicht weiß wie der Event genau aussieht...
...und was du dann setzen willst...
Wenn du nicht weiter kommst kann auch ein geposteter Auszug aus dem EventMonitor helfen...
Gruß, Joachim