Hallo,
ich bin bzgl. Programmierung ein blutiger Anfänger, habe mir hier im Forum und im Wiki aber schon einige sehr hilfreiche Tipps geholt. Danke dafür!
Momentan versuche ich, die Temperatur eines Heizkörperthermostaten zum aktuellen Zeitpunkt auf einen bestimmten Wert (22 °C) zu setzen und gleichzeitig zu einem späteren Zeitpunkt wieder zurückzusetzen (16 °C). Dazu habe ich mir ein Notify erstellt, das leider nur folgende Meldung ausgibt:
2019.01.23 10:20:36 3: FBDECT set Thermostat_Buero desired-temp
2019.01.23 10:20:36 3: n_Timer_Heizung_Buero_1 return value: Usage: set Thermostat_Buero desired-temp value
Mein Notify:
Internals:
DEF Timer_Heizung_Buero1 set Thermostat_Buero desired-temp 22 ;; defmod at ReadingsTimestamp('Timer_Heizung_Buero1','state',0) set Thermostat_Buero desired-temp 16
FUUID 5c475041-f33f-042f-d159-8c198f4056faca15
NAME n_Timer_Heizung_Buero_1
NOTIFYDEV Timer_Heizung_Buero1
NR 736
NTFY_ORDER 50-n_Timer_Heizung_Buero_1
REGEXP Timer_Heizung_Buero1
STATE 2019-01-23 10:20:36
TRIGGERTIME 1548235236.1152
TYPE notify
READINGS:
2019-01-23 10:20:12 state active
Attributes:
room Heizung
Weiß jemand aus dem Forum, wo mein Fehler liegt?
Gruß
Harald
Hallo Harald,
den Code bitte in Codetags posten -> https://forum.fhem.de/index.php/topic,71806.0.html
Ich versuche mal dein define zu verstehen:
define n_Timer_Heizung_Buero_1 notify Timer_Heizung_Buero1 set Thermostat_Buero desired-temp 22 ;; defmod at ReadingsTimestamp('Timer_Heizung_Buero1','state',0) set Thermostat_Buero desired-temp 16
Ich glaube das ist Wirruwarruwolls ::)
Das notify würde auf alle Events von Timer_Heizung_Buero1 triggern. Was ist das für ein Gerät?
Der Ausdruck defmod at ... würde ein Gerät namens at verändern. Gibt es ein solches Gerät? Ich würde ein Gerät nicht nach einem FHEM Modul benennen!
Vorschlag, Du willst einen Zeitpunkt, also ein at (https://commandref.fhem.de/#at) - setzt um 11:00 Uhr deine Temperatur
define a11 at 11:00:00 set Thermostat_Buero desired-temp 22
Ob das deiner Anforderung entspricht glaub ich nicht, aber es wäre ein Anfang.
Gruß Otto
Zitat von: Caesareus am 23 Januar 2019, 10:29:43
2019.01.23 10:20:36 3: FBDECT set Thermostat_Buero desired-temp
Weiß jemand aus dem Forum, wo mein Fehler liegt?
Du hast anscheinend ein Fritz/Comet-DECT Thermostat. Meiner Erinnerung nach muss man da den Temperaturwert als Dezimalwert mit einer Nachkommastelle setzen. Probiere mal
set Thermostat_Buero desired-temp 22.0
Außerdem ist zu beachten, dass bei den Fritz-DECT Geräten die Übertragung nicht sofort erfolgt sondern bis zu 15 Minuten benötigt.
Hallo Otto,
danke für die Tipps. Ich habe meinen Code modifiziert.
[/Internals:
DEF Timer_Heizung_Buero1 set Thermostat_Buero desired-temp 22 ;; defmod Thermostat_Buero at {ReadingsTimestamp("Timer_Heizung_Buero1","state",0)} set Thermostat_Buero desired-temp 16
FUUID 5c475041-f33f-042f-d159-8c198f4056faca15
NAME n_Timer_Heizung_Buero_1
NOTIFYDEV Timer_Heizung_Buero1
NR 736
NTFY_ORDER 50-n_Timer_Heizung_Buero_1
REGEXP Timer_Heizung_Buero1
STATE 2019-01-23 11:42:01
TRIGGERTIME 1548240121.70917
TYPE notify
READINGS:
2019-01-23 11:41:24 state active
Attributes:
room Heizung
code]
Leider funktioniert das immer noch nicht. Dass das jedesmal bei einer Änderung des Timers über einen Trigger ein at auslöst ist gewollt. Hier noch die Definition meines Timers:
[code][/Internals:
FUUID 5c475041-f33f-042f-ac21-81766a1d17abf26f
NAME Timer_Heizung_Buero1
NR 733
STATE state 11:50
TYPE dummy
READINGS:
2019-01-23 11:42:01 state state 11:50
Attributes:
icon time_clock
room Heizung
setList state:time
webCmd state
code]
Gruß
Harald
Ich versuche mal zu erklären, was ich beabsichtige:
Mit dem device Timer_Heizung_Buero1 wird eine Uhrzeit gesetzt (variabel über einen Slider). Mit dem notify n_Timer_Heizung_Buero_1 soll dann der Heizkörperthermostat (Thermostat_Buero)auf 22 °C gesetzt werden und gleichzeitig der Zeitpunkt mit einem ReadingsTimestamp aus dem Timer_Heizung_Buero1 auf das Rücksetzen auf 16 °C übergeben werden. Der erste Teil klappt, aber nicht das Setzen der Zeit für die spätere Temperaturreduktion.
Wäre toll, wenn da jemand einen Tipp für mich hätte.
Gruß
Harald
Hallo Harald,
was liefert Dir dieser Ausdruck in der FHEM Kommandozeile zurück?
{ReadingsTimestamp("Timer_Heizung_Buero1","state",0)}
Gruß Otto
Hallo Otto,
wie ich gerade sehe, liefert der ReadingsTimestamp nicht den von mir gesetzten Wert, sondern leider den Zeitpunkt, wann der gesetzt wurde. Da ist wohl ein anderer Befehl notwendig, der das aus "STATE state 07:25" korrekt übernimmt. Bin halt doch noch ziemlich am Anfang.
Gruß
Harald
Naja, aus Fehlern lernt man.
Nimm {ReadingsVal("Timer_Heizung_Buero1","state",0)} :D
Probier vorher wieder in der Kommandozeile.
Danke, der Schritt funktioniert schon mal. Der {ReadingsVal("Timer_Heizung_Buero1","state",0)} gibt einen Wert im Format hh:mm zurück.
set Thermostat_Buero desired-temp 22 ;; defmod Thermostat_Buero at
Was ist Thermostat_Buero?
Bei Dir ein Thermostsat und ein at? Das geht nicht!
Ich würde ein at nie benennen, das man denkt es wäre ein Thermostat.
Auf dei Vermutung von dkreutz hast Du noch nicht reagiert. Das macht das helfen schwierig.
Das Ergänzen einer Dezimalstelle war leider ohne Erfolg.
Ich erhalte mit nachstehenden Definitionen im Log den Fehler: n_Timer_Heizung_Buero_1 return value: Usage: set Thermostat_Buero desired-temp value
Ich poste mal meine Defs.
Internals:
CFGFN
FUUID 5c4969b6-f33f-042f-4cda-5e5185e638c0f174
NAME HeizungBueroaus2
NR 24386
STATE ???
TYPE dummy
Attributes:
icon sani_heating_timer
room Heizung
Internals:
DEF Timer_Heizung_Buero1 set Thermostat_Buero desired-temp 22 ;; defmod HeizungBueroaus2 at {ReadingsVal("Timer_Heizung_Buero1","state",0)} set Thermostat_Buero desired-temp 16
FUUID 5c475041-f33f-042f-d159-8c198f4056faca15
NAME n_Timer_Heizung_Buero_1
NOTIFYDEV Timer_Heizung_Buero1
NR 131
NTFY_ORDER 50-n_Timer_Heizung_Buero_1
REGEXP Timer_Heizung_Buero1
STATE 2019-01-24 08:32:03
TRIGGERTIME 1548315123.98715
TYPE notify
READINGS:
2019-01-24 08:23:00 state active
Attributes:
room Heizung
Internals:
FUUID 5c475041-f33f-042f-ac21-81766a1d17abf26f
NAME Timer_Heizung_Buero1
NR 129
STATE 08:40
TYPE dummy
READINGS:
2019-01-24 08:32:03 state 08:40
Attributes:
icon time_clock
readingList state
room Heizung
setList state:time
webCmd state
Internals:
DEF FritzSmart:09995_0188757 actuator,tempSensor
FUUID 5c475039-f33f-042f-3dfc-8430dc9986ff036f
FritzSmart_MSGCNT 188
FritzSmart_TIME 2019-01-24 09:41:27
IODev FritzSmart
LASTInputDev FritzSmart
MSGCNT 188
NAME Thermostat_Buero
NR 119
STATE desired-temp: 22.0 C
TYPE FBDECT
id 09995_0188757
props actuator,tempSensor
READINGS:
2019-01-24 09:41:27 AIN 09995 0188757
2019-01-24 09:41:27 FBNAME Thermostat_Buero
2019-01-24 09:41:27 FBPROP actuator,tempSensor
2019-01-24 09:41:27 FBTYPE Comet DECT
2019-01-24 09:41:27 ID 16
2019-01-24 09:41:27 batteryState ok
2019-01-24 09:41:27 batterylow 0
2019-01-24 09:41:27 day-temp 22.0 C
2019-01-24 09:41:27 desired-temp 22.0 C
2019-01-24 09:41:27 devicelock no
2019-01-24 09:41:27 errorcode noError (0)
2019-01-24 09:41:27 fwversion 04.85
2019-01-24 09:41:27 locked no
2019-01-24 09:41:27 nextPeriodStart 1970-01-01 01:00:00
2019-01-24 09:41:27 nextPeriodTemp 22.0 C
2019-01-24 09:41:27 night-temp 16.0 C
2019-01-24 09:41:27 present yes
2019-01-24 09:41:27 state desired-temp: 22.0 C
2019-01-24 09:41:27 tempadjust -2.0 C
2019-01-24 09:41:27 temperature 23.0 C (measured)
Attributes:
IODev FritzSmart
event-min-interval power:120
icon sani_heating_calendar
room Heizung
Denkst Du wirklich, dass du klar siehst mit deinen definitionen/Namen?
Die Dezimalstelle ist, wenn überhaupt, nur eine Nebenbaustelle.
HeizungBueroaus2 ist ein dummy du willst daraus ein at machen? defmod HeizungBueroaus2 at ...
Das wird nix...
und in deiner DEF steht 22 und nicht 22.0 ! Du hast also keine Dezimalstelle ergänzt
Gruß Otto
Wie wäre mit Schritt für Schritt?
set Thermostat_Buero desired-temp 22
Kannst Du damit über die Kommandozeile überhaupt die Soll-Tempersatur ändern?
Meine Vermutung
set Thermostat_Buero desired-temp 22.0 C
Falls es eine FBDECT ist reicht die "nackte" Zahl völlig aus , ohne Punkt und C !
Es dauert halt nur bis zum nächsten Poll bis der Wert im Reading auch sichtbar wird
Hallo,
danke für euer Feedback. Ich habe mein notity modifiziert und jetzt funktioniert es wie gewünscht:
Internals:
DEF Timer_Heizung_Buero1 set Thermostat_Buero desired-temp 22.5 ; define HeizungBueroaus2 at {ReadingsVal("Timer_Heizung_Buero1","state",0)} set Thermostat_Buero desired-temp 16.5
FUUID 5c475041-f33f-042f-d159-8c198f4056faca15
NAME n_Timer_Heizung_Buero_1
NOTIFYDEV Timer_Heizung_Buero1
NR 132
NTFY_ORDER 50-n_Timer_Heizung_Buero_1
REGEXP Timer_Heizung_Buero1
STATE active
TYPE notify
READINGS:
2019-01-25 15:59:48 state active
Attributes:
room Unsorted
Gruß
Harald
define HeizungBueroaus2 at {ReadingsVal("Timer_Heizung_Buero1","state",0)} set Thermostat_Buero desired-temp 16.5
nimm lieber
defmod HeizungBueroaus2 at {ReadingsVal("Timer_Heizung_Buero1","state",0)} set Thermostat_Buero desired-temp 16.5
Sonst kannst Du es schaffen eine Fehlermeldung zu bekommen.