sHedC / python-masterthermconnect

MasterTherm HeatPump API
MIT License
3 stars 2 forks source link

More registers, and added pool and solar #22

Closed SeBsZ closed 1 year ago

SeBsZ commented 1 year ago

I have added some more registers. Each HC has a 'pad'. For most hcs this has only a requested temperature setting (setpoint), but for hc0 it should also report a temperature and has an additional 'enabled' boolean. Also added pool and solar hcs. I'm thinking maybe we should move pool_heating into the pool hc? solar and pool don't have pads, so I didn't add the pad to 'HC_MAP'.

I don't have a pool or solar so I can give you sample data but it will all be disabled.

# HC0 is the main heating cooling circuit which is enabled if HC1 to HC6 are not used.
# HC1 to HC6 are optional heating and cooling circuits that may be installed
# Pool and Solar are special circuit
HC_MAP = {
    0: {"id": "hc0", "pad": "padz", "register": "D_182", "default": "Home"},
    1: {"id": "hc1", "pad": "pada", "register": "D_278", "default": ""},
    2: {"id": "hc2", "pad": "padb", "register": "D_436", "default": ""},
    3: {"id": "hc3", "pad": "padc", "register": "D_298", "default": ""},
    4: {"id": "hc4", "pad": "padd", "register": "D_307", "default": ""},
    5: {"id": "hc5", "pad": "pade", "register": "D_316", "default": ""},
    6: {"id": "hc6", "pad": "padf", "register": "D_326", "default": ""},
    7: {"id": "solar", "register": "D_433", "default": "Solar"},
    8: {"id": "pool", "register": "D_348", "default": "Pool"},
}

DEVICE_DATA_HCMAP = {
    "hc0": {
        "enabled": ["fixed", False],
        "name": ["string", []],  # hc0 does not have a name
        "on": ["bool", "A_210"],
        "ambient_temp": ["float", "A_211"],
        "ambient_requested": ["float", "A_210"],
        "pad": {
            "active": ["bool", "D_242"],
            "enabled": ["bool", "D_182"],
            "temp":  ["float", "A_190"],
            "temp_requested":  ["float", "A_191"],
        },
        "control_curve_heating": {
            "setpoint_a_outside": ["float", "A_35"],
            "setpoint_a_requested": ["float", "A_37"],
            "setpoint_b_outside": ["float", "A_36"],
            "setpoint_b_requested": ["float", "A_38"],
        },
        "control_curve_cooling": {
            "setpoint_a_outside": ["float", "A_47"],
            "setpoint_a_requested": ["float", "A_49"],
            "setpoint_b_outside": ["float", "A_48"],
            "setpoint_b_requested": ["float", "A_50"],
        },
    },
    "hc1": {
        "enabled": ["fixed", False],
        "name": [
            "string",
            ["I_211", "I_212", "I_213", "I_214", "I_215", "I_216"],
        ],
        "on": ["bool", "D_212"],
        "cooling": ["bool", "D_213"],
        "water_temp": ["float", "A_90"],
        "water_requested": ["float", "A_96"],
        "ambient_temp": ["float", "A_216"],
        "ambient_requested": ["float", "A_215"],
        "auto": ["int", "I_269"],
        "pad": {
            "active": ["bool", "D_245"],
            "temp_requested":  ["float", "A_219"],
        },
        "control_curve_heating": {
            "setpoint_a_outside": ["float", "A_101"],
            "setpoint_a_requested": ["float", "A_106"],
            "setpoint_b_outside": ["float", "A_102"],
            "setpoint_b_requested": ["float", "A_107"],
        },
        "control_curve_cooling": {
            "setpoint_a_outside": ["float", "A_314"],
            "setpoint_a_requested": ["float", "A_315"],
            "setpoint_b_outside": ["float", "A_316"],
            "setpoint_b_requested": ["float", "A_317"],
        },
    },
    "hc2": {
        "enabled": ["fixed", False],
        "name": [
            "string",
            ["I_221", "I_222", "I_223", "I_224", "I_225", "I_226"],
        ],
        "on": ["bool", "D_216"],
        "cooling": ["bool", "D_217"],
        "water_temp": ["float", "A_91"],
        "water_requested": ["float", "A_97"],
        "ambient_temp": ["float", "A_222"],
        "ambient_requested": ["float", "A_221"],
        "auto": ["int", "I_270"],
        "pad": {
            "active": ["bool", "D_248"],
            "temp_requested":  ["float", "A_225"],
        },
        "control_curve_heating": {
            "setpoint_a_outside": ["float", "A_108"],
            "setpoint_a_requested": ["float", "A_84"],
            "setpoint_b_outside": ["float", "A_109"],
            "setpoint_b_requested": ["float", "A_85"],
        },
        "control_curve_cooling": {
            "setpoint_a_outside": ["float", "A_330"],
            "setpoint_a_requested": ["float", "A_331"],
            "setpoint_b_outside": ["float", "A_332"],
            "setpoint_b_requested": ["float", "A_333"],
        },
    },
    "hc3": {
        "enabled": ["fixed", False],
        "name": [
            "string",
            ["I_231", "I_232", "I_233", "I_234", "I_235", "I_236"],
        ],
        "on": ["bool", "D_220"],
        "cooling": ["bool", "D_221"],
        "water_temp": ["float", "A_92"],
        "water_requested": ["float", "A_98"],
        "ambient_temp": ["float", "A_228"],
        "ambient_requested": ["float", "A_227"],
        "auto": ["int", "I_271"],
        "pad": {
            "active": ["bool", "D_251"],
            "temp_requested":  ["float", "A_231"],
        },
        "control_curve_heating": {
            "setpoint_a_outside": ["float", "A_108"],
            "setpoint_a_requested": ["float", "A_84"],
            "setpoint_b_outside": ["float", "A_109"],
            "setpoint_b_requested": ["float", "A_85"],
        },
        "control_curve_cooling": {
            "setpoint_a_outside": ["float", "A_346"],
            "setpoint_a_requested": ["float", "A_347"],
            "setpoint_b_outside": ["float", "A_348"],
            "setpoint_b_requested": ["float", "A_349"],
        },
    },
    "hc4": {
        "enabled": ["fixed", False],
        "name": [
            "string",
            ["I_241", "I_242", "I_243", "I_244", "I_245", "I_246"],
        ],
        "on": ["bool", "D_50"],
        "cooling": ["bool", "D_224"],
        "water_temp": ["float", "A_93"],
        "water_requested": ["float", "A_99"],
        "ambient_temp": ["float", "A_234"],
        "ambient_requested": ["float", "A_233"],
        "auto": ["int", "I_272"],
        "pad": {
            "active": ["bool", "D_254"],
            "temp_requested":  ["float", "A_238"],
        },
        "control_curve_heating": {
            "setpoint_a_outside": ["float", "A_122"],
            "setpoint_a_requested": ["float", "A_120"],
            "setpoint_b_outside": ["float", "A_88"],
            "setpoint_b_requested": ["float", "A_121"],
        },
        "control_curve_cooling": {
            "setpoint_a_outside": ["float", "A_362"],
            "setpoint_a_requested": ["float", "A_363"],
            "setpoint_b_outside": ["float", "A_364"],
            "setpoint_b_requested": ["float", "A_365"],
        },
    },
    "hc5": {
        "enabled": ["fixed", False],
        "name": [
            "string",
            ["I_251", "I_252", "I_253", "I_254", "I_255", "I_256"],
        ],
        "on": ["bool", "D_51"],
        "cooling": ["bool", "D_227"],
        "water_temp": ["float", "A_243"],
        "water_requested": ["float", "A_242"],
        "ambient_temp": ["float", "A_241"],
        "ambient_requested": ["float", "A_240"],
        "auto": ["int", "I_273"],
        "pad": {
            "active": ["bool", "D_257"],
            "temp_requested":  ["float", "A_247"],
        },
        "control_curve_heating": {
            "setpoint_a_outside": ["float", "A_387"],
            "setpoint_a_requested": ["float", "A_388"],
            "setpoint_b_outside": ["float", "A_389"],
            "setpoint_b_requested": ["float", "A_390"],
        },
        "control_curve_cooling": {
            "setpoint_a_outside": ["float", "A_379"],
            "setpoint_a_requested": ["float", "A_380"],
            "setpoint_b_outside": ["float", "A_381"],
            "setpoint_b_requested": ["float", "A_382"],
        },
    },
    "hc6": {
        "enabled": ["fixed", False],
        "name": [
            "string",
            ["I_261", "I_262", "I_263", "I_264", "I_265", "I_266"],
        ],
        "on": ["bool", "D_52"],
        "cooling": ["bool", "D_231"],
        "water_temp": ["float", "A_252"],
        "water_requested": ["float", "A_251"],
        "ambient_temp": ["float", "A_250"],
        "ambient_requested": ["float", "A_249"],
        "auto": ["int", "I_274"],
        "pad": {
            "active": ["bool", "D_259"],
            "temp_requested":  ["float", "A_277"],
        },
        "control_curve_heating": {
            "setpoint_a_outside": ["float", "A_401"],
            "setpoint_a_requested": ["float", "A_402"],
            "setpoint_b_outside": ["float", "A_403"],
            "setpoint_b_requested": ["float", "A_404"],
        },
        "control_curve_cooling": {
            "setpoint_a_outside": ["float", "A_405"],
            "setpoint_a_requested": ["float", "A_406"],
            "setpoint_b_outside": ["float", "A_407"],
            "setpoint_b_requested": ["float", "A_408"],
        },
    },
    "solar": {
        "enabled": ["fixed", False],
        "s1_temp": ["float", "A_258"],
        "s2_temp": ["float", "A_259"],
        "s3_temp": ["float", "A_260"],
    },
    "pool": {
        "enabled": ["fixed", False],
        "on": ["bool", "D_238"],
        "s1_temp": ["float", "A_262"],
        "temp_requested": ["float", "A_15"],
    }
}
SeBsZ commented 1 year ago

Hey,

did you forget about

7: {"id": "solar", "register": "D_433", "default": "Solar"},
8: {"id": "pool", "register": "D_348", "default": "Pool"},

in the HC_MAP ?

Oh it looks like you moved those to "enabled" in the "solar" and "pool". Is there a reason why you are doing them this way, unlike hc1-hc6?

sHedC commented 1 year ago

Yeh didn't need to use the HC map as pool and solar are just enabled or disabled where as HC 0 to 6 are dependant on each other and names.

Works fine as I did it 🙂