Homematic Temperatur manuell setzen

Begonnen von Allan Sche Sar, 19 März 2017, 19:12:16

Vorheriges Thema - Nächstes Thema

Allan Sche Sar

Hallo Leute,

ich habe eine, wie ich finde, Anfängerfrage, da das Wiki mir nicht weiter helfen kann.
Zur manuellen Regulierung der Temperatur möchte ich via Telegram die aktuelle Temperatur um 0,5 °C erhöhen (oder auch verringern je nach Fall).

Folgendes habe ich mir bisher zusammengebaut:
if ($EVTPART1 eq '/Temp_Wohn_hoch'){
        my $Temp_aktuel = ReadingsVal("Wohn_Heizung_Clima", "desired-temp","");
        fhem(set Wohn_Heizung_Clima set_desired-temp $Temp_aktuel+0,5);
    }


/Temp_Wohn_hoch ist der Befehl um die Temperatur um 0,5 °C zu erhöhen.
Vom Event Monitor weiß ich, dass die aktuelle Temperatur des Homematic Thermostat mit desired-temp geloggt wird.
Meine Idee ist es also diese Temperatur auszulesen und +0,5 °C neu zu setzen.

Ich glaube aber, dass ich dabei am setzen scheitere.

Wie muss der Code also richtig aussehen?
Oder wie kann ich via FHEM die Temperatur neu setzen?


CoolTux

#1

fhem "set Wohn_Heizung_Clima desired-temp " . (ReadingsVal ('Wohn_Heizung_Clima','measured-temp', 17) +0,5);


Versuche das mal.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Allan Sche Sar

Mhh, die Fehlermeldung beim Abspeichern des Codes ist weg, aber es bewirkt keine Änderung.

Anbei ein Auszug aus dem Event Monitor zum entsprechenden Thermostat:
Zitat2017-03-19 19:26:26 CUL_HM Wohn_Heizung actuator: 0
2017-03-19 19:26:26 CUL_HM Wohn_Heizung batteryLevel: 3.1
2017-03-19 19:26:26 CUL_HM Wohn_Heizung desired-temp: 21.0
2017-03-19 19:26:26 CUL_HM Wohn_Heizung measured-temp: 25.4
2017-03-19 19:26:26 CUL_HM Wohn_Heizung motorErr: communicationERR
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima ValvePosition: 0
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima boostTime: -
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima controlMode: auto
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima desired-temp: 21.0
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima measured-temp: 25.4
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima partyEnd: -
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima partyStart: -
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima partyTemp: -
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima T: 25.4 desired: 21.0 valve: 0
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Weather measured-temp: 25.4
2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Weather 25.4
[/qoute]

CoolTux

Zitat von: Allan Sche Sar am 19 März 2017, 19:28:04
Mhh, die Fehlermeldung beim Abspeichern des Codes ist weg, aber es bewirkt keine Änderung.

Anbei ein Auszug aus dem Event Monitor zum entsprechenden Thermostat:

Ich habe das bei mir getestet. Der Code den ich Dir gegeben habe klappt.
Zeig mal was Du da jetzt genau hast.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

Hi,

2017-03-19 19:26:26 CUL_HM Wohn_Heizung_Clima controlMode: auto

Ich würde den auf manual setzen  8)

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

Allan Sche Sar

Hallo Otto,

ich wollte mit der Regelung die manuelle Nachstellung vornehmen, wie man sie auch am Drehrad vornimmt. Das bedeutet, dass die nachgestellt Temperatur solange erhalten bleibt, bis der nächste Heizzyklus ansteht. Bedeutet das, dass ich nun vom automatischen Modus in den manuellen stellen muss?
Anmerkung: Der Heizwochenplan ist momentan noch nicht in FHEM hinterlegt. Das wird noch über die Thermostate direkt gemacht.

Mein momentaner Stand sieht wie folgt aus:

teleBot:msgText.* {
#Temperaturstatus
    if($EVTPART1 eq '/Temperatur'){
        my $Temp_Wohn= ReadingsVal("Wohn_Heizung_Clima","desired-temp","");
        my $Temp_Kueche= ReadingsVal("Kuec_Heizung_Clima","desired-temp","");
        my $Temp_Schlaf= ReadingsVal("Schl_Heizung_Clima","desired-temp","");
        fhem("set teleBot send
            Die aktuellen Temperatur betragen:
             - Wohnzimmer: $Temp_Wohn °C
             - Küche: $Temp_Kueche °C
             - Schlafzimmer: $Temp_Schlaf °C");
    }
    #Temperatursteuerung
    elsif ($EVTPART1 eq '/Temp_Wohn_hoch'){
        my $Temp_aktuel = ReadingsVal("Wohn_Heizung_Clima", "desired-temp","");
        fhem "set Wohn_Heizung_Clima desired-temp " . ReadingsVal ('Wohn_Heizung_Clima','measured-temp', 17) +0,5;
    }


Die Ausgabe der Temperatur funktioniert

Otto123

#6
solange er auf auto steht liest er immer wieder die tempList ein. Da kannst Du setzen und er setzt wieder zurück, das Spiel kannst Du treiben bis bei im die Batterie leer ist oder Du keine Lust mehr hast  ;)

Versuch macht Klug, mach doch einfach
set Wohn_Heizung_Clima controlMode manual[/s]

Und Leons Code geht von der Ist Temperatur aus, ich glaube Du wolltest einfach die Soll Temperatur hochschrauben.

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

CoolTux

#7

#Temperatursteuerung
    elsif ($EVTPART1 eq '/Temp_Wohn_hoch'){
        fhem "set Wohn_Heizung_Clima desired-temp " . (ReadingsVal ('Wohn_Heizung_Clima','measured-temp', 17) +0,5);
    }
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Zitat von: Otto123 am 19 März 2017, 19:48:48
solange er auf auto steht liest er immer wieder die tempList ein. Da kannst Du setzen und er setzt wieder zurück, das Spiel kannst Du treiben bis bei im die Batterie leer ist oder Du keine Lust mehr hast  ;)

Gruß Otto

Naja nicht ganz. Bei Auto schaltet er die Temperatur ja erst ab dem nächsten Schaltpunkt laut templist.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

#9
Zitat von: CoolTux am 19 März 2017, 19:50:49
Naja nicht ganz. Bei Auto schaltet er die Temperatur ja erst ab dem nächsten Schaltpunkt laut templist.
Ja da wirst Du Recht haben :)

Dann mach doch ohne den ganzen Heckmeck mal einfach {fhem "set Wohn_Heizung_Clima desired-temp " . (ReadingsVal ('Wohn_Heizung_Clima','measured-temp', 17) +0,5)}
oder
{fhem "set Wohn_Heizung_Clima desired-temp " . (ReadingsVal ('Wohn_Heizung_Clima','desired-temp', 17) +0,5)}


In der Kommanozeile von FHEM

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

Allan Sche Sar

#10
Okay es "klappt" doch. Also ich habe nun die Temperatur verändert. Allerdings wird jetzt die Temperatur von 21,0 °C (Normalwert) auf 5,0 °C gesetzt?
Das ist doch ein Gleitkomma Problem oder?
Aber wie behebe ich es und wo finde ich eine Erklärung zu dem von dir dargestellten Code @CoolTux?

Zitat von: CoolTux am 19 März 2017, 19:50:49
Naja nicht ganz. Bei Auto schaltet er die Temperatur ja erst ab dem nächsten Schaltpunkt laut templist.
Das ist ja genau das, was ich möchte  :D

Edit: @CoolTux, wenn ich in der Kommandozeile deine Codes mit den geschweiften Klammern eingebe, dann kommt
Zitat
Unknown command {fhem, try help. Unknown command }, try help. 

und ohne die geschweiften Klammern kommt
Zitat

Usage: fhemdebug {enable|disable|status}
 
								

CoolTux

Sorry nicht aufgepasst. In Perl immer . statt Komma bei Zahlen. Mach mal aus die 0,5 eine 0.5 und Leerzeichen zwischen + und 0.5
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

Zitat von: Allan Sche Sar am 19 März 2017, 19:59:24
Okay es "klappt" doch. Also ich habe nun die Temperatur verändert. Allerdings wird jetzt die Temperatur von 21,0 °C (Normalwert) auf 5,0 °C gesetzt?
Dann ist (ReadingsVal ('Wohn_Heizung_Clima','desired-temp', 17) leer?
Was gibt {(ReadingsVal ('Wohn_Heizung_Clima','desired-temp', 17)} in der Kommandozeile?

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

CoolTux

Wenn du den Code in die Kommandozeile eingibst dann ohne Semikolon bitte, aber mit geschweifte Klammern
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Allan Sche Sar

Ich danke euch beiden. In der letzten Stunde habe ich viel dazu gelernt. Und das beste ist, dass es mit deinem Code CoolTux auch funktioniert  8)
So sieht es dann aus:

#Temperatursteuerung
    elsif ($EVTPART1 eq '/Temp_Wohn_hoch'){
        my $Temp_aktuel = ReadingsVal("Wohn_Heizung_Clima", "desired-temp","");
        fhem "set Wohn_Heizung_Clima desired-temp " . (ReadingsVal ('Wohn_Heizung_Clima','desired-temp', 17) + 0.5);
    }


CoolTux kannst du mir sagen, wie du auf den Code gekommen bist, damit ich noch mehr lernen kann und was zum Beispiel die 17 bedeutet?

P.S.: Morgen werde ich zu der Steuerung noch eine Ausgabe schreiben, dass eine Bestätigung kommt, auf welche Temperatur das ganze nun gesetzt wurde.

DANKE nochmals!