Temperatur diferenz ausgabe zum Schalten??

Begonnen von B4unty, 17 Juni 2017, 18:12:34

Vorheriges Thema - Nächstes Thema

B4unty

Hallo zusammen ich habe jetzt ein kleines problem bei meinem Code den irgendwie schreibt der keinen wert rein habe ich was falsch geschrieben?

define T_Difpool DOIF
attr T_Difpool state {([T_Solar:temperature]-[T_Pool:temperature])}


oder muss ich das so anlegen?
define treshold_T_Difpool2 THRESHOLD T_Solar:temperature:1:T_Pool:temperature:-15 Poolpumpe|set @ on|set @ off|1

mein plan war bzw ist bei einem temperatur unterschied der beiden sensoren von 15 Crad zu schalten für mindestens 10 min und temperatur unschied 3 Crad

Otto123

Hi,

irgendwie passen Deine beiden Codelistings und Deine Aufgabenstellung nur sehr wenig zusammen.

Warum willst Du beim DOIF die Differenz in den state schreiben? Dein DOIF funktioniert ansonsten? Weil wirklich DOIF Code hast Du ja nicht gepostet.
Laut commandref sollte dein attr funktionieren, aber wann und warum kann ich nicht sagen. Sicher erst wenn das DOIF etwas tut, nicht sofort nach der Definition.

THRESHOLD ist ein separates Modul hat mit DOIF gar nichts zu tun. Deine definition hat nichts oder nur wenig mit Deiner Aufgabe zu tun.

Ich denke Deine Aufgabe wäre mit DOIF besser zu lösen als mit THRESHOLD aber dazu solltest Du deine Frage auch in den DOIF Unterbereich verschieben.

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

B4unty

#2
Mein erster gedanke war eine variable zu erzeugen der den diferenz wert der beider Sensoren beinhaltet, damit wollte ich dann ein notify anlegen das bei difernz "variable >3 Poolpumpe on-for-time 360 setzt. Ich habe nur leider noch nicht raus gelesen oder verstanden woch ich bei fhem die variablen hin Packen sollte also notify oder DOIF, wo auch immer. Bin da noch etwas überfragt aber zumindest kommt die syntax mir langsam in den kopf zum verbinden und abfragen.

EDIT:
Jetzt habe ich ein eintrag von 1,7 Crad  :D
define T_Difpool DOIF
attr T_Difpool state {([T_Solar:temperature]-[T_Pool:temperature])}
attr T_Difpool stateFormat {sprintf "%.1f °C", ReadingsVal($name, "state", 0)}

jetzt aber zur frage wo bzw wie setzte ich den bei fem die Variablen die ich später für schaltungen bzw auswerungen oder fergleiche brauche, oder ist das auch eine glaubens frage?

Otto123

Das klingt für mich verwirrend. Du stellst immer sehr eigenartige Fragen.
FHEM ist keine Programmiersprache! FHEM ist ein Framework, kennt Geräte und kann diese mit Logik verknüpfen. FHEM basiert auf Perl und kann auch direkt Perl Code ausführen. Im Perl könntest Du auch Variablen definieren.

Für das was Du willst, braucht es keine Variablen, da braucht es nur etwas Logik. Die liefert Dir FHEM und z.B. DOIF.

Ich löse Dein Problem jetzt bewusst nicht in einem DOIF auf, sonst verstehst Du den Vorgang nie. Geh schrittweise vor. Lege zuerst ein DOIF an welches die Poolpumpe bei der gewünschten Differenz einschaltet.
Das erste Fragment hattest Du schon ([T_Solar:temperature]-[T_Pool:temperature]) Deine Bedingung wäre ([T_Solar:temperature]-[T_Pool:temperature] > 15)

Frage damit nach, falls Du was nicht verstehst.

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

B4unty

#4
Otto123 danke das du mir trotz meiner Kuriosen Beschreibung mir helfen möchtest.

wenn ich jetzt alles Richtig zusammengesetzt habe sollte die Poolpumpe von 8:00-21:30 wen der Temperaturunterschied über 15 Crad beträgt die Poolpumpe für 720 secunden also 20 Minuten einschalten.

define T_Difpool DOIF ( [8:00-21:30] and [T_Solar:temperature]-[T_Pool:temperature] > 15 ) (set Poolpumpe on-for-timer 720)

Otto123

#5
Ich denke, das sollte funktionieren.
Du könntest die zweite Bedingung in ein DOELSEIF packen und die 10 min mit wait erledigen.
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

B4unty

#6
Meinst du das dann so Otto123?

define T_Difpool DOIF ( [8:00-21:30] and [T_Solar:temperature]-[T_Pool:temperature] < 15 ) (set Poolpumpe on;sleep 360) DOELSE (set Poolpumpe off)
Ich hatte extra set Poolpumpe off nicht reingenommen da ich mir nicht sicher bin was passiert wen die Differenz unter 15 crad liegt und ich die Pumpe von hand angemacht habe. Schaltet T_Difpool die dann auf off weil die on bedingung nicht erfüllt ist?

Edit:
Ich glaube Otto123
du meintest ehr so ??
define T_Difpool DOIF ( [8:00-21:30] and [T_Solar:temperature]-[T_Pool:temperature] < 15 ) (set Poolpumpe on;sleep 360) DOELSE (set Poolpumpe off)
defmod di_rc_tv DOIF ([set Poolpumpe on-for-timer 3600:"1.St_on"]) (set Poolpumpe on) DOELSE (set Poolpumpe off)
attr di_rc_tv alias Steuerlogik
attr di_rc_tv devStateIcon cmd_1:general_an:cmd_2 cmd_2|initialized:general_aus:cmd_1
attr di_rc_tv icon helper_doif
attr di_rc_tv room Pool

Otto123

Nein! Überhaupt nicht. Das hierset Poolpumpe on;sleep 360
ist sogar "gefährlicher" Unsinn. -> https://fhem.de/commandref_DE.html#sleep

Deine zweite Bedingung war doch [T_Solar:temperature]-[T_Pool:temperature] < 3
Und die Pumpe sollte mindestens 10 min laufen.

DOELSE ist nicht DOELSEIF! Schau Dir die Doku zu DOIF genau an.

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

FranzB94

Hi B4unty!
Zitat von: B4unty am 17 Juni 2017, 21:18:55
... Poolpumpe für 720 secunden also 20 Minuten einschalten.

Mich würde mal interessieren, in welchem Land der Erde (oder vielleicht ausserhalb?) mit diesen secunden und Minuten gerechnet wird. Da sollen ja 720 davon 20 Minuten ergeben? Hat sich die EU wieder mal was Neues einfallen lassen oder stammt das aus einer PISA-Studie?

Gruß Franz