Making progress in getting data locally via BLE. The WiFi interface is pretty much locked down if its not connected to the cloud. I snooped the BLE traffic from the H2D app to an Esybox. There is a ton of data, and its not a clean solution. Services/characteristics/handles are kinda botched, but it works - had to guess the hierarchy. I think BLE is handled on the pump by an ESP32 MCU, with some other CPU running linux behind it. Data is not presented directly as characteristics - rather you query a characteristic as a REST API and it spits the JSON response back on another characteristic (in chunks of course,) and its really picky on sequence. The app itself polls the REST API every 5-10 seconds, keeping the connection alive (it times out after about 20 minutes - irrespective of what the icons on the screen say.) Hacking this up as a ESPHome YAML, usable soon for others to hack away on.
The pump does some pretty nutty things, like send an entire gzipped parameter definition file as a base64 encoded stream over the REST API over BLE…sliced and diced 4 times 
I love Italians…
[18:00:22.548][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":2,"b":"\":0,\"SP_SetpointPressureBar\":35,\"SP_SetpointPressurePsi\":\"h\",\"PK_LowPressureThresholdBar\":\"h\",\"PK_LowPressureThresholdPsi\":\"h\",\"RP_PressureFa"}
[18:00:22.548][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":2,"b":"\":0,\"SP_SetpointPressureBar\":35,\"SP_SetpointPressurePsi\":\"h\",\"PK_LowPressureThresholdBar\":\"h\",\"PK_LowPressureThresholdPsi\":\"h\",\"RP_PressureFa"}'
[18:00:22.552][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.556][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.560][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":3,"b":"llToRestartBar\":4,\"RP_PressureFallToRestartPsi\":\"h\",\"RM_MaximumSpeed\":3050,\"ET_ExchangeTime\":7200,\"PW_ModifyPassword\":0,\"NC_ActiveContemporaryInv"}
[18:00:22.564][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":3,"b":"llToRestartBar\":4,\"RP_PressureFallToRestartPsi\":\"h\",\"RM_MaximumSpeed\":3050,\"ET_ExchangeTime\":7200,\"PW_ModifyPassword\":0,\"NC_ActiveContemporaryInv"}'
[18:00:22.569][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.573][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.577][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":4,"b":"erters\":0,\"IC_InverterConfig\":1,\"MS_MeasureSystem\":0,\"LA_Language\":1,\"TB_DryRunDetectTime\":15,\"T1_LowPressureDelay\":\"h\",\"EK_LowPressEnable\":\""}
[18:00:22.581][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":4,"b":"erters\":0,\"IC_InverterConfig\":1,\"MS_MeasureSystem\":0,\"LA_Language\":1,\"TB_DryRunDetectTime\":15,\"T1_LowPressureDelay\":\"h\",\"EK_LowPressEnable\":\""}'
[18:00:22.586][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.590][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.594][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":5,"b":"h\",\"T2_SwitchOffDelay\":10,\"GP_ProportionalGainRigidPlant\":5,\"GI_IntegralGainRigidPlant\":11,\"GP_ProportionalGainElasticPlant\":\"h\",\"GI_IntegralGain"}
[18:00:22.598][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":5,"b":"h\",\"T2_SwitchOffDelay\":10,\"GP_ProportionalGainRigidPlant\":5,\"GI_IntegralGainRigidPlant\":11,\"GP_ProportionalGainElasticPlant\":\"h\",\"GI_IntegralGain"}'
[18:00:22.661][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.661][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.661][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":6,"b":"ElasticPlant\":\"h\",\"I1_Input1Function\":0,\"I2_Input2Function\":0,\"I3_Input3Function\":0,\"I4_Input4Function\":0,\"O1_Output1Function\":0,\"O2_Output2Fun"}
[18:00:22.661][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":6,"b":"ElasticPlant\":\"h\",\"I1_Input1Function\":0,\"I2_Input2Function\":0,\"I3_Input3Function\":0,\"I4_Input4Function\":0,\"O1_Output1Function\":0,\"O2_Output2Fun"}'
[18:00:22.661][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.661][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.661][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":7,"b":"ction\":0,\"OD_PlantType\":1,\"AY_AntiCycling\":2,\"AF_AntiFreeze\":1,\"AE_AntiLock\":1,\"PR_RemotePressureSensor\":0,\"PowerShowerBoost\":20,\"PowerShowerDu"}
[18:00:22.661][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":7,"b":"ction\":0,\"OD_PlantType\":1,\"AY_AntiCycling\":2,\"AF_AntiFreeze\":1,\"AE_AntiLock\":1,\"PR_RemotePressureSensor\":0,\"PowerShowerBoost\":20,\"PowerShowerDu"}'
[18:00:22.661][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.661][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.661][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":8,"b":"ration\":1800,\"SleepModeEnable\":0,\"SleepModeReduction\":30,\"SleepModeStartTime\":82800,\"SleepModeDuration\":25200,\"RiFiCoEnable\":0,\"ProductType\":110"}
[18:00:22.661][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":8,"b":"ration\":1800,\"SleepModeEnable\":0,\"SleepModeReduction\":30,\"SleepModeStartTime\":82800,\"SleepModeDuration\":25200,\"RiFiCoEnable\":0,\"ProductType\":110"}'
[18:00:22.665][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.668][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.671][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":9,"b":",\"LvVersion\":\"4.7.20.0:2\",\"ProductSerialNumber\":\"000000000000\",\"PumpStatus\":0,\"SystemStatus\":0,\"PowerShowerPressureBar\":42,\"PowerShowerPressur"}
[18:00:22.674][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":9,"b":",\"LvVersion\":\"4.7.20.0:2\",\"ProductSerialNumber\":\"000000000000\",\"PumpStatus\":0,\"SystemStatus\":0,\"PowerShowerPressureBar\":42,\"PowerShowerPressur"}'
[18:00:22.677][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.680][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.683][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":10,"b":"ePsi\":\"h\",\"SleepModePressureBar\":25,\"SleepModePressurePsi\":\"h\",\"HvVersion\":\"1.51.0.0:4\",\"RS_RotatingSpeed\":0,\"SV_SupplyVoltage\":236,\"SR_Su"}
[18:00:22.686][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":10,"b":"ePsi\":\"h\",\"SleepModePressureBar\":25,\"SleepModePressurePsi\":\"h\",\"HvVersion\":\"1.51.0.0:4\",\"RS_RotatingSpeed\":0,\"SV_SupplyVoltage\":236,\"SR_Su"}'
[18:00:22.689][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.691][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.694][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":11,"b":"pplyVoltageRange\":\"h\",\"TE_HeatsinkTemperatureC\":260,\"TE_HeatsinkTemperatureF\":\"h\",\"PO_OutputPower\":0,\"C1_PumpPhaseCurrent\":0,\"Error1\":0,\"Err"}
[18:00:22.697][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":11,"b":"pplyVoltageRange\":\"h\",\"TE_HeatsinkTemperatureC\":260,\"TE_HeatsinkTemperatureF\":\"h\",\"PO_OutputPower\":0,\"C1_PumpPhaseCurrent\":0,\"Error1\":0,\"Err"}'
[18:00:22.700][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.703][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.706][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":12,"b":"orTime1\":0,\"Error2\":0,\"ErrorTime2\":0,\"Error3\":0,\"ErrorTime3\":0,\"Error4\":0,\"ErrorTime4\":0,\"Error5\":0,\"ErrorTime5\":0,\"Error6\":0,\"ErrorTime"}
[18:00:22.708][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":12,"b":"orTime1\":0,\"Error2\":0,\"ErrorTime2\":0,\"Error3\":0,\"ErrorTime3\":0,\"Error4\":0,\"ErrorTime4\":0,\"Error5\":0,\"ErrorTime5\":0,\"Error6\":0,\"ErrorTime"}'
[18:00:22.712][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.714][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.717][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":13,"b":"6\":0,\"Error7\":0,\"ErrorTime7\":0,\"Error8\":0,\"ErrorTime8\":0,\"VP_PressureBar\":47,\"VP_PressurePsi\":\"h\",\"PKm_SuctionPressureBar\":\"h\",\"PKm_Suct"}
[18:00:22.720][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":13,"b":"6\":0,\"Error7\":0,\"ErrorTime7\":0,\"Error8\":0,\"ErrorTime8\":0,\"VP_PressureBar\":47,\"VP_PressurePsi\":\"h\",\"PKm_SuctionPressureBar\":\"h\",\"PKm_Suct"}'
[18:00:22.723][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.726][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.729][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":14,"b":"ionPressurePsi\":\"h\",\"VF_FlowLiter\":0,\"VF_FlowGall\":\"h\",\"HO_PowerOnHours\":\"h\",\"SO_PowerOnSeconds\":169437,\"StartNumber\":20,\"HO_PumpRunHours"}
[18:00:22.731][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":14,"b":"ionPressurePsi\":\"h\",\"VF_FlowLiter\":0,\"VF_FlowGall\":\"h\",\"HO_PowerOnHours\":\"h\",\"SO_PowerOnSeconds\":169437,\"StartNumber\":20,\"HO_PumpRunHours"}'
[18:00:22.734][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.737][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.740][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":15,"b":"\":\"h\",\"SO_PumpRunSeconds\":36763,\"FCt_Total_Delivered_Flow_mc\":20396,\"FCt_Total_Delivered_Flow_Gall\":\"h\",\"FCp_Partial_Delivered_Flow_mc\":20396,"}
[18:00:22.743][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":15,"b":"\":\"h\",\"SO_PumpRunSeconds\":36763,\"FCt_Total_Delivered_Flow_mc\":20396,\"FCt_Total_Delivered_Flow_Gall\":\"h\",\"FCp_Partial_Delivered_Flow_mc\":20396,"}'
[18:00:22.747][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.749][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.752][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":16,"b":"\"FCp_Partial_Delivered_Flow_Gall\":\"h\",\"Actual_Period_Flow_Counter\":20299,\"Actual_Period_Flow_Counter_Gall\":\"h\",\"Last_Period_Flow_Counter\":0,\"La"}
[18:00:22.755][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":16,"b":"\"FCp_Partial_Delivered_Flow_Gall\":\"h\",\"Actual_Period_Flow_Counter\":20299,\"Actual_Period_Flow_Counter_Gall\":\"h\",\"Last_Period_Flow_Counter\":0,\"La"}'
[18:00:22.758][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.761][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.763][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":17,"b":"st_Period_Flow_Counter_Gall\":\"h\",\"Actual_Period_Energy_Counter\":13,\"Last_Period_Energy_Counter\":0,\"PartialEnergy\":13,\"TotalEnergy\":13,\"Saving\":"}
[18:00:22.766][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":17,"b":"st_Period_Flow_Counter_Gall\":\"h\",\"Actual_Period_Energy_Counter\":13,\"Last_Period_Energy_Counter\":0,\"PartialEnergy\":13,\"TotalEnergy\":13,\"Saving\":"}'
[18:00:22.769][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.772][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.775][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":18,"b":"85,\"ErasePartialFlowCounter\":0,\"ErasePartialEnergyCounter\":0,\"GroupName\":\"h\",\"GroupPower\":\"h\",\"RunningPumpsNumber\":\"h\",\"FaultPumpsNumber\":"}
[18:00:22.778][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":18,"b":"85,\"ErasePartialFlowCounter\":0,\"ErasePartialEnergyCounter\":0,\"GroupName\":\"h\",\"GroupPower\":\"h\",\"RunningPumpsNumber\":\"h\",\"FaultPumpsNumber\":"}'
[18:00:22.781][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.783][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.786][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":19,"b":"\"h\",\"InverterPresentNumber\":\"h\",\"InverterOnlineNumber\":\"h\",\"ActiveInverterNumber\":\"h\",\"ContemporaryInverterNumber\":\"h\",\"GroupFlowLiter\":"}
[18:00:22.789][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":19,"b":"\"h\",\"InverterPresentNumber\":\"h\",\"InverterOnlineNumber\":\"h\",\"ActiveInverterNumber\":\"h\",\"ContemporaryInverterNumber\":\"h\",\"GroupFlowLiter\":"}'
[18:00:22.792][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.795][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.797][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":20,"b":"\"h\",\"GroupFlowGall\":\"h\",\"PressureTarget\":0,\"CpuLoad\":100,\"RamUsed\":371124,\"RamUsedMax\":373996,\"IdentifyDevice\":0,\"PowerShowerCommand\":0,\""}
[18:00:22.800][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":20,"b":"\"h\",\"GroupFlowGall\":\"h\",\"PressureTarget\":0,\"CpuLoad\":100,\"RamUsed\":371124,\"RamUsedMax\":373996,\"IdentifyDevice\":0,\"PowerShowerCommand\":0,\""}'
[18:00:22.803][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.806][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.809][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":21,"b":"PumpDisable\":0,\"RF_EraseHistoricalFault\":0,\"ResetActualFault\":0,\"FactoryDefault\":0,\"PowerShowerCountdown\":\"h\",\"SleepModeCountdown\":\"h\",\"RiFi"}
[18:00:22.812][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":21,"b":"PumpDisable\":0,\"RF_EraseHistoricalFault\":0,\"ResetActualFault\":0,\"FactoryDefault\":0,\"PowerShowerCountdown\":\"h\",\"SleepModeCountdown\":\"h\",\"RiFi"}'
[18:00:22.815][V][esp32_ble_client:289]: [0] [04:83:08:45:A3:1A] gattc_event_handler: event=10 gattc_if=3
[18:00:22.818][V][esp32_ble_client:220]: [0] [04:83:08:45:A3:1A] ESP_GATTC_NOTIFY_EVT
[18:00:22.820][V][text_sensor:037]: 'BLE Data 2': Received new state {"k":1,"s":22,"b":"CoState\":\"h\",\"RiFiCoTemperature\":\"h\",\"RiFiCoUmidity\":\"h\",\"UpTime\":169333,\"LatestError\":0,\"PLMCode\":\"h\",\"LostConnectionCounter\":0}}"}
[18:00:22.823][V][text_sensor:108]: 'BLE Data 2' >> '{"k":1,"s":22,"b":"CoState\":\"h\",\"RiFiCoTemperature\":\"h\",\"RiFiCoUmidity\":\"h\",\"UpTime\":169333,\"LatestError\":0,\"PLMCode\":\"h\",\"LostConnectionCounter\":0}}"}'