Hallo, ich hab da folgendes Phänomen. Aus folgender sub lässt sich ein HM-TC-IT-WM-W-EU nicht mit einer neuen desired-temp setzen. Habe die sub mal hardcodiert und auseinander gepflückt damit es verständlicher wird:
sub
sub Sonne_HZ()
{
my $tdiffso = Value("Sonne_dummy");
my $lumso = Value("Lumi_du");
my $tdurchschn = ReadingsVal("THWohnung_durchschn","temperature",20);
my $temps = 25.0;
my $tempks = 24.0;
if( $tdiffso eq "on" && $lumso eq "on" && $durchschn <= 22.5 ) {
fhem "set ... ";
fhem "set ... ";
fhem "set Wandthermostat_Climate desired-temp $temps";
fhem "set HZ_Sonne_du on";
} else {
fhem "set ... ";
fhem "set ... ";
fhem "set Wandthermostat_Climate desired-temp $tempks";
fhem "set HZ_Sonne_du off";
}
}
Alle fhem set Befehle werden ausgeführt nur fhem "set Wandthermostat_Climate desired-temp $temps" setzt keine neue desired-temp im TC. Im State sieht man kurz das der set <device> desired <temp> Befehl übernommen werden soll wird er aber nicht. Mit anderen sub´s die keine if/else Bedingung beinhalten funktioniert es komischerweise :o
So was, in der Art funktioniert vollkommen problemlos:
sub
HZ_nacht
{
my $tempz = ReadingsVal("HZ_zurueck_du","state",20);
fhem "set Wandthermostat_Climate desired-temp $tempz";
}
Wo liegt mein Denkfehler bzw. warum hört der TC nicht.
VG
Frank
Wie sehen denn die anderen set Befehle aus, geht es darin auch um den Wandthermostaten?
Hast Du ein Logfile für den Wandthermostaten, dann kannst Du sehen welche Befehle angenommen und bearbeitet werden.
Grüße
Hallo CoolTux, die anderen set Befehle setzen 2 RT´s, ohne Probleme. Im log steht auch nichts auffälliges:
2016.03.17 15:58:59 3: CUL_HM set WZ_links_Heizung_Clima desired-temp 24.5
2016.03.17 15:58:59 3: CUL_HM set WZ_rechts_Heizung_Clima desired-temp 24.5
2016.03.17 15:58:59 3: CUL_HM set Wandthermostat_Climate desired-temp 25
P.S. Siehe oben, hab den Post noch ergänzt, wenn keine if/else Bedingung vorhanden ist funktioniert es, seltsam.
VG
Frank
Zitat von: franky08 am 17 März 2016, 16:53:36
Hallo CoolTux, die anderen set Befehle setzen 2 RT´s, ohne Probleme. Im log steht auch nichts auffälliges:
2016.03.17 15:58:59 3: CUL_HM set WZ_links_Heizung_Clima desired-temp 24.5
2016.03.17 15:58:59 3: CUL_HM set WZ_rechts_Heizung_Clima desired-temp 24.5
2016.03.17 15:58:59 3: CUL_HM set Wandthermostat_Climate desired-temp 25
VG
Frank
Scheint also wohl schon mal an zu kommen. Die Frage ist was macht der Wandthermostat damit. Hast Du den gepeert, wenn ja mit wem? Sendest Du die selben Befehle auch an die gepeerten Geräte?
Wenn ja, mach es nicht. Sende einzig und alleine die neue Temp an den Wandthermostaten, der sendet sie dann weiter an die gepeerten Heizungsthermostate.
Grüße
Leon
Der TC ist "stand alone", nicht gepeert, der liefert nur die Temperatur für die Heizungsanlage NICHT für die RT´s. Muss jetzt leider erst mal in die Firma. Ich werde morgen mal den else Zweig rausnehmen und die Bedingung mit zwei if prüfen, mal sehen was dann passiert. Bis dahin
Mal sehen was das hier bringt:
sub Sonne_HZ()
{
my $tdiffso = Value("Sonne_dummy");
my $lumso = Value("Lumi_du");
my $tdurchschn = ReadingsVal("THWohnung_durchschn","temperature",20);
my $temps = 25.0;
my $tempks = 24.0;
if( $tdiffso eq "on" && $lumso eq "on" && $durchschn <= 22.5 ) {
fhem "set WZ_links_Heizung_Clima desired-temp 23.0";
fhem "set WZ_rechts_Heizung_Clima desired-temp 23.0";
fhem "set Wandthermostat_Climate desired-temp $temps";
fhem "set HZ_Sonne_du on";
}
if( $tdiffso eq "off" || $lumso eq "off" || $durchschn > 22.5 ) {
fhem "set WZ_links_Heizung_Clima desired-temp 24.5";
fhem "set WZ_rechts_Heizung_Clima desired-temp 24.5";
fhem "set Wandthermostat_Climate desired-temp $tempks";
fhem "set HZ_Sonne_du off";
}
}
VG
Frank
Hallo, mit der sub einen Beitrag weiter oben (Prüfung über zwei if) funktioniert es auch nicht. Siehe Screenshot
Funktioniert ! Nur darf die neue desired-temp nicht gleich der alten desired-temp sein.
Grrr, Theoretisch funktioniert es, aber die neue desired-temp wird nicht gesetzt.
2016.03.18 10:40:05 3: CUL_HM set WZ_links_Heizung_Clima desired-temp 23.0
2016.03.18 10:40:06 3: CUL_HM set WZ_rechts_Heizung_Clima desired-temp 23.0
2016.03.18 10:40:06 3: CUL_HM set Wandthermostat_Cimate desired-temp 25
Aus einem notify raus geht es auch nicht, langsam bin ich mit meinem Latein am Ende:
define set_TC notify HZ_Sonne_du {if(Value("HZ_Sonne_du") eq "on")\
{fhem "set Wandthermostat_Climate desired-temp 23.0"}\
if(Value("HZ_Sonne_du") eq "off") \
{fhem "set WandThermostat_Climate desired-temp 25.0"}\
}
attr set_TC DbLogExclude .*
attr set_TC room Unsorted
VG
Frank
So, jetzt wird´s ganz verrückt :o
Setze ich die Temperatur über ein at:
define Test_TC at *11:30:00 set Wandthermostat_Climate desired-temp 23.0
funktioniert es!
2016.03.18 11:30:00 3: CUL_HM set Wandthermostat_Climate desired-temp 23.0
Auffällig ist das im at die Temperatur mit Kommastelle gesetzt wird 23.0 und aus notify oder sub (also alles was nicht funktioniert) OHNE Kommastelle, zB. hier 25
2016.03.18 10:40:06 3: CUL_HM set Wandthermostat_Climate desired-temp 25
Es sieht so aus als wenn die Kommastelle abgeschnitten wird und der TC damit nichts anfangen kann und somit die neue Temperatur nicht übernimmt. Aus einem at oder THRESHOLD funktioniert es, aus notify oder einer sub heraus leider nicht!
Irgendwelche Ideen???
VG
Frank
define set_TC notify HZ_Sonne_du {if(Value("HZ_Sonne_du") eq "on")\
{fhem "set Wandthermostat_Climate desired-temp 23"}\
if(Value("HZ_Sonne_du") eq "off") \
{fhem "set WandThermostat_Climate desired-temp 25"}\
}
attr set_TC DbLogExclude .*
attr set_TC room Unsorted
Teste mal so und sage mal was passiert bitte.
Kann aber ein bischen dauern, bin zur Gartenarbeit verdonnert worden ???
VG
Frank
;D
Lass Dir Zeit. Viel Spaß. Das Wetter dafür ist, zu mindest bei uns, ja nicht so dolle.
Grüße
hast du schon mal verbose vom "defekten" notify hochgedreht und in fhem.log geschaut?
So nach ca. 1h Garten umgraben der Test! Ohne Angabe der Nachkommastelle (notify) nimmt der TC die neue desired-temp!!
HZ_Sonne_du {if(Value("HZ_Sonne_du") eq "on")
{fhem "set Wandthermostat_Climate desired-temp 25"}
if(Value("HZ_Sonne_du") eq "off")
{fhem "set Wandthermostat_Climate desired-temp 24"}
}
Unterschied im Log:
2016.03.18 14:24:59 3: CUL_HM set Wandthermostat_Climate desired-temp 24
Eingabe ohne Kommastelle, geht
2016.03.18 11:36:41 3: CUL_HM set Wandthermostat_Climate desired-temp 24.0
mit Komma geht nicht
Das funktioniert jetzt, trotzdem seltsam mit einem "set x.5" hab ich es noch nicht getestet, werde ich aber noch ;)
Wie ich es mir schon dachte nur "set x.0" nimmt er nicht aber "set x.5" geht problemlos. Seltsam ist aber das bei einem at "set x.0" und "set x.5" funktioniert aus einem notify oder aus einer sub heraus aber "set x.0" nicht aber "set x.5" ja.
So, wieder etwas geklärt,
schönes WE
VG
Frank
Vielleicht liest Martin hier noch und hat eine Antwort auf das kosmetische Problem ;D
Grüße und schönes WE
Nur wenn der tc dafür verantwortlich wäre, dürfte es aus einem at heraus ja zu dem gleichen verhalten kommen und der tc nicht neu gesetzt werden, dass geht aber. Oder behandelt fhem.pl notify anders als ein at??
Vg
Frank
So,da mir das keine Ruhe lässt, könnte jemand das Verhalten des TC´s mal nachstellen? Einfach ein notify anlegen:
define <name> notify <dev> set <TC Climate> 23.0
und dieses notify triggern, wichtig ist die neue desired-temp mit der Nachkommastelle x.0 anzugeben (hier 23.0).
Wird die neue desired-temp dann bei Euch übernommen?
VG
Frank
Hallo,
also habe mal folgendes ausprobiert:
define GuteNacht dummy
attr GuteNacht room Overview
attr GuteNacht webCmd GoodNight
ist ein "Auslöser" den ich einfach zum Testen schon mal hatte ;-)
dann den gewünschten notify:
define test notify GuteNacht set HM_453732_Climate 23.0
Event kommt:
2016-03-19 11:19:23 dummy GuteNacht GoodNight
Geschalten wird nix...
Folgendes steht im Log:
2016.03.19 11:19:23 3: test return value: Unknown argument 23.0, choose one of clear:readings,trigger,register,oldRegs,rssi,msgEvents,attack,all controlManu:on,off,5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0 controlMode:auto,manual,boost,day,night controlParty desired-temp:on,off,5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0 getConfig getRegRaw inhibit:on,off peerBulk peerChan regBulk regSet sign:on,off tempListFri tempListMon tempListSat tempListSun tempListThu tempListTmpl tempListTue tempListWed tempTmplSet
Wobei ein set mit 23.5 auch nicht geht...
Wohingegen mein "normaler" notify (der zu dem "GuteNacht" gehört ;-) ):
define SchalteGuteNacht notify GuteNacht {fhem("set HM_453732_Climate desired-temp 25.0")}
einwandfrei funktioniert...
Übrigens auch mit 23.0 ;-)
und mit 20.5...
Gruß, Joachim
Funktioniert übrigens problemlos auch von einem "sub" heraus:
#lese gespeicherte Temperatur aus
my $savedTemp = ReadingsVal("myDesTemps", "Heizkoerperthermostat_ZiVier_2", "17.5");
{fhem("set Heizkoerperthermostat_ZiVier_2_Clima desired-temp $savedTemp")}
ist zwar hier jetzt ein Heizkörperthermostat (weil es im "Endausbau" einer ist) aber zu Testzwecken hatte ich den selben Wandthermostaten im Einsatz wie bei der Antwort zuvor...
...hat funktioniert.
Ja, bei einem rt funktioniert es, nur bei einem wandthermostar also eine tc wird die neu gesetzte desired-temp nicht übernommen wenn die temperatur in der nachkommastelle eine null hat, ist die nachkommastelle eine fünf oder wird keine nachkommastelle angegeben, funktioniert es und die neue desired-temp wird gesetzt.
P.s. Übrigends nur aus notify oder einer sub, aus einem at oder zb. Threshold geht es auch mit einer null in der nachkommastelle
Vg
Frank
Zitatdefine test notify GuteNacht set HM_453732_Climate 23.0
@madmax: hier fehlt der befehl "desired-temp"
also bei mir werden schon seit jahren problemlos hm-cc-tc über notify gesetzt. mit diesen befehlen im notify:
fhem("set ".$NAME." desired-temp ".$EVTPART1);;\
Log 1,"----- NOTIFY ----- $NAME $EVENT";;\
bekomme ich im log:
2016.03.19 06:57:35.886 1: ----- NOTIFY ----- Thermostat.SZ_Climate desired-temp: 15.0
edit: sniffe mal.
Hallo frank, bei mir im log erscheint dann nur set desired-temp 15 obwohl im notify zb. Set 15.0 angegeben ist. Mach ich das mit einem at, geht es oder mit set 15.5 aus einem notify geht es auch, ebenfalls mit set 15 ohne Nachkommastelle, da geht es auch -seltsam.
VG
Frank
fhem "set Wandthermostat_Climate desired-temp $temps";
nimm hier mal die variable aus dem string und vielleicht noch eine klammer drum. also:
fhem("set Wandthermostat_Climate desired-temp ".$temps);
Das macht keinen Unterschied ob ich die desired temp aus einem string oder direkt numerisch setze. Kann ich aber heute abend noch mal mit .$temp probieren.
Bis dann
Vg
Frank
Hi Frank,
ja klar ist mir auch aufgefallen, habe aber nur den Test machen wollen wie er vorgegeben war ;-)
(Habe einfach den zu testenden notyfy etc. kopiert und nicht "geprüft" / war ja nicht der "Auftrag" ;-) )
@franky08:
der Test war mit einem Wandthermostat!
Nur der code von mir (wo ich sagte so geht's) ist dann umgeschrieben worden von Wandthermostat (da auch von mir getestet) auf Heizkörperthermostat, da letztendlich ein Heizkörperthermostat gesteuert werden soll.
Mein "Testsystem" hat aber "nur" ein Wandthermostat ;-)
Und der genannte notify mit HM_..._Climate setzt auch einen Wandthermostat.
Wie gesagt bei mir gehen die Sachen eigentlich alle:
Wandthermostat per notify direkt (GuteNacht)
und Wandthermostat per set-Befehl in einer Sub...
Ich bin aktuell auf fhem 5.7 (hat aber mit 5.6 auch bereits funktioniert) und FW1.3 beim Wandthermostaten (hat aber mit 1.2 auch schon funktioniert).
Also prinzipiell funktioniert was du machen möchtest...
Denke da müsste man sehen wo bei deiner Installation/Konfiguration ein Fehler ist...
...auch wenn das jetzt keine konkrete Hilfe ist, sorry...
Gruß, Joachim
@Frank
Welche Firmware hast du auf dem TC?
alle hm-cc-tc haben 2.1, sollte aber egal sein, wenn es nur beim notify nicht funkt.
wie gesagt, sniffe es.
Das ist bei mir ein HM-TC-IT-WM-W-EU, wenn du dir die Screenshots im Thread ansiehst, da ist zu sehen das der set Befehl ankommt (steht ja auch im Log) aber mit Nachkommastelle 0 aus notify/sub nicht angenommen wird, mache ich es über ein at geht es. Der TC ist nur der Sollwertgeber für die Heizungsanlage und nicht für die RT´s, der ist NICHT gepeert! In der sub werden aus zwei Sensoren der Mittelwert gebildet und damit die Sollwertvorgabe für die Steuerung der Junkers Stetigregelung gebildet.
Muss einkaufen :(
VG
Frank
Zitataber mit Nachkommastelle 0 aus notify/sub nicht angenommen wird,
naja, nicht ganz.
set_blabla bedeutet eigentlich, dass fhem ein set befehl auf den weg gebracht hat. entweder hat das senden nicht funktioniert, oder der empfang am tc, oder das senden der antwort vom tc, oder der empfang der antwort, .....
Siehe Screenshot, in Post #5, der set Befehl kommt an, aber der tc übernimmt ihn nicht :-(
P.S. ist aber auch egal, wenn ich den TC aus notify oder einer sub setzen möchte dann ohne Null in der Nachkommastelle, alles andere funktioniert ja und ich habe die sub dementsprechend umgebaut.
VG
Frank
VIELEN DANK für den Hinweis auf das Problem!
Ich suche seit Wochen nach der Ursache dass mein HM-TC-IT-WM-W-EU nicht funktioniert wie er soll.
Auf die Komma-Stelle bin ich dabei absolut nicht gekommen.
Sub geändert, nun funktioniert alles wie es aussieht!
Danke!
Wobei das doch eigentlich ein Fehler in FHEM ist, oder sehe ich das falsch?
Wird da was gefixt?
Wende dich an Rudi, poste es im entsprechenden threat. Hier wird er es evtl nicht finden
Was für einen Thread meinst du bitte?
Was hältst du von fhem Automatisierung? Da geht es um notify und at.
Hier werden hm Themen für fhem diskutiert.
Hab es da mal mit einem Link gepostet.
Schöne Ostern
VG
Frank
Danke Frank!