MAX-Binding: Set-Temp im Automatic-/Manual-Mode

Themen auf die es innerhalb eines Jahres keine Antwort gab, werden hier archiviert.

Moderatoren: Cyrelian, seppy, udo1toni

Gesperrt
Heavy-Dee
Beiträge: 143
Registriert: 18. Jan 2018 16:38
Answers: 0

MAX-Binding: Set-Temp im Automatic-/Manual-Mode

Beitrag von Heavy-Dee »

Hallo zusammen,

Mal eine Verständnisfrage !!!

Ich betreibe seit diesem Winter die MAX! EQ-3 Komponenten und abgesehen von der "Alzheimer"-Krankheit des Cubes funktioniert es auch wunderbar.
Folgendes Problem stellt sich nach wie vor:
Wenn ich die Steuerung im AUTOMATIC-Mode betreibe und z.B. 21°C eingestellt habe, kann ich mittels Wandthermostat die Raumtemperatur verändern (z.B. 19°C) und es wird bis zum nächsten regulären Zyklus im Wochenprogramm (z.B. Nachtabsenkung) mit dieser Temperatur weitergeregelt.
Wenn ich über ALEXA (über oH) die Temperatur ändere -> funktioniert genau so.
ABER: Wenn ich über die Sitemap über das Item "set_temp" die Temperatur ändere dann wird nach ca. 1 min wieder der alte Wert aus dem Wochenprogramm eingestellt.

Ist es überhaupt Möglich über die Sitemap die Temperatur zu ändern? (über Sprachbefehl geht es ja! :cry:

Things:

Code: Alles auswählen

 Thing wallthermostat NEQ0086171     "Wandthermostat" @ "Wohn-/Esszimmer"        [ serialNumber="NEQ0086171"]    // Wandthermostat
          Thing thermostat MKF0049152         "Thermostatventil" @ "Wohnzimmer"           [ serialNumber="MKF0049152"]    // Thermostatventil
          Thing thermostat MEQ1464798         "Thermostatventil" @ "Esszimmer"            [ serialNumber="MEQ1464798"]    // Thermostatventil
Items:

Code: Alles auswählen

    // Wandthermostat   (NEQ0086171)
    Number:Temperature Max_NEQ0086171_acttemp   
        (grpHeizung,grpHeizungWohnEsszimmer)
        ["CurrentTemperature"]   
        {channel="max:wallthermostat:NEQ1633554:NEQ0086171:actual_temp"}
    Number:Temperature Max_NEQ0086171_settemp   
        (grpHeizung,grpHeizungWohnEsszimmer,grpHeizungSollTmp)
        ["TargetTemperature"]   
        {channel="max:wallthermostat:NEQ1633554:NEQ0086171:set_temp"}
    Switch Max_NEQ0086171_battlow   
        (grpHeizung,grpHeizungWohnEsszimmer,grpBatterie)   
        {channel="max:wallthermostat:NEQ1633554:NEQ0086171:battery_low"}
    String Max_NEQ0086171_mode   
        (grpHeizung,grpHeizungWohnEsszimmer,grpHeizungMode)   
        {channel="max:wallthermostat:NEQ1633554:NEQ0086171:mode"}     

    // Thermostatventil Wohnzimmer  (MKF0049152)
    Number:Temperature Max_MKF0049152_acttemp
       (grpHeizung,grpHeizungWohnEsszimmer)
       ["CurrentTemperature"] 
       {channel="max:thermostat:NEQ1633554:MKF0049152:actual_temp"}
    Number:Temperature Max_MKF0049152_settemp
       (grpHeizung,grpHeizungWohnEsszimmer,grpHeizungSollTmp)
       ["TargetTemperature"]
       {channel="max:thermostat:NEQ1633554:MKF0049152:set_temp"}
    Number Max_MKF0049152_valve
       (grpHeizung,grpHeizungWohnEsszimmer)
       {channel="max:thermostat:NEQ1633554:MKF0049152:valve"}
    Switch Max_MKF0049152_battlow   
        (grpHeizung,grpHeizungWohnEsszimmer,grpBatterie)   
        {channel="max:thermostat:NEQ1633554:MKF0049152:battery_low"}
    String Max_MKF0049152_mode   
        (grpHeizung,grpHeizungWohnEsszimmer,grpHeizungMode)   
        {channel="max:thermostat:NEQ1633554:MKF0049152:mode"}         

    // Thermostatventil Esszimmer   (MEQ1464798)
    Number:Temperature Max_MEQ1464798_acttemp   
        (grpHeizung,grpHeizungWohnEsszimmer,grpEsszimmer)
        ["CurrentTemperature"] 
        {channel="max:thermostat:NEQ1633554:MEQ1464798:actual_temp"}
    Number:Temperature Max_MEQ1464798_settemp   
        (grpHeizung,grpHeizungWohnEsszimmer,grpEsszimmer,grpHeizungSollTmp)
        ["TargetTemperature"]
        {channel="max:thermostat:NEQ1633554:MEQ1464798:set_temp"}
    Number Max_MEQ1464798_valve   
        (grpHeizung,grpHeizungWohnEsszimmer,grpEsszimmer)
        {channel="max:thermostat:NEQ1633554:MEQ1464798:valve"}
    Switch Max_MEQ1464798_battlow   
        (grpHeizung,grpHeizungWohnEsszimmer,grpEsszimmer,grpBatterie)   
        {channel="max:thermostat:NEQ1633554:MEQ1464798:battery_low"}
    String Max_MEQ1464798_mode   
        (grpHeizung,grpHeizungWohnEsszimmer,grpEsszimmer,grpHeizungMode)   
        {channel="max:thermostat:NEQ1633554:MEQ1464798:mode"}  
Sitemap:

Code: Alles auswählen

        Frame item=Max_NEQ0086171_acttemp label="Wohn-/Esszimmer [ %.1f °C ]"
        {       
            Setpoint item=Max_NEQ0086171_settemp    
                label="Temperatur" 
                labelcolor=[Max_NEQ0086171_mode=="MANUAL"="#008080"]
                minValue=5.0 maxValue=25.0 step=0.5  
                icon="temperature" 
            Text item=Max_NEQ0846023_contact        
                label="Terrasse  [MAP(max.map):%s]"
                visibility=[Max_NEQ0846023_contact!="CLOSED"]
                icon="windoor"
            Text item=Max_JEQ0506519_contact        
                label="Fenster (Esszimmer)  [MAP(max.map):%s]"
                visibility=[Max_JEQ0506519_contact!="CLOSED"]
                icon="window"    
            Text item=Max_MKF0049152_valve
                label="Heizkörper (Wohnzimmer) [%d %%]"
                visibility=[Max_MKF0049152_valve!="0"]
                icon="temp_up"
            Text item=Max_MKF0049152_valve
                label="Heizkörper (Esszimmer) [%d %%]"
                visibility=[Max_MEQ1464798_valve!="0"]
                icon="temp_up"
        }
Die einzig funktionierende Art die Temperaturen zu ändern ist die Umschaltung der Betriebsarten mit vorgewählten Temperaturen (allerdings für alle Räume)

Rules:

Code: Alles auswählen

rule "Betriebsart"
when 
    Item Betr_Art received command
then
    switch (receivedCommand) 
    {       
        case 1 : {
            // Automatik -> Wochenplan (Temperaturabsenkung bei Abwesenheit)
            logInfo(filename,"Heizung: Betriebswahl -> Automatik")            
            if(grpPraesenz.state == ON) {
                logInfo(filename,"Heizung: Automatik -> aktiv")
                grpHeizungMode.members.forEach[item | item.sendCommand("AUTOMATIC")
                Thread::sleep(5000)
                ] 
                grpHeizungMode.postUpdate("AUTOMATIC")               
            }
            if(grpPraesenz.state == OFF) {
                // Manuell -> Absenkbetrieb (gew. Tempertur)
                logInfo(filename,"Heizung: Automatik -> passiv")
                grpHeizungSollTmp.members.forEach[item | item.sendCommand(Temp_Abs.state as Number)
                Thread::sleep(5000)            
                ]
                grpHeizungMode.members.forEach[item | item.sendCommand("MANUAL")
                Thread::sleep(5000)
                ]
                grpHeizungMode.postUpdate("MANUAL")                
            }
        }

        case 2 : {
            // Automatik -> Wochenplan
            logInfo(filename,"Heizung: Betriebswahl -> Wochenplan")
            grpHeizungMode.members.forEach[item | item.sendCommand("AUTOMATIC")
            Thread::sleep(5000)            
            ]
            grpHeizungMode.postUpdate("AUTOMATIC")    
       }

        case 3 : {
            // Manuell -> Absenkbetrieb (gew. Tempertur)
            logInfo(filename,"Heizung: Betriebswahl -> Abgesenkt")
            grpHeizungSollTmp.members.forEach[item | item.sendCommand(Temp_Abs.state as Number)
            Thread::sleep(5000)            
            ]
            grpHeizungMode.members.forEach[item | item.sendCommand("MANUAL")
            Thread::sleep(5000)            
            ]
            grpHeizungMode.postUpdate("MANUAL")                
        }

        case 4 : {
            // Manuell -> Urlaubsbetrieb (gew. Tempertur)
            logInfo(filename,"Heizung: Betriebswahl -> Urlaub")

            grpHeizungMode.members.forEach[item | item.sendCommand("MANUAL")
            Thread::sleep(5000)            
            ]
            grpHeizungSollTmp.members.forEach[item | item.sendCommand(Temp_Url.state as Number)
            Thread::sleep(5000)            
            ]
            grpHeizungMode.postUpdate("MANUAL")    
       }

        case 5 : {
            // Manuell -> Frostschutz (gew. Tempertur)
            logInfo(filename,"Heizung: Betriebswahl -> Frostschutz")
            grpHeizungMode.members.forEach[item | item.sendCommand("MANUAL")
            Thread::sleep(5000)            
            ]            
            grpHeizungSollTmp.members.forEach[item | item.sendCommand(5)
            Thread::sleep(5000)            
            ]
            grpHeizungMode.postUpdate("MANUAL")                
        }

        case 6 : {
            // Manuell -> Aus
            logInfo(filename,"Heizung: Betriebswahl -> Aus")
            grpHeizungMode.members.forEach[item | item.sendCommand("MANUAL")
            Thread::sleep(5000)            
            ]
            grpHeizungSollTmp.members.forEach[item | item.sendCommand(0)
            Thread::sleep(5000)            
            ]
            grpHeizungMode.postUpdate("MANUAL")    
        }

    }
end
openHab4 (v. 4.1.0) Docker auf Synology DS920+ :!:

Gesperrt