mit dummy wert in DOIF eine startzeit zwischen 22:00 und 06:00 bestimmen

Begonnen von Peter aus Calw, 09 März 2016, 21:03:16

Vorheriges Thema - Nächstes Thema

Peter aus Calw

Hallo fhem freunde,
von Damian habe ich ein hervorragendes DOIF erhalten das meine Ladesteuerung für eine Blockspeicherheizung enthält,
jetzt möchte ich das optimieren :

Habe einen dummy eingerichtet der aus einem Ladesollwert und Restwaermewert einen Ladewert ermittelt.
Dieser Ladewert erreicht den Wert 1 bis 14.
Wert 14 = soll 22:00 und dann möglichst gleitend bis
Wert 1   = 05:00 entsprechen

im Moment sieht das so aus:

define di_Laderelais DOIF ([22:00] and [HK_Ladewertsteuerung:state]>13.6 or [22:20] and [HK_Ladewertsteuerung:state]>12.2 or [22:40] and [HK_Ladewertsteuerung:state]>10.8 or [23:00] and [HK_Ladewertsteuerung:state]>9.4 or [23:30] and [HK_Ladewertsteuerung:state]>8 or [00:05] and [HK_Ladewertsteuerung:state]>6.6 or [00:35] and [HK_Ladewertsteuerung:state]>5.2 or [01:30] and [HK_Ladewertsteuerung:state]>3.8 or [02:00] and [HK_Ladewertsteuerung:state]>2.4\
or [03:00] and [HK_Ladewertsteuerung:state]>1)\
(set TH_Laderelais active, set TH_Laderelais desired {([Wetter:fc2_low_c]+[Wetter:fc2_high_c])/2 *(-0.3476157)+36}) DOELSEIF ([06:00])    (set TH_Laderelais deactivated cmd1_gt)
attr di_Laderelais do always


Der Wunsch ist eben diese Ansammlung von and/or durch eine einmalige Uhrzeitangabe abhängig vom Ladewert, einzurichten.
wenn überhaupt möglich, würde mich sehr über Anregungen und Hilfe freuen.
Beste Grüße von Peter aus Calw

Ellert


Peter aus Calw

Hallo Ellert,
besten Dank für Deinen Tipp, bin heute erst dazu gekommen, Deinen Vorschlag umzusetzen.
meine di_Laderelais DOIF sieht jetzt so aus :

([([22:00] +7*3600 - 7*3600/13*([HK_Ladewertsteuerung:state] - 1))]) (set TH_Laderelais active, set TH_Laderelais desired {([Wetter:fc2_low_c]+[Wetter:fc2_high_c])/2 *(-0.3476157)+36}) DOELSEIF ([06:00])    (set TH_Laderelais deactivated cmd1_gt)

Allerdings bekomme ich nach dem Einfügen (in DEF) diesen Fehler:

di_laderelais DOIF: Wrong timespec 4.53572935: either HH:MM:SS or {perlcode}: ([22:00]+7*3600-7*3600/13*([HK_Ladewertsteuerung:state]-1))

die Ausgabe von HK_Ladewertsteuerung:

HK_Ladewertsteuerung:state  4.63572935  2016-03-11 15:11:45

Habe ich bei der Eingabe einen Fehler gemacht ?
Gruß Peter


Ellert


Peter aus Calw

diese vor ca 2 Wochen aktualisiert :
$Id: 98_DOIF.pm 10899 2016-02-21 12:41:29Z damian-s $
#
# This file is part of fhem.
#
# Fhem is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# Fhem is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with fhem.  If not, see <http://www.gnu.org/licenses/>.


Damian

Hallo Peter,

das liegt an der Dezimalzahl. In der Readingangabe bei Zeitberechnung werden wohl z. Zt. nur Zeitangaben oder ganze Zahlen erlaubt.

Du kannst dir aber mit

([([22:00] +7*3600 - 7*3600/13*(Value("HK_Ladewertsteuerung") - 1))]) ...


behelfen.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Peter aus Calw

Hallo Damian,
habe mich nicht getraut Dich schon wieder in Anspruch zu nehmen, aber diese Formel funktioniert bestens.
Nun wird genau die gleitende Einschaltzeit erreicht die der Differenz zwischen Lade-Sollwert und Restladewert vom Kessel entspricht.
Kann nur wieder danke sagen und danke natürlich auch Ellert für seinen Beistand.
schöne Grüße von Peter