reinhard-brandstaedter / solarflow-control

A tool to automatically control Zendure's Solarflow hub with more flexibility to match home power demand
70 stars 12 forks source link

HUB2K support (config error) #191

Closed mavo closed 6 months ago

mavo commented 6 months ago

Hi @reinhard-brandstaedter,

today my hub2k did arrive, and ofc I installed it asap. So, its now running, I can see data in the sf-app on my smartphone and I disconnected it from the cloud using BT manager. I can see a small amount of messages in mqtt explorer, however, the control-app seems to have no idea.

2024-04-05 10:35:58,597:INFO: MQTT User is not set, assuming authentication not needed
2024-04-05 10:35:58,597:INFO: Solarflow Hub: A8yh63/ETFTke36
2024-04-05 10:35:58,598:INFO: Limit via inverter: True
2024-04-05 10:35:58,598:INFO: Control Parameters:
2024-04-05 10:35:58,598:INFO:   MIN_CHARGE_POWER = 100
2024-04-05 10:35:58,598:INFO:   MAX_DISCHARGE_LEVEL = 800
2024-04-05 10:35:58,598:INFO:   MAX_INVERTER_LIMIT = 700
2024-04-05 10:35:58,598:INFO:   MAX_INVERTER_INPUT = 800
2024-04-05 10:35:58,598:INFO:   SUNRISE_OFFSET = 60
2024-04-05 10:35:58,598:INFO:   SUNSET_OFFSET = 60
2024-04-05 10:35:58,803:INFO: Using AhoyDTU: Base topic: ahoydtu, Limit topic: ahoydtu/ctrl/limit/0, SF Channels: [3, 4]
2024-04-05 10:35:58,803:INFO: Using ShellyEM3: Base topic: shellies/shellyem3
2024-04-05 10:35:58,803:INFO: Connected to MQTT Broker!
2024-04-05 10:35:58,803:INFO: Hub subscribing: /A8yh63/ETFTke36/properties/report
2024-04-05 10:35:58,803:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/solarInputPower
2024-04-05 10:35:58,803:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/electricLevel
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/outputPackPower
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/packInputPower
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/outputHomePower
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/outputLimit
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/inverseMaxPower
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/masterSoftVersion
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/pass
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/batteries/+/socLevel
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/telemetry/batteries/+/totalVol
2024-04-05 10:35:58,804:INFO: Hub subscribing: solarflow-hub/ETFTke36/control/#
2024-04-05 10:35:58,805:INFO: DTU subscribing: ahoydtu/HM-1600/+/P_DC
2024-04-05 10:35:58,805:INFO: DTU subscribing: ahoydtu/HM-1600/ch0/P_AC
2024-04-05 10:35:58,805:INFO: DTU subscribing: ahoydtu/HM-1600/ch0/active_PowerLimit
2024-04-05 10:35:58,805:INFO: DTU subscribing: ahoydtu/status
2024-04-05 10:35:58,805:INFO: DTU subscribing: solarflow-hub/+/control/dryRun
2024-04-05 10:35:58,805:INFO: Shelly3EM subscribing: shellies/shellyem3/emeter/0/power
2024-04-05 10:35:58,805:INFO: Shelly3EM subscribing: shellies/shellyem3/emeter/1/power
2024-04-05 10:35:58,805:INFO: Shelly3EM subscribing: shellies/shellyem3/emeter/2/power
2024-04-05 10:35:59,070:INFO: HUB: S:-1.0W [ ], B: -1% (-1), V:-1.0V (-1.0), C: 0W, P:False, F:-1.0h, E:-1.0h, H: -1W, L: -1W
2024-04-05 10:35:59,070:INFO: INV: AC:438.9W, AC_Prediction: 438.9W, DC:462.1W, DC_prediction: 462.1W (), L: 0W [1600W]
2024-04-05 10:35:59,070:INFO: SMT: T:ShellyEM3 P:51.6W [ 51.6 ] Predict: 51.6W
2024-04-05 10:35:59,071:INFO: Rapid drop in demand detected, clearing buffer!
2024-04-05 10:35:59,071:INFO: Rate limit on trigger function, last call was only 0.0s ago!
2024-04-05 10:36:00,887:INFO: DTU triggers limit function: 462.1 : 0
2024-04-05 10:36:00,887:INFO: Rate limit on trigger function, last call was only 1.8s ago!
2024-04-05 10:36:58,805:INFO: Triggering telemetry update: iot/A8yh63/ETFTke36/properties/read
2024-04-05 10:37:08,914:INFO: SMT triggers limit function: -6.2 -> -72.8
2024-04-05 10:37:08,914:INFO: HUB: S:-1.0W [ ], B: -1% (-1), V:-1.0V (-1.0), C: 0W, P:False, F:-1.0h, E:-1.0h, H: -1W, L: -1W
2024-04-05 10:37:08,918:INFO: INV: AC:437.5W, AC_Prediction: 437.5W, DC:460.7W, DC_prediction: 460.7W (0.1|0.1|234.0|227.9), L: 0W [1600W]
2024-04-05 10:37:08,920:INFO: SMT: T:ShellyEM3 P:53.9W [ -116.0,-109.7,-126.8,-128.5,-125.6,-123.8,-6.2 ] Predict: -72.8W

I found how to set the product_id in the config file and did it. I also additionally had to modify the solarflow.py file in the container, as it contains the hard coded prod-id of the smaller hub.

However, I cannot see much more + the app is currently not working. What data can I provide you to help me find the mistake I made? 😇 This is what mqtt explorer puts out atm. image

EDIT - output from bt-manager -i command:

python3 solarflow-bt-manager.py -i
2024-04-05 12:03:07,779:INFO: Found device: 94:C9:60:AD:EE:F9: ZenH1_26
2024-04-05 12:03:10,967:INFO: Services:
2024-04-05 12:03:10,968:INFO: 00112233-4455-6677-8899-aabbccddeeff (Handle: 18): Unknown
2024-04-05 12:03:10,968:INFO: 0000a002-0000-1000-8000-00805f9b34fb (Handle: 12): Vendor specific
2024-04-05 12:03:10,968:INFO: 00001801-0000-1000-8000-00805f9b34fb (Handle: 1): Generic Attribute Profile
2024-04-05 12:03:10,989:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1120, 'outputPackPower': 765, 'outputHomePower': 314}}
2024-04-05 12:03:11,449:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 539, 'solarPower1': 581}}
2024-04-05 12:03:11,669:INFO: {'method': 'read_reply', 'deviceId': 'ETFTke36', 'success': 1, 'properties': {'getAll': 1}}
2024-04-05 12:03:11,810:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'packNum': 2}, 'packData': [{'sn': 'CO4HLKYLM601288'}, {'sn': 'CO4HLHALKP05056'}]}
2024-04-05 12:03:11,989:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'masterSwitch': 1, 'electricLevel': 99, 'wifiState': 0}}
2024-04-05 12:03:12,210:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'buzzerSwitch': 1, 'socSet': 1000, 'solarInputPower': 1114}}
2024-04-05 12:03:12,409:INFO: {'messageId': '123', 'method': 'error', 'deviceId': 'ETFTke36', 'timestamp': 2256460, 'offData': 1, 'data': []}
2024-04-05 12:03:12,490:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'packInputPower': 0, 'outputPackPower': 756, 'outputHomePower': 317}}
2024-04-05 12:03:12,729:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'outputLimit': 800, 'inputLimit': 0, 'remainOutTime': 59940}}
2024-04-05 12:03:12,829:INFO: {'deviceId': 'ETFTke36', 'method': 'BLESPP'}
2024-04-05 12:03:13,069:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'remainInputTime': 59940, 'packState': 1, 'hubState': 0}}
2024-04-05 12:03:13,130:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'masterSoftVersion': 12296, 'masterhaerVersion': 0, 'inputMode': 0}}
2024-04-05 12:03:13,309:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'blueOta': 1, 'pvBrand': 1, 'pass': 0}}
2024-04-05 12:03:13,710:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'minSoc': 100, 'inverseMaxPower': 800, 'autoModel': 0}}
2024-04-05 12:03:13,729:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'gridPower': 0, 'smartMode': 0, 'smartPower': 0}}
2024-04-05 12:03:14,030:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'passMode': 0, 'autoRecover': 1, 'solarPower2': 533}}
2024-04-05 12:03:14,190:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower1': 571, 'heatState': 0}, 'packData': [{'power': 479, 'sn': 'CO4HLKYLM601288'}]}
2024-04-05 12:03:14,370:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1100, 'outputPackPower': 737, 'outputHomePower': 323}}
2024-04-05 12:03:14,610:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 529}, 'packData': [{'socLevel': 99, 'state': 1, 'sn': 'CO4HLKYLM601288'}]}
2024-04-05 12:03:14,790:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {}, 'packData': [{'maxTemp': 2891, 'totalVol': 5050, 'maxVol': 337, 'sn': 'CO4HLKYLM601288'}]}
2024-04-05 12:03:15,150:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {}, 'packData': [{'minVol': 336, 'softVersion': 4104, 'sn': 'CO4HLKYLM601288'}]}
2024-04-05 12:03:15,209:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1091, 'outputPackPower': 726, 'outputHomePower': 326}}
2024-04-05 12:03:15,530:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 525, 'solarPower1': 566}, 'packData': [{'power': 433, 'sn': 'CO4HLHALKP05056'}]}
2024-04-05 12:03:15,690:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {}, 'packData': [{'socLevel': 99, 'state': 1, 'maxTemp': 2891, 'sn': 'CO4HLHALKP05056'}]}
2024-04-05 12:03:15,870:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {}, 'packData': [{'totalVol': 5040, 'maxVol': 336, 'minVol': 336, 'sn': 'CO4HLHALKP05056'}]}
2024-04-05 12:03:16,070:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {}, 'packData': [{'softVersion': 4104, 'sn': 'CO4HLHALKP05056'}]}
2024-04-05 12:03:16,290:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1085, 'outputPackPower': 717, 'outputHomePower': 329}}
2024-04-05 12:03:16,529:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 522, 'solarPower1': 563}}
2024-04-05 12:03:16,771:INFO: {'messageId': '123', 'method': 'getInfo-rsp', 'deviceId': 'ETFTke36', 'timestamp': 2256464, 'deviceSn': 'HO1HLMJMAP01026', 'firmwares': [{'type': 'MASTER', 'version': 12296}, {'type': 'BMS', 'version': -1}, {'type': 'BMS_AB2000', 'version': 4104}]}
2024-04-05 12:03:16,771:INFO: The SF device ID is: ETFTke36
2024-04-05 12:03:16,772:INFO: The SF device SN is: HO1HLMJMAP01026
2024-04-05 12:03:17,350:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1077, 'outputPackPower': 708, 'outputHomePower': 331}}
2024-04-05 12:03:17,529:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 518, 'solarPower1': 559}}
2024-04-05 12:03:18,390:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1071, 'outputPackPower': 699, 'outputHomePower': 334}}
2024-04-05 12:03:18,549:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 516, 'solarPower1': 555}}
2024-04-05 12:03:19,410:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1067, 'outputPackPower': 693, 'outputHomePower': 336}}
2024-04-05 12:03:19,589:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 514, 'solarPower1': 553}}
2024-04-05 12:03:20,510:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1063, 'outputPackPower': 687, 'outputHomePower': 339}}
2024-04-05 12:03:20,609:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 512, 'solarPower1': 551}}
2024-04-05 12:03:21,430:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1062, 'outputPackPower': 684, 'outputHomePower': 341}}
2024-04-05 12:03:21,609:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 511}}
2024-04-05 12:03:22,450:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'outputPackPower': 682, 'outputHomePower': 343}}
2024-04-05 12:03:23,450:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'outputPackPower': 680, 'outputHomePower': 345}}
2024-04-05 12:03:24,450:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1064, 'outputPackPower': 679, 'outputHomePower': 348}}
2024-04-05 12:03:24,650:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 512, 'solarPower1': 552}}
2024-04-05 12:03:25,550:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1067, 'outputHomePower': 351, 'solarPower2': 513}}
2024-04-05 12:03:25,669:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower1': 554}}
2024-04-05 12:03:26,530:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1071, 'outputPackPower': 681, 'outputHomePower': 353}}
2024-04-05 12:03:26,690:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 515, 'solarPower1': 556}}
2024-04-05 12:03:27,530:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1075, 'outputPackPower': 683, 'outputHomePower': 355}}
2024-04-05 12:03:27,730:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 517, 'solarPower1': 558}}
2024-04-05 12:03:28,550:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1079, 'outputPackPower': 684, 'outputHomePower': 358}}
2024-04-05 12:03:28,850:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 519, 'solarPower1': 560}}
2024-04-05 12:03:29,590:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1083, 'outputPackPower': 686, 'outputHomePower': 360}}
2024-04-05 12:03:29,790:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 521, 'solarPower1': 562}}
2024-04-05 12:03:30,571:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarInputPower': 1087, 'outputPackPower': 687, 'outputHomePower': 363}}
2024-04-05 12:03:30,810:INFO: {'method': 'report', 'deviceId': 'ETFTke36', 'properties': {'solarPower2': 523, 'solarPower1': 564}}

MaVo

mavo commented 6 months ago

Firmware update fixed it 🎉

olomberg commented 6 months ago

HI mavo. Can you please share the firmware versions, you are on. I am on v3.0.8 (Master) and v1.0.9 (BMS). Thanks.

mavo commented 6 months ago

Hi @olomberg.

Me2, same version. Do you have issues?

I summarized the changes I did to make it work #192

olomberg commented 6 months ago

HI @mavo. No. Works as expected so far. Only the official Zendure MQTT-API sucks. But I found a way to work around it.

Newbie-2 commented 6 months ago

Hallo mavo, gibt es schon eine Lösung um nach der Trennung vom Zendure Server die Daten des HUB-2000 per MQTT zB. im MQTT-Explorer zu empfangen ?

Bei mir hat zwar die Trennung geklappt, aber ich bekomme keine Daten ? grafik

Siehe auch Issue im BT-Manager https://github.com/reinhard-brandstaedter/solarflow-bt-manager/issues/12

Ich nutze den Zendure HUB-2000 mit der letzte Firmware Version V3.0.10

mavo commented 6 months ago

Hi @Newbie-2, After I did the firmware update to 3.xx it just worked. Did you check if you have a queue named solarflow-hub in your mqtt explorer?

As said, after doing the update it just worked. I did nothing more to the queue config, only changing properties to use hub2 in the app.

MaVo