Hauptmenü

Mathe Funktion

Begonnen von stefantaust1, 09 Februar 2018, 22:23:29

Vorheriges Thema - Nächstes Thema

stefantaust1

Hallo,
ich frage meine Dimpex Wärmepumpe ab und es läuft Perfekt.
Ich habe die Vorlauftemperatur und die Rücklauftemperatur. Diese würde ich gerne voneinander abziehen damit ich die Spreizung habe und als extra Wert in das Logfile schreiben lassen wo die Temperaturen stehen.

Vielleicht kann mir jemand behilflich sein, hab aktuell keinen Anhaltspunkt wie ich das angehen soll

Danke Stefan


########################################################
##  Register Vorlauftemperatur definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_flow_temperature ModbusRegister 0 5
attr dim_flow_temperature IODev HeatPumpServer
attr dim_flow_temperature alias Vorlauftemperatur
attr dim_flow_temperature conversion 0.1:0
attr dim_flow_temperature event-min-interval .*:1800
attr dim_flow_temperature event-on-change-reading temperature:0.1
attr dim_flow_temperature fp_Dimplex 625,604,1,Vorlauftemperatur,
attr dim_flow_temperature group Temperaturen
attr dim_flow_temperature plcDataType INT
attr dim_flow_temperature registerType Holding
attr dim_flow_temperature room Dimplex
attr dim_flow_temperature stateAlias temperature
attr dim_flow_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
attr dim_flow_temperature updateInterval 00:01:00

########################################################
##  Register Rücklauftemperatur definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_return_temperature ModbusRegister 0 2
attr dim_return_temperature IODev HeatPumpServer
attr dim_return_temperature alias Rücklauftemperatur
attr dim_return_temperature conversion 0.1:0
attr dim_return_temperature event-min-interval .*:1800
attr dim_return_temperature event-on-change-reading temperature:0.1
attr dim_return_temperature fp_Dimplex 733,602,1,Rücklauftemperatur,
attr dim_return_temperature group Temperaturen
attr dim_return_temperature plcDataType INT
attr dim_return_temperature registerType Holding
attr dim_return_temperature room Dimplex
attr dim_return_temperature stateAlias temperature
attr dim_return_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
attr dim_return_temperature updateInterval 00:01:00

########################################################
##  Logfile Betriebsdaten definieren
##
########################################################
define filelog_dim_temperature_monat FileLog ./log/Temperatur_Dimplex_Monat-%Y-%m.log dim_.*._temperature:temperature:.*|dim_.*._pressure:pressure:.*
attr filelog_dim_temperature_monat alias Log Temperatur Dimplex Monat
attr filelog_dim_temperature_monat createGluedFile 1
attr filelog_dim_temperature_monat group Log
attr filelog_dim_temperature_monat nrarchive 2
attr filelog_dim_temperature_monat room Dimplex


Ergebnis im Logfile
2018-02-01_00:00:51 dim_flow_temperature temperature: 36
2018-02-01_00:00:51 dim_return_temperature temperature: 28.9

Otto123

Hallo Stefan,

ein userReadings, so etwa
attr dim_flow userReadings tempDiff {ReadingsVal("$name","temperature","Fehler") - ReadingsVal("dim_return","temperature","Fehler")}

Schau Dir bitte CodeTags an, die findest Du mit der # Taste über dem  :-X Smiley - sieht schöner aus.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stefantaust1

#2
Hallo Otto,
es schaut schon ganz gut aus, es kommen aber die Vorlauftemperatur...?


Readings
state    29.8    2018-02-09 23:50:36




########################################################
##  Spreizung
########################################################
define dim_spreiz_temperature ModbusRegister 0 5
attr dim_spreiz_temperature IODev HeatPumpServer
attr dim_spreiz_temperature alias Spreizung
attr dim_spreiz_temperature conversion 0.1:0
attr dim_spreiz_temperature event-min-interval .*:900
attr dim_spreiz_temperature event-on-change-reading temperature:0.1
attr dim_spreiz_temperature group Temperaturen
attr dim_spreiz_temperature plcDataType INT
attr dim_spreiz_temperature registerType Holding
attr dim_spreiz_temperature room Dimplex
attr dim_spreiz_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
attr dim_spreiz_temperature updateInterval 00:01:00
attr dim_spreiz_temperature userReadings temperature{ReadingsVal("dim_flow_temperature","temperature","Fehler") - ReadingsVal("dim_return_temperature","temperature","Fehler")}

Otto123

Ich verstehe nicht warum Du wegen eines Wertes (eines Readings) das Device duplizierst und dann das vorhandene Reading temperature mit einem userReading konkurrierend schreiben willst. Keine Ahnung was da wirklich rauskommt.  :-[

Du zeigst übrigens den Wert für state und nicht den Wert des userreadings. Der Wert für state muss so sein, Du hast Dein Modbus Device dupliziert, das schreibt da rein!

Also mein Vorschlag es einfach als ein zusätzliches Reading zu definieren eines existierenden Gerätes gefällt Dir nicht?
Dann definiere Dir einen dummy und trage dort das userreading mit dem Namen ein wie Du es gewählt hast.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gisbert

Hallo stefantaust1,
danke für die Anregung, hab's bei mir aufgenommen.

Hallo Otto,
ich sehe, dass die tempDiff/Spreizung bei mir im logfile mehrfach geschrieben wird.
Die anderen Readings tauchen nur einfach auf.
Kann man das mehrfache loggen verhindern?

Viele Grüße Gisbert

logfile:
2018-02-10_11:09:47 Heizung Warmwasseraustritt: 54.1
2018-02-10_11:09:47 Heizung Warmwasserspeicher: 56.9
2018-02-10_11:09:47 Heizung Warmwasserpumpe: 1
2018-02-10_11:09:47 Heizung Heizung.Vorlauf: 35.7
2018-02-10_11:09:47 Heizung Heizung.Ruecklauf: 27.7
2018-02-10_11:09:47 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:47 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:49 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:49 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:54 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:54 Heizung Heizung.System.Info: 111
2018-02-10_11:09:54 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:56 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:57 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:58 Heizung Heizung.Spreizung: 8.0
2018-02-10_11:09:58 Heizung Heizung.Spreizung: 7.9
2018-02-10_11:10:00 Heizung Heizung.Spreizung: 7.9
2018-02-10_11:10:00 Heizung Heizung.Spreizung: 7.9


Definition des Logfiles:
defmod FileLog_Heizung FileLog ./log/Heizung-%Y-%m.log Heizung.(Warmwasseraustritt|Warmwasserspeicher|Warmwasserpumpe|Heizung.System.Info|Heizung.Vorlauf|Heizung.Ruecklauf|Heizung.Spreizung).*
attr FileLog_Heizung logtype text


Definition des Devices Heizung:
defmod Heizung MQTT_DEVICE DS18B20
attr Heizung IODev MyBroker
attr Heizung event-min-interval Warmwasseraustritt:50,Warmwasserspeicher:50,Warmwasserpumpe:50,Heizung.Vorlauf:50,Heizung.Ruecklauf:50,Heizung.System.Info:50
attr Heizung eventMap 1.000:aus 0.000:an
attr Heizung icon sani_buffer_temp_all
attr Heizung room Heizung,Mobile
attr Heizung stateFormat Speicherpumpe: WWP<br/>Speicher: Warmwasserspeicher°C<br/>Leitung: Warmwasseraustritt°C<br/>Vorlauf: Heizung.Vorlauf°C<br/>Rücklauf: Heizung.Ruecklauf°C<br/>Spreizung: Heizung.Spreizung°C<br/>Uptime: Heizung.System.Info min<br/>RSSI: Heizung.Wifi<br/>Zeitstempel
attr Heizung subscribeReading_Heizung.Ruecklauf /hooks/devices/22/SensorData/Heizung.Ruecklauf
attr Heizung subscribeReading_Heizung.System.Info /hooks/devices/11/SensorData/Heizung.System.Info
attr Heizung subscribeReading_Heizung.Vorlauf /hooks/devices/21/SensorData/Heizung.Vorlauf
attr Heizung subscribeReading_Heizung.Wifi /hooks/devices/26/SensorData/Heizung.Wifi
attr Heizung subscribeReading_Warmwasseraustritt /hooks/devices/8/SensorData/Warmwasseraustritt
attr Heizung subscribeReading_Warmwasserpumpe /hooks/devices/10/SensorData/Warmwasserpumpe
attr Heizung subscribeReading_Warmwasserspeicher /hooks/devices/9/SensorData/Warmwasserspeicher
attr Heizung userReadings Warmwasseraustritt {sprintf('%.1f', ReadingsVal('Heizung','Warmwasseraustritt',''))}, \
Warmwasserspeicher {sprintf('%.1f', ReadingsVal('Heizung','Warmwasserspeicher',''))}, \
Warmwasserpumpe {sprintf('%.0f', ReadingsVal('Heizung','Warmwasserpumpe',''))}, \
WWP {sprintf('%.3f', ReadingsVal('Heizung','Warmwasserpumpe',''))}, \
Heizung.Vorlauf {sprintf('%.1f', ReadingsVal('Heizung','Heizung.Vorlauf',''))}, \
Heizung.Ruecklauf {sprintf('%.1f', ReadingsVal('Heizung','Heizung.Ruecklauf',''))}, \
Heizung.Spreizung {sprintf('%.1f', ReadingsVal('Heizung','Heizung.Vorlauf','')-ReadingsVal('Heizung','Heizung.Ruecklauf',''))}, \
Zeitstempel {substr(ReadingsTimestamp('Heizung','Warmwasserpumpe',''),0,19)}
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Otto123

Du arbeitest mit attr Heizung event-min-interval ...
Ich würde mit attr Heizung event-on-change-reading Heizung.Spreizung arbeiten.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gisbert

Hallo Otto,

danke für den Hinweis, ich geb zu, dass ich heute morgen zu faul zum Denken war. Entschuldigend muss ich aber sagen, dass ich heute morgen wahrscheinlich nicht ohne Denkanstoss zur Lösung gefunden hätte.
attr Heizung event-on-change-reading Heizung.Spreizung hat nicht geholfen, aber das Reading mit event-min-interval auf 50 Sekunden zu setzen, wie die anderen auch:
attr Heizung event-min-interval Warmwasseraustritt:50,Warmwasserspeicher:50,Warmwasserpumpe:50,Heizung.Vorlauf:50,Heizung.Ruecklauf:50,Heizung.System.Info:50,Heizung.Spreizung:50

Jetzt kommt dieses Reading wie alle anderen jede Minute rein:
2018-02-10_12:43:03 Heizung Warmwasseraustritt: 54.5
2018-02-10_12:43:03 Heizung Warmwasserspeicher: 59.8
2018-02-10_12:43:03 Heizung Warmwasserpumpe: 0
2018-02-10_12:43:03 Heizung Heizung.Vorlauf: 36.0
2018-02-10_12:43:03 Heizung Heizung.Ruecklauf: 28.4
2018-02-10_12:43:03 Heizung Heizung.Spreizung: 7.6
2018-02-10_12:43:08 Heizung Heizung.System.Info: 205


Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

stefantaust1

Hallo Otto,
ich habe es jetzt so gemacht wie du anfangs vorgeschlagen hast.  :)

Bit diesem Code wird es als Reading in der Vorlauftemperatur angezeigt
attr dim_flow_temperature userReadings tempDiff {ReadingsVal("$name","temperature","0") - ReadingsVal("dim_return_temperature","temperature","0")}

state     32      2018-02-10 15:30:52
tempDiff    5.6     2018-02-10 15:30:52
temperature     32     2018-02-10 15:30:52


Im LogFile wird aber nichts geschrieben

Wie kann ich es definieren das der Wert tempDiff ins Log geschrieben wird und ich ihn bei meine Kurven einblenden kann.

########################################################
##  Logfile Betriebsdaten definieren
##
########################################################
define filelog_dim_temperature_monat FileLog ./log/Temperatur_Dimplex_Monat-%Y-%m.log dim_.*._temperature:temperature:.*|dim_.*._pressure:pressure:.*
attr filelog_dim_temperature_monat alias Log Temperatur Dimplex Monat
attr filelog_dim_temperature_monat createGluedFile 1
attr filelog_dim_temperature_monat group Log
attr filelog_dim_temperature_monat nrarchive 2
attr filelog_dim_temperature_monat room Dimplex



Grüsse
Stefan

Otto123

#8
Hi Stefan,

na Du öffnest Dein Filelog filelog_dim_temperature_monat und gehst am einfachsten über den regExp Parts Wizard und wählst dieses Reading zusätzlich aus.
Oder Du editierst die DEF und schreibst es dort dazudim_.*._temperature:temperature:.*|dim_.*._pressure:pressure:.*|dim_.*._temperature:tempDiff:.*

Gisbert hatte es ja auch schon geschrieben  ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stefantaust1

Habe es jetzt genau so eingetragen, aber es wird nix geschrieben  :-\

Stefan

Otto123

Ich hatte einen Aufmerksamkeitsfehler eingebaut -> _temperature:tempDiff  ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stefantaust1

ich steh am Schlauch.... :) wird nix eingetragen  :-\

Otto123

Du hast ein großes D draus gemacht?

Dann nimm doch den Wizard?!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stefantaust1

#13
so schauts aus
./log/Temperatur_Dimplex_Monat-%Y-%m.log dim_.*._temperature:temperature:.*|dim_.*._pressure:pressure:.*|dim_.*._temperature:tempDiff:.*

im wizard taucht tempDiff nicht auf  :-\

Otto123

Dann mach mal bitte ein list dim_flow_temperature und poste die Ausgabe.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz