Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update for wolf-cwl-configuration.json feature support #13

Open
LuiSauberhorn opened this issue Oct 14, 2020 · 5 comments
Open

Update for wolf-cwl-configuration.json feature support #13

LuiSauberhorn opened this issue Oct 14, 2020 · 5 comments
Assignees

Comments

@LuiSauberhorn
Copy link

Support of CWL is very limited. I extended the json file wolf-cwl-configuration.json to support more functionality.

I have an CWL and started to integrate it. Several additional functions are implemented now. I will continue on working on the file but have reached a good interim state:

{
    "id":           "cwl",
    "vendor":       "Wolf",
    "label":        "Wolf CWL",
    "description":  "Wolf CWL 300/400",
    
    "authors":      ["Christian Sowada, opensource@cs-dev.de",
                     "Lui Sauberhorn"],
    "identification": ["08 16 00 22 03"],
    
    "commands":
    [
        {
            "label":    "Temperature Inside",
            "id":       "ac.temp.inside",
            "command":  "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "07"}
                ],
                "slave": [
                    {"name": "temp.inside", "type": "int", "label":"Temperature Inside", "reverseByteOrder": true, "factor": 0.1, "min": 1, "max": 60, "format":"%.1f°C"}   
                ]
            }
        },
        
        {
            "label":    "Temperature Outside",
            "id":       "ac.temp.outside",
            "command":  "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "08"}
                ],
                "slave": [
                    {"name": "temp.outside", "type": "int", "label":"Temperature Outside", "reverseByteOrder": true, "factor": 0.1, "min": -60, "max": 100, "format":"%.1f°C"}   
                ]
            }
        },

        {
            "label":    "Air Flow In",
            "id":       "ac.airflow.in.real",
            "command":  "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0b"}
                ],
                "slave": [
                    {"name": "airflow.in.real", "type": "int", "label":"Temperature Inside", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 1000, "format":"%4dm³/h"}   
                ]
            }
        },
        
        {
            "label":    "Air FLow Out",
            "id":       "ac.airflow.out.real",
            "command":  "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0c"}
                ],
                "slave": [
                    {"name": "airflow.out.real", "type": "int", "label":"Temperature Outside", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 1000, "format":"%4dm³/h"}   
                ]
            }
        },
        
        {
            "label":    "Filter Status",
            "id":       "ac.filter.dirty",
            "command":  "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "18"}
                ],
                "slave": [
                    {"name": "filter.dirty", "type": "int", "label":"Filter Dirty", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 1, "format":"%d"}
                ]
            }
        },
                
        {
            "label":    "ByPass Status",
            "id":       "ac.bypass.status",
            "command":  "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0E"}
                ],
                "slave": [
                    {"name": "bypass.status", "type": "int", "label":"Bypass Status", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 5, "format":"%d",
                        "mapping": {
                            "0": "Initialize", "1": "Opening", "2": "Closing", "3": "Open", "4": "Closed", "5": "Error"
                        }
                    }
                ]
            }
        },

        {   
            "label":    "Fan Step 0",
            "id":       "ac.fan.step.0",

            "get": {
                "command":  "40 50",
                "master": [
                    {"type": "static", "default": "21"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Fan Step 0 Current", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "int", "label":"Fan Step 0 Min", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "int", "label":"Fan Step 0 Max", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "int", "label":"Fan Step 0 Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "int", "label":"Fan Step 0 Factory", "reverseByteOrder": true, "format":"%4dm³/h"}   
                ]
            },

            "set": {
                "command":  "40 80",
                "master": [
                    {"type": "static", "default": "21"},
                    {"name": "cur", "type": "int", "label":"Fan Step 0 Current", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }

        },

        {   
            "label":    "Fan Step 1",
            "id":       "ac.fan.step.1",

            "get": {
                "command":  "40 50",
                "master": [
                    {"type": "static", "default": "01"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Fan Step 1 Current", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "int", "label":"Fan Step 1 Min", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "int", "label":"Fan Step 1 Max", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "int", "label":"Fan Step 1 Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "int", "label":"Fan Step 1 Factory", "reverseByteOrder": true, "format":"%4dm³/h"}   
                ]
            },

            "set": {
                "command":  "40 80",
                "master": [
                    {"type": "static", "default": "01"},
                    {"name": "cur", "type": "int", "label":"Fan Step 1 Current", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }
        },

        {   
            "label":    "Fan Step 2",
            "id":       "ac.fan.step.2",

            "get": {
                "command":  "40 50",
                "master": [
                    {"type": "static", "default": "02"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Fan Step 2 Current", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "int", "label":"Fan Step 2 Min", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "int", "label":"Fan Step 2 Max", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "int", "label":"Fan Step 2 Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "int", "label":"Fan Step 2 Factory", "reverseByteOrder": true, "format":"%4dm³/h"}   
                ]
            },

            "set": {
                "command":  "40 80",
                "master": [
                    {"type": "static", "default": "02"},
                    {"name": "cur", "type": "int", "label":"Fan Step 2 Current", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }
        },

        {   
            "label":    "Fan Step 3 Get",
            "id":       "ac.fan.step.3.get",

            "get": {
                "command":  "40 50",
                "master": [
                    {"type": "static", "default": "03"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Fan Step 3 Current", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "int", "label":"Fan Step 3 Min", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "int", "label":"Fan Step 3 Max", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "int", "label":"Fan Step 3 Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "int", "label":"Fan Step 3 Factory", "reverseByteOrder": true, "format":"%4dm³/h"}   
                ]
            },

            "set": {
                "command":  "40 80",
                "master": [
                    {"type": "static", "default": "03"},
                    {"name": "cur", "type": "int", "label":"Fan Step 3 Current", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }
        },

        {   
            "label":    "Fan Step",
            "id":       "ac.fan.step",
            "command":  "40 a1",

            "set": {
                "master": [
                    {"name": "mode", "type": "uint", "label":"Fan Step Mode", "reverseByteOrder": true, "min": 0, "max": 3, "step": 1, "format":"%d"}
                ]
            }
        }
    ]
}

wolf.cwl400.json.zip

@csowada
Copy link
Owner

csowada commented Oct 20, 2020

Thank you very much for the extend file. Is it possible to create a pull-request? If not I'll merge it with the next release.

@csowada csowada self-assigned this Oct 20, 2020
@Chiuaua79
Copy link

For "Air Flow Out" and "Air Flow In", the labels of the received slave message should match the command (or something alike), as label "Temperature Outside" and "Temperature Inside" are not fitting the received data (air flow in m3).

@LuiSauberhorn
Copy link
Author

Next turn; I tried to complete the file now and restructured it. Most stuff is working, however, I still struggle with three functions. They will follow once they are solved. Code is the following:

{
    "id":           "cwl",
    "vendor":       "Wolf",
    "label":        "Wolf CWL",
    "description":  "Wolf CWL 300/400",
    
    "authors":      ["Christian Sowada, opensource@cs-dev.de", "Lui Sauberhorn"],
    "identification": ["08 11 00 22 03"],

    "commands":
    [
        {
            "label":    "Software Version",
            "id":       "ac.status.software.version",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "00"}
                ],
                "slave": [
                    {"name": "cur", "type": "string", "label":"Current Version", "length":"13"}   
                ]
            }
        }

        ,{   
            "label":    "Fan Step Mode",
            "id":       "ac.status.fan.step",

            "get": {
                "command": "40 22",
                "master": [
                    {"type": "static", "default": "01"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}
                ]
            },

            "set": {
                "command": "40 a1",
                "master": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 3, "step": 1, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Fan Rotation In",
            "id":       "ac.status.fanrotation.in",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "02"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "format":"%drpm"}   
                ]
            }
        }
        
        ,{
            "label":    "Fan Rotation Out",
            "id":       "ac.status.fanrotation.out",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "03"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "format":"%drpm"}   
                ]
            }
        }

        ,{
            "label":    "Position Dip Switch",
            "id":       "ac.status.dipswitch.onoff",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "04"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}   
                ]
            }
        }

        ,{
            "label":    "Position Switch",
            "id":       "ac.status.stepswitch.onoff",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "06"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}   
                ]
            }
        }

        ,{
            "label":    "Temperature Inside",
            "id":       "ac.status.temp.inside",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "07"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 1, "max": 60, "format":"%.1f°C"}   
                ]
            }
        }
        
        ,{
            "label":    "Temperature Outside",
            "id":       "ac.status.temp.outside",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "08"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": -60, "max": 100, "format":"%.1f°C"}   
                ]
            }
        }
        
        ,{
            "label":    "Expected Air Volume In",
            "id":       "ac.status.volume.in",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "09"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 400, "format":"%dm³/h"}   
                ]
            }
        }
        
        ,{
            "label":    "Expected Air Volume Out",
            "id":       "ac.status.volume.out",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0a"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 400, "format":"%dm³/h"}   
                ]
            }
        }

        ,{
            "label":    "Air Flow In",
            "id":       "ac.status.airflow.in",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0b"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1000, "format":"%4dm³/h"}   
                ]
            }
        }

        ,{
            "label":    "Air Flow Out",
            "id":       "ac.status.airflow.out",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0c"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1000, "format":"%dm³/h"}   
                ]
            }
        }

        ,{
            "label":    "ByPass Volume",
            "id":       "ac.status.bypass.volume",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0D"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 400, "format":"%dm³/h"}
                ]
            }
        }

        ,{
            "label":    "ByPass Status",
            "id":       "ac.status.bypass.status",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0E"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 5, "format":"%d",
                        "mapping": {
                            "0": "Initialize", "1": "Opening", "2": "Closing", "3": "Open", "4": "Closed", "5": "Error"
                        }
                    }
                ]
            }
        }

        ,{
            "label":    "Preheater Status",
            "id":       "ac.status.preheater.onoff",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0F"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0":"Initialize", "1": "Disabled", "2": "Enabled"
                        }
                    }
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "31"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "off", "1": "on"
                        }
                    }   
                ]
            }
        }

        ,{
            "label":    "Preheater Power",
            "id":       "ac.status.preheater.power",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "10"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Fan Status",
            "id":       "ac.status.fan.status",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "11"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 4, "step": 1,  "format":"%d",
                        "mapping": {
                            "0": "Initialize", "1": "Const. Flow", "2": "Const. RPM", "3": "Off", "4": "Error"
                        }
                    }   
                ]
            }
        }

        ,{
            "label": "Air Pressure In",
            "id": "ac.status.airpressure.in",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "14"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 0, "max": 10000, "format":"%.1fPa"}   
                ]
            }
        }

        ,{
            "label": "Air Pressure Out",
            "id": "ac.status.airpressure.out",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "15"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 0, "max": 10000, "format":"%.1fPa"}   
                ]
            }
        }

        ,{
            "label":    "Filter Status",
            "id":       "ac.status.filter.state",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "18"}
                ],
                "slave": [
                    {"name": "dirty", "type": "uint", "label":"Filter Dirty", "reverseByteOrder": true, "min": 0, "max": 1, "format":"%d"}
                ]
            },

            "set": {
                "command": "40 91",
                "master": [
                    {"type": "static", "default": "7c 01 00"},
                    {"name": "cur", "type": "uint", "label":"Reset Filter", "reverseByteOrder": true, "min": 0, "max": 5, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "ResetNotRequested", "1": "ResetSuccessful", "2": "ResetRelayed", "3": "FilterWarningWasNotSet", "4": "ResetFailed", "5": "UnknownResult"
                        }
                    }   
                ]
            }
        }

        ,{
            "label":    "Postheater Status",
            "id":       "ac.status.postheater.onoff",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "1d"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0":"Initialize", "1": "Disabled", "2": "Enabled"
                        }
                    }
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "32"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "off", "1": "on"
                        }
                    }   
                ]
            }
        }

        ,{
            "label":    "Postheater Power",
            "id":       "ac.status.postheater.power",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "1e"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Humidity",
            "id":       "ac.status.humidity.value",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "20"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 0, "max": 100, "step": 0.1, "format":"%.1f%"}
                ]
            }
        }

        ,{
            "label":    "Humidity Change",
            "id":       "ac.status.humidity.change",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "21"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 7, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "Error", "1": "Not Initialized", "2": "Sensor Not Active", "3": "PowerUp Delay", "4": "Normal RH", "5": "Boost Rising", "6": "Boost Stable", "7": "Boost Decending"
                        }
                    }
                ]
            }
        }

        ,{   
            "label":    "Fan Step 0",
            "id":       "ac.config.fan.step.0",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "21"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
                ]
            },
            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "21"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 50, "step": 50, "format":"%4dm³/h"}   
                ]
            }
        }

        ,{   
            "label":    "Fan Step 1",
            "id":       "ac.config.fan.step.1",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "01"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "01"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }

        }

        ,{   
            "label":    "Fan Step 2",
            "id":       "ac.config.fan.step.2",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "02"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "02"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }
        }

        ,{   
            "label":    "Fan Step 3",
            "id":       "ac.config.fan.step.3",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "03"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
               ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "03"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }
        }
                
        ,{
            "label":    "ByPass Config Temperature",
            "id":       "ac.config.bypass.temp",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "04"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "04"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 15, "max": 35, "step": 0.5, "format":"%.1f°C"}   
                ]
            }
        }

        ,{
            "label":    "Zentralheizung Config",
            "id":       "ac.config.centralheater.onoff",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "07"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "Off", "1": "On"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Config Inbalance allowed",
            "id":       "ac.config.misc.inbalance.allowed",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "08"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "Not allowed", "1": "Allowed"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Config Inbalance",
            "id":       "ac.config.misc.inbalance",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "09"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Current Value", "reverseByteOrder": true, "min": -100, "max": 100, "step": 1, "format":"%dm³/h"},
                    {"name": "min", "type": "int", "label":"Minimum", "reverseByteOrder": true, "format":"%dm³/h"},
                    {"name": "max", "type": "int", "label":"Maximum", "reverseByteOrder": true, "format":"%dm³/h"},
                    {"name": "ste", "type": "int", "label":"Step", "reverseByteOrder": true, "format":"%dm³/h"},
                    {"name": "fac", "type": "int", "label":"Factory Default", "reverseByteOrder": true, "format":"%dm³/h"}
                ]
            }
        }

        ,{
            "label":    "ByPass Config Mode",
            "id":       "ac.config.bypass.mode",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "1b"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "1b"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 2, "step": 1, "format":"%d"}   
                ]
            }
        }

        ,{
            "label":    "Filter, Air Volume Threshold",
            "id":       "ac.filter.volume.threshold",
            "command": "40 50",

            "get": {
                "master": [
                    {"type": "static", "default": "1c"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"}
                ]
            }
        }

        ,{
            "label":    "Config RH Sensor Sensitivity",
            "id":       "ac.config.misc.displaylight",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "1d"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 100, "step": 5, "format":"%d"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "ByPass Config Hysterese",
            "id":       "ac.config.bypass.hyst",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "30"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "30"},
                    {"name": "cur", "type": "uint", "label":"Bypass Hysterese", "reverseByteOrder": true, "factor": 0.1, "min": 0, "max": 5, "step": 0.5, "format":"%.1f°C"}   
                ]
            }
        }

        ,{
            "label":    "NOT WORKING - Config Preheater Exists",
            "id":       "ac.config.misc.preheater",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "31"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "no", "1": "yes"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "NOT WORKING - Config Postheater Exists",
            "id":       "ac.config.misc.postheater",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "32"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "no", "1": "yes"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Filter, Days in Use",
            "id":       "ac.filter.days",
            "command":  "40 50",

            "get": {
                "master": [
                    {"type": "static", "default": "22"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Filter, Air Volume in Use",
            "id":       "ac.filter.volume.inuse",
            "command":  "40 50",

            "get": {
                "master": [
                    {"type": "static", "default": "23"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"}
               ]
            }
        }

        ,{   
            "label":    "System, Hours in use",
            "id":       "ac.system.hours",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "24"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%dh"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%dh"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%dh"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%dh"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%dh"}
                ]
            }
        }

        ,{
            "label":    "System, Air Volume in Use",
            "id":       "ac.system.volume.inuse",
            "command": "40 50",

            "get": {
                "master": [
                    {"type": "static", "default": "25"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"}
                ]
            }
        }

        ,{
            "label":    "Config RH Sensor Exists",
            "id":       "ac.config.misc.rhsensor.exists",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "32"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "no", "1": "yes"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Config RH Sensor Sensitivity",
            "id":       "ac.config.misc.rhsensor.sensitivity",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "33"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Current Value", "reverseByteOrder": true, "min": -2, "max": 2, "step": 1, "format":"%d"},
                    {"name": "min", "type": "int", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "int", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "int", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "int", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "NOT WORKING - Errors",
            "id":       "ac.status.errors",
            "command": "40 90",

            "get": {
                "master": [
                    {"type": "static", "default": "00"}
                ],
                "slave": [
                    {"name": "ec00", "type": "uchar", "label":"Error Code 00", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec01", "type": "uchar", "label":"Error Code 01", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec02", "type": "uchar", "label":"Error Code 02", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec03", "type": "uchar", "label":"Error Code 03", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec04", "type": "uchar", "label":"Error Code 04", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec05", "type": "uchar", "label":"Error Code 05", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec06", "type": "uchar", "label":"Error Code 06", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec07", "type": "uchar", "label":"Error Code 07", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec08", "type": "uchar", "label":"Error Code 08", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec09", "type": "uchar", "label":"Error Code 09", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec10", "type": "uchar", "label":"Error Code 10", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec11", "type": "uchar", "label":"Error Code 04", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec12", "type": "uchar", "label":"Error Code 05", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec13", "type": "uchar", "label":"Error Code 06", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec14", "type": "uchar", "label":"Error Code 07", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec15", "type": "uchar", "label":"Error Code 08", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec16", "type": "uchar", "label":"Error Code 09", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec17", "type": "uchar", "label":"Error Code 10", "reverseByteOrder": true, "format":"%d"}
                ]
            },

            "set": {
                "command": "40 91",
                "master": [
                    {"type": "static", "default": "7c 00 01"},
                    {"name": "cur", "type": "uint", "label":"Reset Errors", "reverseByteOrder": true, "min": 0, "max": 6, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "ResetNotRequested", "1": "ResetSuccessful", "2": "ResetRelayed", "3": "NoErrorsFound", "4": "ResetFailed", "5": "BlockingErrors", "6": "UnknownResult"
                        }
                    }   
                ]
            }
        }
    ]
}

@LuiSauberhorn
Copy link
Author

Hi csowada,

I finally finalized my work on that config file. I did some minor adjustments. I still struggle with some non-working functions but I will leave them out for now. Non-working functions are clearly marked.

Best, Lui

  {
    "id":           "cwl",
    "vendor":       "Wolf",
    "label":        "Wolf CWL",
    "description":  "Wolf CWL 300/400",
    
    "authors":      ["Christian Sowada, opensource@cs-dev.de", "Lui Sauberhorn"],
    "identification": ["08 11 00 22 03"],

    "commands":
    [
        {
            "label":    "Software Version",
            "id":       "ac.status.software.version",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "00"}
                ],
                "slave": [
                    {"name": "cur", "type": "string", "label":"Current Version", "length":"13"}   
                ]
            }
        }

        ,{   
            "label":    "Fan Step Mode",
            "id":       "ac.status.fan.step",

            "get": {
                "command": "40 22",
                "master": [
                    {"type": "static", "default": "01"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}
                ]
            },

            "set": {
                "command": "40 a1",
                "master": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 3, "step": 1, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Fan Rotation In",
            "id":       "ac.status.fanrotation.in",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "02"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "format":"%drpm"}   
                ]
            }
        }
        
        ,{
            "label":    "Fan Rotation Out",
            "id":       "ac.status.fanrotation.out",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "03"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "format":"%drpm"}   
                ]
            }
        }

        ,{
            "label":    "Position Dip Switch",
            "id":       "ac.status.dipswitch.onoff",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "04"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}   
                ]
            }
        }

        ,{
            "label":    "Position Switch",
            "id":       "ac.status.stepswitch.onoff",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "06"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}   
                ]
            }
        }

        ,{
            "label":    "Temperature Inside",
            "id":       "ac.status.temp.inside",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "07"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 1, "max": 60, "format":"%.1f°C"}   
                ]
            }
        }
        
        ,{
            "label":    "Temperature Outside",
            "id":       "ac.status.temp.outside",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "08"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": -60, "max": 100, "format":"%.1f°C"}   
                ]
            }
        }
        
        ,{
            "label":    "Expected Air Volume In",
            "id":       "ac.status.volume.in",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "09"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 400, "format":"%dm³/h"}   
                ]
            }
        }
        
        ,{
            "label":    "Expected Air Volume Out",
            "id":       "ac.status.volume.out",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0a"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 400, "format":"%dm³/h"}   
                ]
            }
        }

        ,{
            "label":    "Air Flow In",
            "id":       "ac.status.airflow.in",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0b"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1000, "format":"%4dm³/h"}   
                ]
            }
        }

        ,{
            "label":    "Air Flow Out",
            "id":       "ac.status.airflow.out",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0c"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1000, "format":"%dm³/h"}   
                ]
            }
        }

        ,{
            "label":    "ByPass Volume",
            "id":       "ac.status.bypass.volume",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0D"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 400, "format":"%dm³/h"}
                ]
            }
        }

        ,{
            "label":    "ByPass Status",
            "id":       "ac.status.bypass.state",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0E"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 5, "format":"%d",
                        "mapping": {
                            "0": "Initialize", "1": "Opening", "2": "Closing", "3": "Open", "4": "Closed", "5": "Error"
                        }
                    }
                ]
            }
        }

        ,{
            "label":    "Preheater Status",
            "id":       "ac.status.preheater.onoff",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "0F"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0":"Initialize", "1": "Disabled", "2": "Enabled"
                        }
                    }
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "31"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "off", "1": "on"
                        }
                    }   
                ]
            }
        }

        ,{
            "label":    "Preheater Power",
            "id":       "ac.status.preheater.power",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "10"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Fan Status",
            "id":       "ac.status.fan.state",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "11"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 4, "step": 1,  "format":"%d",
                        "mapping": {
                            "0": "Initialize", "1": "Const. Flow", "2": "Const. RPM", "3": "Off", "4": "Error"
                        }
                    }   
                ]
            }
        }

        ,{
            "label": "Air Pressure In",
            "id": "ac.status.airpressure.in",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "14"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 0, "max": 10000, "format":"%.1fPa"}   
                ]
            }
        }

        ,{
            "label": "Air Pressure Out",
            "id": "ac.status.airpressure.out",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "15"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 0, "max": 10000, "format":"%.1fPa"}   
                ]
            }
        }

        ,{
            "label":    "Filter Status",
            "id":       "ac.status.filter.state",

            "get": {
                "command": "40 22",
                "master": [
                    {"type": "static", "default": "18"}
                ],
                "slave": [
                    {"name": "dirty", "type": "uint", "label":"Filter Dirty", "reverseByteOrder": true, "min": 0, "max": 1, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Postheater Status",
            "id":       "ac.status.postheater.onoff",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "1d"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0":"Initialize", "1": "Disabled", "2": "Enabled"
                        }
                    }
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "32"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "off", "1": "on"
                        }
                    }   
                ]
            }
        }

        ,{
            "label":    "Postheater Power",
            "id":       "ac.status.postheater.power",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "1e"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Humidity",
            "id":       "ac.status.humidity.value",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "20"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 0, "max": 100, "step": 0.1, "format":"%.1f%"}
                ]
            }
        }

        ,{
            "label":    "Humidity Change",
            "id":       "ac.status.humidity.change",
            "command": "40 22",

            "get": {
                "master": [
                    {"type": "static", "default": "21"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 7, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "Error", "1": "Not Initialized", "2": "Sensor Not Active", "3": "PowerUp Delay", "4": "Normal RH", "5": "Boost Rising", "6": "Boost Stable", "7": "Boost Decending"
                        }
                    }
                ]
            }
        }

        ,{   
            "label":    "Fan Step 0",
            "id":       "ac.config.fan.step.0",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "21"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
                ]
            },
            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "21"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 50, "step": 50, "format":"%4dm³/h"}   
                ]
            }
        }

        ,{   
            "label":    "Fan Step 1",
            "id":       "ac.config.fan.step.1",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "01"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "01"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }

        }

        ,{   
            "label":    "Fan Step 2",
            "id":       "ac.config.fan.step.2",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "02"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "02"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }
        }

        ,{   
            "label":    "Fan Step 3",
            "id":       "ac.config.fan.step.3",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "03"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
            ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "03"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 50, "max": 400, "step": 5, "format":"%4dm³/h"}   
                ]
            }
        }
                
        ,{
            "label":    "ByPass Config Temperature",
            "id":       "ac.config.bypass.temp",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "04"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "stp", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%4dm³/h"},   
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%4dm³/h"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "04"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "min": 15, "max": 35, "step": 0.5, "format":"%.1f°C"}   
                ]
            }
        }

        ,{
            "label":    "Zentralheizung Config",
            "id":       "ac.config.centralheater.onoff",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "07"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "Off", "1": "On"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Config Inbalance allowed",
            "id":       "ac.config.misc.inbalance.allowed",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "08"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "Not allowed", "1": "Allowed"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Config Inbalance",
            "id":       "ac.config.misc.inbalance",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "09"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Current Value", "reverseByteOrder": true, "min": -100, "max": 100, "step": 1, "format":"%dm³/h"},
                    {"name": "min", "type": "int", "label":"Minimum", "reverseByteOrder": true, "format":"%dm³/h"},
                    {"name": "max", "type": "int", "label":"Maximum", "reverseByteOrder": true, "format":"%dm³/h"},
                    {"name": "ste", "type": "int", "label":"Step", "reverseByteOrder": true, "format":"%dm³/h"},
                    {"name": "fac", "type": "int", "label":"Factory Default", "reverseByteOrder": true, "format":"%dm³/h"}
                ]
            }
        }

        ,{
            "label":    "ByPass Config Mode",
            "id":       "ac.config.bypass.mode",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "1b"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "1b"},
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 2, "step": 1, "format":"%d"}   
                ]
            }
        }

        ,{
            "label":    "Filter, Air Volume Threshold",
            "id":       "ac.filter.volume.threshold",
            "command": "40 50",

            "get": {
                "master": [
                    {"type": "static", "default": "1c"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"}
                ]
            }
        }

        ,{
            "label":    "Config RH Sensor Sensitivity",
            "id":       "ac.config.misc.displaylight",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "1d"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 100, "step": 5, "format":"%d"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "ByPass Config Hysterese",
            "id":       "ac.config.bypass.hyst",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "30"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "factor": 0.1, "format":"%.1f°C"}
                ]
            },

            "set": {
                "command": "40 80",
                "master": [
                    {"type": "static", "default": "30"},
                    {"name": "cur", "type": "uint", "label":"Bypass Hysterese", "reverseByteOrder": true, "factor": 0.1, "min": 0, "max": 5, "step": 0.5, "format":"%.1f°C"}   
                ]
            }
        }

        ,{
            "label":    "NOT WORKING - Config Preheater Exists",
            "id":       "ac.config.misc.preheater",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "31"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "no", "1": "yes"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "NOT WORKING - Config Postheater Exists",
            "id":       "ac.config.misc.postheater",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "32"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "no", "1": "yes"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Filter, Days in Use",
            "id":       "ac.filter.inuse.days",
            "command":  "40 50",

            "get": {
                "master": [
                    {"type": "static", "default": "22"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%d"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Filter, Air Volume in Use",
            "id":       "ac.filter.inuse.volume",
            "command":  "40 50",

            "get": {
                "master": [
                    {"type": "static", "default": "23"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"}
            ]
            }
        }

        ,{   
            "label":    "System, Hours in use",
            "id":       "ac.system.inuse.hours",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "24"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "format":"%dh"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%dh"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%dh"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%dh"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%dh"}
                ]
            }
        }

        ,{
            "label":    "System, Air Volume in Use",
            "id":       "ac.system.inuse.volume",
            "command": "40 50",

            "get": {
                "master": [
                    {"type": "static", "default": "25"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "factor": 1000, "format":"%dm³"}
                ]
            }
        }

        ,{
            "label":    "Config RH Sensor Exists",
            "id":       "ac.config.misc.rhsensor.exists",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "32"}
                ],
                "slave": [
                    {"name": "cur", "type": "uint", "label":"Current Value", "reverseByteOrder": true, "min": 0, "max": 1, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "no", "1": "yes"
                        }
                    },
                    {"name": "min", "type": "uint", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "uint", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "uint", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "uint", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "Config RH Sensor Sensitivity",
            "id":       "ac.config.misc.rhsensor.sensitivity",

            "get": {
                "command": "40 50",
                "master": [
                    {"type": "static", "default": "33"}
                ],
                "slave": [
                    {"name": "cur", "type": "int", "label":"Current Value", "reverseByteOrder": true, "min": -2, "max": 2, "step": 1, "format":"%d"},
                    {"name": "min", "type": "int", "label":"Minimum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "max", "type": "int", "label":"Maximum", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ste", "type": "int", "label":"Step", "reverseByteOrder": true, "format":"%d"},
                    {"name": "fac", "type": "int", "label":"Factory Default", "reverseByteOrder": true, "format":"%d"}
                ]
            }
        }

        ,{
            "label":    "NOT WORKING - Errors",
            "id":       "ac.status.errors",
            "command": "40 90",

            "get": {
                "master": [
                    {"type": "static", "default": "00"}
                ],
                "slave": [
                    {"name": "ec00", "type": "uchar", "label":"Error Code 00", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec01", "type": "uchar", "label":"Error Code 01", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec02", "type": "uchar", "label":"Error Code 02", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec03", "type": "uchar", "label":"Error Code 03", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec04", "type": "uchar", "label":"Error Code 04", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec05", "type": "uchar", "label":"Error Code 05", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec06", "type": "uchar", "label":"Error Code 06", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec07", "type": "uchar", "label":"Error Code 07", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec08", "type": "uchar", "label":"Error Code 08", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec09", "type": "uchar", "label":"Error Code 09", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec10", "type": "uchar", "label":"Error Code 10", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec11", "type": "uchar", "label":"Error Code 04", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec12", "type": "uchar", "label":"Error Code 05", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec13", "type": "uchar", "label":"Error Code 06", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec14", "type": "uchar", "label":"Error Code 07", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec15", "type": "uchar", "label":"Error Code 08", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec16", "type": "uchar", "label":"Error Code 09", "reverseByteOrder": true, "format":"%d"},
                    {"name": "ec17", "type": "uchar", "label":"Error Code 10", "reverseByteOrder": true, "format":"%d"}
                ]
            },

            "set": {
                "command": "40 91",
                "master": [
                    {"type": "static", "default": "7c 00 01"},
                    {"name": "cur", "type": "uint", "label":"Reset Errors", "reverseByteOrder": true, "min": 0, "max": 6, "step": 1, "format":"%d",
                        "mapping": {
                            "0": "ResetNotRequested", "1": "ResetSuccessful", "2": "ResetRelayed", "3": "NoErrorsFound", "4": "ResetFailed", "5": "BlockingErrors", "6": "UnknownResult"
                        }
                    }   
                ]
            }
        },

        {
            "label":    "NOT WORKING - Filter Reset",
            "id":       "ac.status.filter.reset",
            "command": "40 91",

            "set": {
                "master": [
                    {"name": "reset", "type": "static", "default": "FF 01 00", "label":"Reset Filter", "reverseByteOrder": true}
                ]
            }
        }
    ]
}

@pvyleta
Copy link

pvyleta commented Mar 27, 2024

Hey @LuiSauberhorn @csowada . I have the Renovent Sky300 unit and was playing around a bit with it with ebusd and Home Assistant. What you might be interested in knowing is that I was able to extract a lot of parameters from Brink Service Tool (my work can be found here) and even though my files are not directly usable for openhab, one piece of information is useful: Iwas ableto make the Reset Filter notifications to work by sending '00 01 00' instead of 'ff 01 00' and similarly to reset errors you should be able to do so by sending '00 00 01' instead of '7c 00 01'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants