robertklep / nefit-easy-http-server

HTTP server to access Nefit/Bosch XMPP backend over HTTP
MIT License
39 stars 16 forks source link

Nefit Enviline heatpump #32

Open marcews opened 5 years ago

marcews commented 5 years ago

Did anyone have any luck with connecting to a Nefit Enviline heatpump? It looks as if the procedure is very much the same like connecting to the Nefit Easy but I am stuck at XMPP aythentication failure. Have tried every single combination of keys (from the label), prefixes etc etc.

robertklep commented 5 years ago

You could try this module. If you install it globally (npm install bosch-xmpp -g), it will install a command line tool that you can use to check if perhaps the "ivt" client works for your heat pump.

It also has a built-in bridge that works similar to the Easy HTTP server.

marcews commented 5 years ago

Thank you Robert for the quick response. Tried that already with result: Unhandled rejection XMPP authentication failure. Am struggling with the 3 codes on the label. Am guessing that XXX-XXXXXXXXX-XXXXXXXXXX is the serial, Loginname = access-key (XXXXXXXXX) and Passwort = password (XXXX-XXXX-XXXX-XXXX). Loginname is identical to the middle part of serial. Or is password the password for the app (app is working fine)

robertklep commented 5 years ago

Speaking for the Nefit Easy: the serial number is 9 digits, the access key is 16 alphanumerical characters, and password I can't remember (but should be setable from the app).

At least for the serial number and access key, hyphens (-) should be removed. The serial number and access key are the only values that are used in the XMPP authentication, the password is used to decrypt the data that is sent by the device.

marcews commented 5 years ago

Yep, found and tried these comments before. Is there any way to test that at least all other parameters are correct and it really fails at the xmpp auth of login an serial or is the error 100% clear that is that is is one or both credentials that fail?

robertklep commented 5 years ago

You can run with debug logging enabled:

env DEBUG=* bosch-xmpp --serial=XXX --access-key=YYY --password=ZZZ nefit get /ecus/rrc/uiStatus

But I'm fairly sure that if it says "XMPP authentication error", it's just that, and either the serial and/or access key aren't correct, or it's using a completely different authentication scheme.

Which (mobile) app do you use to control the heat pump?

marcews commented 5 years ago

Nefit ProControl. With packet capture it looks like communication is the same....

Already did try debug. See file response (keys removed, do not know if that is neccesary).

response.txt

I send you a PM by email as well.

marcews commented 4 years ago

Meanwhile I got this running and can read a lot of endpoints that are the same as gas heatees. but I am missing a lot of heatpump particular endpoints. Did you ever come across more info on heatpump particular endpoints?

robertklep commented 4 years ago

@marcews I extracted this list from the Nefit app:

[
  "/application/tbso/electricity/tariffID",
  "/application/tbso/enable",
  "/dhwCircuits",
  "/dhwCircuits/dhw1",
  "/dhwCircuits/dhw1/actualTemp",
  "/dhwCircuits/dhw1/charge",
  "/dhwCircuits/dhw1/chargeDuration",
  "/dhwCircuits/dhw1/currentSetpoint",
  "/dhwCircuits/dhw1/operationMode",
  "/dhwCircuits/dhw1/singleChargeSetpoint",
  "/dhwCircuits/dhw1/status",
  "/dhwCircuits/dhw1/switchPrograms",
  "/dhwCircuits/dhw1/switchPrograms/A",
  "/dhwCircuits/dhw1/temperatureLevels",
  "/dhwCircuits/dhw1/temperatureLevels/high",
  "/dhwCircuits/dhw1/temperatureLevels/low",
  "/dhwCircuits/dhw1/temperatureLevels/off",
  "/dhwCircuits/dhw1/waterFlow",
  "/dhwCircuits/dhw1/workingTime",
  "/gateway",
  "/gateway/DateTime",
  "/gateway/firmware",
  "/gateway/haiPassword",
  "/gateway/instAccess",
  "/gateway/instPassword",
  "/gateway/instWriteAccess",
  "/gateway/userpassword",
  "/gateway/uuid",
  "/gateway/versionFirmware",
  "/gateway/versionHardware",
  "/gservice_tariff/relativePrice/1?interval=2015-02-18",
  "/gservice_tariff/relativePrice/1?interval=2015-02-18T00:00:00/2015-02-18T23:59:59&sample-rate=P1H&recording-type=actual",
  "/gservice_tariff/tariff",
  "/gservice_tariff/tariff/SE",
  "/gservice_tariff/tariff/SE/Nordpool",
  "/gservice_tariff/tariff/SE/Nordpool/SEK",
  "/gservice_tariff/tariff/SE/Nordpool/SEK/SE1",
  "/gservice_tariff/tariffinfo/1",
  "/heatSources",
  "/heatSources/CHpumpModulation",
  "/heatSources/ChimneySweeper",
  "/heatSources/actualCHPower",
  "/heatSources/actualDHWPower",
  "/heatSources/actualModulation",
  "/heatSources/actualPower",
  "/heatSources/actualSupplyTemperature",
  "/heatSources/burnerModulationSetpoint",
  "/heatSources/burnerPowerSetpoint",
  "/heatSources/fanSpeed_setpoint",
  "/heatSources/flameCurrent",
  "/heatSources/flameStatus",
  "/heatSources/hs1",
  "/heatSources/hs1/CHpumpModulation",
  "/heatSources/hs1/actualCHPower",
  "/heatSources/hs1/actualDHWPower",
  "/heatSources/hs1/actualModulation",
  "/heatSources/hs1/actualPower",
  "/heatSources/hs1/energyReservoir",
  "/heatSources/hs1/flameStatus",
  "/heatSources/hs1/fuel",
  "/heatSources/hs1/fuel/caloricValue",
  "/heatSources/hs1/fuel/density",
  "/heatSources/hs1/fuelConsmptCorrFactor",
  "/heatSources/hs1/nominalCHPower",
  "/heatSources/hs1/nominalDHWPower",
  "/heatSources/hs1/nominalFuelConsumption",
  "/heatSources/hs1/numberOfStarts",
  "/heatSources/hs1/reservoirAlert",
  "/heatSources/hs1/supplyTemperatureSetpoint",
  "/heatSources/hs1/type",
  "/heatSources/nominalCHPower",
  "/heatSources/nominalDHWPower",
  "/heatSources/numberOfStarts",
  "/heatSources/powerSetpoint",
  "/heatSources/returnTemperature",
  "/heatSources/supplyTemperatureSetpoint",
  "/heatSources/systemPressure",
  "/heatSources/workingTime",
  "/heatSources/workingTime/centralHeating",
  "/heatSources/workingTime/secondBurner",
  "/heatSources/workingTime/totalSystem",
  "/heatingCircuits",
  "/heatingCircuits/hc1",
  "/heatingCircuits/hc1/activeSwitchProgram",
  "/heatingCircuits/hc1/actualSupplyTemperature",
  "/heatingCircuits/hc1/controlType",
  "/heatingCircuits/hc1/currentOpModeInfo",
  "/heatingCircuits/hc1/currentRoomSetpoint",
  "/heatingCircuits/hc1/designTemp",
  "/heatingCircuits/hc1/heatCurveMax",
  "/heatingCircuits/hc1/heatCurveMin",
  "/heatingCircuits/hc1/manualRoomSetpoint",
  "/heatingCircuits/hc1/operationMode",
  "/heatingCircuits/hc1/pumpModulation",
  "/heatingCircuits/hc1/roomInfluence",
  "/heatingCircuits/hc1/roomTempOffset",
  "/heatingCircuits/hc1/roomtemperature",
  "/heatingCircuits/hc1/setpointOptimization",
  "/heatingCircuits/hc1/solarInfluence",
  "/heatingCircuits/hc1/status",
  "/heatingCircuits/hc1/switchPrograms",
  "/heatingCircuits/hc1/switchPrograms/A",
  "/heatingCircuits/hc1/switchPrograms/B",
  "/heatingCircuits/hc1/temperatureLevels",
  "/heatingCircuits/hc1/temperatureLevels/comfort2",
  "/heatingCircuits/hc1/temperatureLevels/eco",
  "/heatingCircuits/hc1/temperatureRoomSetpoint",
  "/heatingCircuits/hc1/temporaryRoomSetpoint",
  "/heatingCircuits/hc2",
  "/heatingCircuits/hc2/activeSwitchProgram",
  "/heatingCircuits/hc2/actualSupplyTemperature",
  "/heatingCircuits/hc2/controlType",
  "/heatingCircuits/hc2/currentOpModeInfo",
  "/heatingCircuits/hc2/currentRoomSetpoint",
  "/heatingCircuits/hc2/designTemp",
  "/heatingCircuits/hc2/heatCurveMax",
  "/heatingCircuits/hc2/heatCurveMin",
  "/heatingCircuits/hc2/manualRoomSetpoint",
  "/heatingCircuits/hc2/operationMode",
  "/heatingCircuits/hc2/pumpModulation",
  "/heatingCircuits/hc2/roomInfluence",
  "/heatingCircuits/hc2/roomTempOffset",
  "/heatingCircuits/hc2/roomtemperature",
  "/heatingCircuits/hc2/setpointOptimization",
  "/heatingCircuits/hc2/solarInfluence",
  "/heatingCircuits/hc2/status",
  "/heatingCircuits/hc2/switchPrograms",
  "/heatingCircuits/hc2/switchPrograms/A",
  "/heatingCircuits/hc2/switchPrograms/B",
  "/heatingCircuits/hc2/temperatureLevels",
  "/heatingCircuits/hc2/temperatureLevels/comfort2",
  "/heatingCircuits/hc2/temperatureLevels/eco",
  "/heatingCircuits/hc2/temperatureRoomSetpoint",
  "/heatingCircuits/hc2/temporaryRoomSetpoint",
  "/heatingCircuits/hc3",
  "/heatingCircuits/hc3/activeSwitchProgram",
  "/heatingCircuits/hc3/actualSupplyTemperature",
  "/heatingCircuits/hc3/controlType",
  "/heatingCircuits/hc3/currentOpModeInfo",
  "/heatingCircuits/hc3/currentRoomSetpoint",
  "/heatingCircuits/hc3/designTemp",
  "/heatingCircuits/hc3/heatCurveMax",
  "/heatingCircuits/hc3/heatCurveMin",
  "/heatingCircuits/hc3/manualRoomSetpoint",
  "/heatingCircuits/hc3/operationMode",
  "/heatingCircuits/hc3/pumpModulation",
  "/heatingCircuits/hc3/roomInfluence",
  "/heatingCircuits/hc3/roomTempOffset",
  "/heatingCircuits/hc3/roomtemperature",
  "/heatingCircuits/hc3/setpointOptimization",
  "/heatingCircuits/hc3/solarInfluence",
  "/heatingCircuits/hc3/status",
  "/heatingCircuits/hc3/switchPrograms",
  "/heatingCircuits/hc3/switchPrograms/A",
  "/heatingCircuits/hc3/switchPrograms/B",
  "/heatingCircuits/hc3/temperatureLevels",
  "/heatingCircuits/hc3/temperatureLevels/comfort2",
  "/heatingCircuits/hc3/temperatureLevels/eco",
  "/heatingCircuits/hc3/temperatureRoomSetpoint",
  "/heatingCircuits/hc3/temporaryRoomSetpoint",
  "/notifications",
  "/recordings",
  "/recordings/heatSources",
  "/recordings/heatSources/actualCHPower",
  "/recordings/heatSources/actualCHPower?interval=2015-02",
  "/recordings/heatSources/actualCHPower?interval=2015-02-18",
  "/recordings/heatSources/actualCHPower?interval=2015-W8",
  "/recordings/heatSources/actualDHWPower",
  "/recordings/heatSources/actualDHWPower?interval=2015-02",
  "/recordings/heatSources/actualDHWPower?interval=2015-02-18",
  "/recordings/heatSources/actualDHWPower?interval=2015-W8",
  "/recordings/heatSources/actualPower",
  "/recordings/heatSources/actualPower?interval=2015-02",
  "/recordings/heatSources/actualPower?interval=2015-02-18",
  "/recordings/heatSources/actualPower?interval=2015-W8",
  "/recordings/heatSources/hs1",
  "/recordings/heatSources/hs1/actualPower",
  "/recordings/heatSources/hs1/actualPower?interval=2015-02",
  "/recordings/heatSources/hs1/actualPower?interval=2015-02-18",
  "/recordings/heatSources/hs1/actualPower?interval=2015-W8",
  "/recordings/heatingCircuits",
  "/recordings/heatingCircuits/hc1",
  "/recordings/heatingCircuits/hc1/roomtemperature",
  "/recordings/heatingCircuits/hc1/roomtemperature?interval=2015-02",
  "/recordings/heatingCircuits/hc1/roomtemperature?interval=2015-02-18",
  "/recordings/heatingCircuits/hc1/roomtemperature?interval=2015-W8",
  "/recordings/heatingCircuits/hc2",
  "/recordings/heatingCircuits/hc2/roomtemperature",
  "/recordings/heatingCircuits/hc2/roomtemperature?interval=2015-02",
  "/recordings/heatingCircuits/hc2/roomtemperature?interval=2015-W8",
  "/recordings/heatingCircuits/hc3",
  "/recordings/heatingCircuits/hc3/roomtemperature",
  "/recordings/heatingCircuits/hc3/roomtemperature?interval=2015-02-18",
  "/recordings/heatingCircuits/hc3/roomtemperature?interval=2015-W8",
  "/recordings/solarCircuits",
  "/recordings/solarCircuits/sc1",
  "/recordings/solarCircuits/sc1/solarYield",
  "/recordings/solarCircuits/sc1/solarYield?interval=2015-02",
  "/recordings/solarCircuits/sc1/solarYield?interval=2015-02-18",
  "/recordings/solarCircuits/sc1/solarYield?interval=2015-W8",
  "/recordings/system",
  "/recordings/system/heatSources",
  "/recordings/system/heatSources/hs1",
  "/recordings/system/heatSources/hs1/actualPower",
  "/recordings/system/heatSources/hs1/actualPower?interval=2015-02",
  "/recordings/system/heatSources/hs1/actualPower?interval=2015-02-18",
  "/recordings/system/heatSources/hs1/actualPower?interval=2015-W8",
  "/recordings/system/sensors",
  "/recordings/system/sensors/temperatures",
  "/recordings/system/sensors/temperatures/outdoor_t1",
  "/recordings/system/sensors/temperatures/outdoor_t1?interval=2015-02",
  "/recordings/system/sensors/temperatures/outdoor_t1?interval=2015-02-18",
  "/recordings/system/sensors/temperatures/outdoor_t1?interval=2015-W8",
  "/solarCircuits",
  "/solarCircuits/sc1",
  "/solarCircuits/sc1/actuatorStatus",
  "/solarCircuits/sc1/collectorTemperature",
  "/solarCircuits/sc1/dhwTankTemperature",
  "/solarCircuits/sc1/pumpModulation",
  "/solarCircuits/sc1/solarYield",
  "/solarCircuits/sc1/status",
  "/system",
  "/system/appliance",
  "/system/appliance/CHpumpModulation",
  "/system/appliance/ChimneySweeper",
  "/system/appliance/actualPower",
  "/system/appliance/actualSupplyTemperature",
  "/system/appliance/fanSpeed_setpoint",
  "/system/appliance/flameCurrent",
  "/system/appliance/nominalBurnerLoad",
  "/system/appliance/numberOfStarts",
  "/system/appliance/powerSetpoint",
  "/system/appliance/systemPressure",
  "/system/appliance/workingTime",
  "/system/appliance/workingTime/centralHeating",
  "/system/appliance/workingTime/secondBurner",
  "/system/appliance/workingTime/totalSystem",
  "/system/brand",
  "/system/bus",
  "/system/healthStatus",
  "/system/heatSources",
  "/system/heatSources/hs1",
  "/system/heatSources/hs1/actualModulation",
  "/system/heatSources/hs1/actualPower",
  "/system/heatSources/hs1/energyReservoir",
  "/system/heatSources/hs1/fuel",
  "/system/heatSources/hs1/fuel/caloricValue",
  "/system/heatSources/hs1/fuel/density",
  "/system/heatSources/hs1/fuelConsmptCorrFactor",
  "/system/heatSources/hs1/nominalFuelConsumption",
  "/system/heatSources/hs1/reservoirAlert",
  "/system/holidayModes",
  "/system/holidayModes/hm1",
  "/system/holidayModes/hm1/assignedTo",
  "/system/holidayModes/hm1/delete",
  "/system/holidayModes/hm1/dhwMode",
  "/system/holidayModes/hm1/hcMode",
  "/system/holidayModes/hm1/startStop",
  "/system/holidayModes/hm2",
  "/system/holidayModes/hm2/assignedTo",
  "/system/holidayModes/hm2/delete",
  "/system/holidayModes/hm2/dhwMode",
  "/system/holidayModes/hm2/hcMode",
  "/system/holidayModes/hm2/startStop",
  "/system/holidayModes/hm3",
  "/system/holidayModes/hm3/assignedTo",
  "/system/holidayModes/hm3/delete",
  "/system/holidayModes/hm3/dhwMode",
  "/system/holidayModes/hm3/hcMode",
  "/system/holidayModes/hm3/startStop",
  "/system/holidayModes/hm4",
  "/system/holidayModes/hm4/assignedTo",
  "/system/holidayModes/hm4/delete",
  "/system/holidayModes/hm4/dhwMode",
  "/system/holidayModes/hm4/hcMode",
  "/system/holidayModes/hm4/startStop",
  "/system/holidayModes/hm5",
  "/system/holidayModes/hm5/assignedTo",
  "/system/holidayModes/hm5/delete",
  "/system/holidayModes/hm5/dhwMode",
  "/system/holidayModes/hm5/hcMode",
  "/system/holidayModes/hm5/startStop",
  "/system/info",
  "/system/minOutdoorTemp",
  "/system/sensors",
  "/system/sensors/temperatures",
  "/system/sensors/temperatures/outdoor_t1",
  "/system/sensors/temperatures/return",
  "/system/sensors/temperatures/supply_t1",
  "/system/sensors/temperatures/supply_t1_setpoint",
  "/system/sensors/temperatures/switch",
  "/system/systemType"
]
marcews commented 4 years ago

Thx Robert but this does not give me new (working) endpoints. Did you see the new Nefit Easy service app? That seems to do the trick but I think you need an (expensive) subscription to use it....

robertklep commented 4 years ago

I don't have that app, or know how to get it :(