-
Notifications
You must be signed in to change notification settings - Fork 36
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
Smart Home Panels Support #26
Comments
The local API for the Smart Home Panel is Bluetooth only, and no TCP API is provided, so this integration cannot handle it. If you want to support it, you will have to develop EcoFlow integration for Bluetooth or EcoFlow integration for ESPHome separately. |
Hi, you can use Node-Red. What smart home panel do you like to use? |
Unfortunately I have never used Smart Home Panel myself. If you have an example of using it with NodeRed, please share it. |
Hi, if you have not yet used one I would recommend: https://www.openhasp.com All are working over a MQTT Broker, so you do not need Node Red for it unless you like to change some messages. |
@franki29 I think you've misunderstood the OP. The "Smart Home Panel" is another Ecoflow product, not a display device. See: https://www.ecoflow.com/us/smart-home-panel for reference. |
Oh sorry, yes I misunderstood. Sorry. |
Just wanted to add to this issue that, while I haven't done a full port scan on my Smart Home Panel, its details and control topics (as in, an MQTT topic) are populated in Ecoflow's MQTT server. So it does like like the Smart Home Panel offers more than just Bluetooth as a connection mechanism. |
It appears SHP data is available and settings can be controlled via public MQTT server @ mqtt.echoflow.com ... not certain how to obtain the keys/schema for SHP but it would appear there may be a way to integrate SHP similar to Delta Pro with the caveat of being dependent on a cloud server... |
Have you looked into this further or made any progress? I can't really help figure this out, but I would be happy to help test if it proceeded that far. Monitoring individual circuits isn't that important to me, but switching circuits between automatic and battery using HA automation would be amazing. The Ecoflow app is so limited in that respect. |
Currently access has been limited to beta testers. I have been selected as a beta tester. I have been able to switch automations on/off with a mqtt explorer app for windows. Unfortunately I have no experience developing for HA so trying to get things working in home assistant is going very slowly for me. |
This has been achieved for the Smart Home Panel using Ecoflow's MQTT servers but implementation is non-trivial. This all started here: v1ckxy/ecoflow-withoutflow#1 (comment) - which gives you an indication of where to be looking to do things. When configuring your mosquitto.conf file however, follow this recommended format from @Ne0-Hack3r: v1ckxy/ecoflow-withoutflow#1 (comment) since that provides a method of subscribing to the topics in a non-specific manner and allows easy configuration of your HA sensors and controls. I have slightly altered a PowerShell script I wrote to generate a suitable #Requires –Version 7
$useremail = '[user email address]' # Edit this
$password = '[user password]' # Edit this
# The normal use is Unicode encoding but must specify UTF8 instead.
$base64password = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($password))
$authObject = [PSCustomObject]@{
os = 'android'
scene = 'IOT_APP'
appVersion = '4.0.0.53'
osVersion = '13'
password = $base64password
oauth = @{
bundleId = 'com.ef.EcoFlow'
}
email = $useremail
userType = 'ECOFLOW'
}
$Result = Invoke-RestMethod -Method Post -Uri 'https://api.ecoflow.com/auth/login/' -ContentType 'application/json' -Body $($authObject | ConvertTo-Json) -ResponseHeadersVariable 'Headers' -StatusCodeVariable 'StatusCode'
$TokenString = ConvertTo-SecureString -AsPlainText -Force -String $Result.data.token
$certificateData = Invoke-RestMethod -Method Get -Uri 'https://api.ecoflow.com/iot-auth/app/certification' -ContentType 'application/json' -Authentication Bearer -Token $TokenString
Write-Host "Ecoflow User ID: $($Result.data.user.userId)"
<#
Write-Host "Certificate (MQTT) User: $($certificateData.data.certificateAccount)"
Write-Host "Certificate (MQTT) Password: $($certificateData.data.certificatePassword)"
Write-Host "URL: $($certificateData.data.url)"
Write-Host "Port: $($certificateData.data.port)"
Write-Host "Protocol: $($certificateData.data.protocol)"
#>
$SHPserial = Read-Host "Please enter the correct serial number of your smart home panel"
Write-Host "Example mosquitto.conf file:"
"
connection ecoflow-bridge
address $($certificateData.data.url):$($certificateData.data.port)
remote_username $($certificateData.data.certificateAccount)
remote_password $($certificateData.data.certificatePassword)
cleansession true
remote_clientid ANDROID_$([guid]::NewGuid().ToString().ToUpper())_$($Result.data.user.userId)
try_private true
bridge_insecure false
bridge_protocol_version mqttv311
bridge_tls_version tlsv1.2
bridge_cafile /etc/ssl/certs/ca-certificates.crt
# Smart Home Panel
topic """" in 0 ecoflow/SHP/data /app/device/property/$SHPserial
topic """" both 0 ecoflow/SHP/set /app/$($Result.data.user.userId)/$SHPserial/thing/property/set
" This basically describes how to configure mosquitto in HA to connect to Ecoflow's MQTT server to subscribe to the correct topics (and bring them to your HA MQTT server) such that you can configure sensors and other controls to act on and send actions to Ecoflow's MQTT server from HA, and have those actions happen on your SHP. There are lots of example YAML configurations for sensors in the same thread as above, including ones for SHP. @Ne0-Hack3r has a private Github repository where implementation is fairly well documented for SHP, but you would have to ask him for access of course. An example control for the circuit mode might look something like: mqtt:
binary_sensor:
- name: SHP Circuit 1 Auto
object_id: shp_circuit_1_auto
unique_id: shp_circuit_1_auto
state_topic: "ecoflow/SHP/data"
payload_on: "0"
payload_off: "1"
qos: 0
value_template: "{{ value_json.params.loadCmdChCtrlInfos[0].ctrlMode if value_json['params']['id'] == 2 else this.state }}"
sensor:
- name: SHP Circuit 1 State
object_id: shp_circuit_1_state
unique_id: shp_circuit_1_state
state_topic: "ecoflow/SHP/data"
qos: 0
value_template: "{{ value_json.params.loadCmdChCtrlInfos[0].ctrlSta if value_json['params']['id'] == 2 else this.state }}"
template:
- select:
- name: "SHP Circuit 1 Mode"
unique_id: shp_circuit_1_mode
state: >-
{% if is_state('binary_sensor.shp_circuit_1_auto','on') %}Auto
{% else %}
{% set i = int(states('sensor.shp_circuit_1_state')) %}
{% set o = {0:'Grid',1:'Battery',2:'Off'} %}
{{ o[i] if i in o.keys() }}
{% endif %}
options: "{{ ['Auto','Grid','Battery','Off'] }}"
icon: >-
{% set i = int(states('sensor.shp_circuit_1_state')) %}
{% set o = {0:'mdi:home-lightning-bolt-outline',1:'mdi:home-battery-outline',2:'mdi:home-off-outline'} %}
{{ o[i] if i in o.keys() }}
select_option:
- service: mqtt.publish
data:
topic: ecoflow/SHP/set
payload: >-
{% set i = option %}
{% set p = '{"from":"HA","id":"' %}
{% set s = '","moduleType":0,"operateType":"TCP","params":' %}
{% set id = 999900000+(range(10000,99999)|random) %}
{% set o = {
'Auto':'{"sta":0,"ctrlMode":0,"ch":0,"cmdSet":11,"id":16},"version":"1.0"}',
'Grid':'{"sta":0,"ctrlMode":1,"ch":0,"cmdSet":11,"id":16},"version":"1.0"}',
'Battery':'{"sta":1,"ctrlMode":1,"ch":0,"cmdSet":11,"id":16},"version":"1.0"}',
'Off':'{"sta":2,"ctrlMode":1,"ch":0,"cmdSet":11,"id":16},"version":"1.0"}'
}
%}
{% if i in o.keys() %}{{p}}{{id}}{{s}}{{o[i]}}{% endif %} |
@lwsrbrts Wow. Thanks for all this info and sample scripts. This is exactly what I need. I've got a lot to learn in order to implement this but it looks doable. |
@lwsrbrts I've been fighting with the MQTT bridge, your instructions allowed me to set it up. |
just for info... sorry if off topic. |
@lwsrbrts Warning! Stupid Question Ahead: I assume I'll be able to access the location using Samba. I'm running on a RPI 4 so don't think I can run Visual Studio and the File Editor seems to be limited to the config directory (unless that's where it goes). I've spent the last few weeks moving from Hubitat to HA and while I've learned a lot, I've got a very long way to go. Thanks. |
I think you need to activate custom configs first. In home assistant settings - device and services - supervisor - misqutto broker - visit - customize - set active to true. Make sure you go to supervisor, not misqutto on the same screen The file needs to go into \share\mosquito which you will need to create I have samba and visual code studio, either would work, but I'm running on a odroid |
Thanks @adampagot I followed your instructions and now have my mosquitto.conf file in the \share\mosquitto directory. Tomorrow I'll read through the referenced thread more thoroughly and try setting up a yaml file to access and maybe even control a circuit. Hopefully I'm able to piece this together as I'm coming into this with absolutely no prior MQTT knowledge. |
I'm now at the point where MQTT Explorer can see the Ecoflow SHP topic Just started editing my configuration.yaml file and now have access to tested SHP items. Lots of work ahead but this has been a good breakthrough for me. @Ne0-Hack3r Could I get access to your repo? |
All what follows assumes your HA MQTT broker is configured properly and is receiving messages in the correct topics. Instead of modifying your configuration.yaml file directly, add this to it instead. homeassistant:
packages: !include_dir_named packages Then download my YAML config gist for the Smart Home Panel from: https://gist.github.com/lwsrbrts/8d6a77b4306f284cd193635e5722ffcd Some of the data access methods and set controls in the config were determined by @Ne0-Hack3r so I won't take credit for those. Create a folder in the same location as your Then place the gist file as a From that configuration, I've created the following dashboards in HA - where you can also see some controls. |
Lewis @lwsrbrts - Thanks again to you and Adam @adampagot for helping me out and making this possible. |
Done. Everything in the repo is related to the Ecoflow public MQTT server. This access is not supported by Ecoflow and was gained by collaboration between a number of people on this and other forums (which began by decompiling the native app on Android IIRC). There is no guarantee it will continue to work once the official API is publicly released. Also, EF recently added filtering of client IDs which my documentation/scripts have not been updated to reflect. Bottom line: I'm not sure how much of what is in the repo will work with the API. It will depend on how much data EF decides to provide via that mechanism and if they keep the same topic structure or not... Hopefully it can be helpful to you for at least providing ideas and some insight into the YAML configuration for Home Assistant. |
DONE |
@Ne0-Hack3r Could I get access to your repo as well? I am trying to integrate charging with my AC solar production on my roof. I'm brand new to Home Assistant and Github so any help would be amazing. I have managed to get Home Assistant running and Delta Pros linked with the Hassio-ecoflow repo already. |
Done. |
Thanks to this thread and the other one linked above, I have tons of data coming from Ecoflow into Home Assistant. Small sample: @Ne0-Hack3r I'd love access to your repo if possible to see what else can be done. For one, I saw mention in the other thread about you monitoring the Delta Pro state of charge. That's one of the main things I am wanting... |
@Ne0-Hack3r nice job. Could you please grant me also access to your EcoFlow-Repo ? Thanks in advance :) |
Anyone on this thread worked with the SHP automations via MQTT? I'm playing with this now but any ideas or examples are appreciated. |
Thank you!!
Not yet. My DREAM concept is for HA to monitor my DP battery level and smartly turn off non-critical circuits during an outage. |
I've heard nothing from the author of that repo. I'd be happy to help but I'm going to need some guidance from them to streamline the process. I've never written a full grown HA integration so I'll trade what I know about the SHP for some hand holding in that area. I have played with the cloud integration but I've already got packages for everything is provides and have steadily moved everything to local control (using a modified hasso integration or my own hacks/packages). The SHP is the only thing left on my list that still required the cloud MQTT server because it has no TCP access and BLE access requires manual enabling (Iot button) and even if that worked I don't feel like reverse engineering all the byte stream data/settings at this point. |
hi All, I'm very interested to implement my SPH in HomeAssistant. Many thanks |
@legrandjeremy - done |
Great work. I really wanted to wait until formal integration was done, but I am a child at heart waiting on Christmas Eve with excited trepidation. That said, @Ne0-Hack3r , may I have access also please? Being that I have two Smart Home Panels, would you have any consideration or concerns? Please and thank you! |
Many Thanks @Ne0-Hack3r and congrats for this amazing work. I integrated my Smart Home Panel, it's a pleasure to see all actions and data inside HomeAssistant ! |
@fakeshemp01 - DONE For 2 x SHP, be sure to setup your mosquito.conf such that you have and SHP1 and SHP2 for the local prefix of the topics mapped to the serial number based topics for each SHP and then make 2 copies of the YAML package (for SHP1 and SHP2) in each package copy replace all instances of "SHP" with "SHP1" and "shp" with "shp1" (or SHP2/shp2). That is what I did to support 2 DPs and I think it should work for 2 x SHP (though I have not tried it). |
@Ne0-Hack3r - Thank you! |
I'd like access to the SHP repo |
@mdelrossi |
Thank you |
@Ne0-Hack3r |
@Thomptronics - done! |
@Ne0-Hack3r And... just after I got your invite I saw this: EcoFlow Developer Platform Looks like we now have a way to make some more official (and reliable) integrations! |
Not gonna lie. That is some very good and very welcome news from Ecoflow. I believe that @Ne0-Hack3r was aware of this in a beta program of sorts but now that we have official documentation and an official method of interacting with our devices we are, as you say, very likely to get some official Home Assistant integrations, but it is a bit of a shame that it's cloud-based. |
The SHP support needs things like current per circuit power readings to be exposed but that is supposed to happen this month, hopefully. Better to have an officially supported API but still disappointing that no local access exists, beyond manually enabled BLE, for SHP and that they keep closing the TCP port for DP. |
I've enrolled in the developer program and it looks pretty straight forward but they don't have any Smart Home Panel 2 docs yet. Does anyone have the commands available? |
@Ne0-Hack3r could I also get access to your repo please? |
SHP2 and DPU are supposed to happen in Q2. It looks like some of the preliminary structure is there and you can pull sensor data but there is no documentation and it does not appear access to modify settings has been opened up yet. The data for both on the public MQTT side is encoded making it a rather involved process to try to reverse-engineer so waiting for the official support in the API. |
Invite sent |
@Ne0-Hack3r may I have access to the repository as well? |
Sure thing... invite sent! |
Hello, please can I get access? Want to control charging based on Octopus Agile. |
lwsrbrts many thanks for what you have shared! I have been able to add my SHP to HA. can I ask you if you can share you dashboard yaml ? I have added the jinja part but I would love to have the same look and field and features as you. thanks |
@Ne0-Hack3r may I ask you to invite me as well? Please |
I believe it's pretty much all here - well, the centre bit is. If you need something else, let me know what bit specifically. https://gist.github.com/lwsrbrts/03a697d23a0cdf6fa46898b54dbdf44c Thanks |
I have integrated this part, but I'm missing the left and right part of your dashboard. and especially how you managed to click on a circuit and have the dedicated page for it (for left and right part ;) ). |
I've updated the gist to include the raw configuration of that entire dashboard including the sub-views (the individual circuits). I use apexcharts card extensively and it is highly likely there are some custom sensors that aren't defined for you. If you need the yaml for those, let me know the names of the sensors that are missing for you and i'll dig them out of my config. https://gist.github.com/lwsrbrts/03a697d23a0cdf6fa46898b54dbdf44c |
a million time : THANK YOU !!! |
Hello, if anyone has to time to help me I would very much appreciate it. I'm hoping to control my SHP charging and discharging to make the most of variable electricity tariff. I'm completely new to MQTT. I have all the SHP entities now in HA but they are all unavailable. I suspect MQTT is not connecting to Ecoflow but I have no idea how to test that. I have a file \share\mosquitto\mosquitto.conf only adding my ecoflow username, password and SHP serial number to the code I coppied from here. I have added homeassistant: to my main configuration.yaml file and added yaml file in /packages As I say I think this part has worked as it has created all the unavailable entities in HA. Many thanks, |
@theneochan - sorry for the delay here. You're never going to get that file to work. The "code" that you've copied down is a PowerShell script which is used to generate the actual mosquitto.conf file that you need. So the first thing you'll need to do is delete that mosquitto.conf file because it will never work. To run the PowerShell script and generate the actual mosquitto.conf file, you will need to install PowerShell 7 - it looks like you're using Windows 11 so this is pretty straightforward. Once you have PowerShell 7 installed, open it and you'll be sitting at a command prompt. Copy the code in to a file and call it something you'll remember, like Inside PowerShell, you will need to change directory to where As an example, this is what I might do... The output from the script will be some text. You want to copy this text, completely as it is and paste it in to the mosquitto.conf file that is located in the |
Is it possible to support the smart home panel? If there is anything I could do to help please let me know.
The text was updated successfully, but these errors were encountered: