Git Product home page Git Product logo

ecoflow_exporter's Introduction

Stand With Ukraine

ecoflow_exporter's People

Contributors

aauren avatar berezhinskiy avatar carehart avatar larry0ua avatar pontostroy avatar tris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecoflow_exporter's Issues

No `remain_time` metrics for charge/discharge on River Pro

Слава Україні!!!

River Pro works fine too

except no metrics for charge/discharge time:

  • need to use ecoflow_pd_remain_time + ecoflow_bms_master_amp sign - not sure its OK
dmytro.kulyk@MAC-570022 datalake % curl -s http://localhost:9090/metrics | grep "remain_time"
# HELP ecoflow_pd_remain_time value from MQTT object key pd.remainTime
# TYPE ecoflow_pd_remain_time gauge
ecoflow_pd_remain_time{device="device_no"} 162.0

Automatically extract MQTT credentials from api.ecoflow.com

The idea is to remove the prerequired step of obtaining MQTT credentials by a bash script. Python can do extraction logic. Environment variables MQTT_USERNAME and MQTT_PASSWORD will be changed to ECOFLOW_USERNAME and ECOFLOW_PASSWORD. I'd like to know the potential limitations of the number of mobile applications on EcoFlow's backend side since each new docker run will generate new MQTT credentials. Another option is to use MQTT_USERNAME and MQTT_PASSWORD in case the env vars are exists. Otherwise, MQTT credentials will be printed to STDOUT

Ecoflow Smart Home Pannel

My home Ecoflow setup consists of Ecoflow Delta Pro + Ecoflow Smart Home Panel
I'd like to be able to extract data from more than one Ecoflow device.
After reviving the code it seems the following would be needed to be done:

  • Support of an array of DeviceID instead of a single device
  • Subscription to multiple topics via MQTT
  • Introducing a "Device Type" to separate them out in Prometheus

Alternatively, two instances of ecoflow_exporter can be launched to have one exporter per device.

HUGE THANKS and asking for opinion on smart-meter, Delta, PowerStream integration

First of all a HUGE THANKS for this repo! After two weeks of tinkering with Homeassistant on a Pi 4 and dependency hell I appreciate how smooth this went!

I have an overpaneled Delta 2 Max (2x2x455Wp) connected to a PowerStream w/ 2 additional 455 Wp panels and a smart-meter. (and 800 Wp w/o storage)
I want to control how much the PS delivers to the home depending on panel delivery by day, Delta charge status and power requirements signaled by the SHRDZM meter MQTT or Rest.

Thanks to your effort I can query the Delta. Anything that you want to hint when I want to control the PS via its API from what I learned from here and @vbash.

Thanks again!
G.

Login information failing

It seems something changed within the Ecoflow web architecture (needed to relogin with the phone etc) and since some hours, the tool is failing (wrong username/password).

Unsupported Metrics

The list of unsupported metrics from the logs for my Delta 2, as you've asked:

  • pd.icoBytes
  • pd.reserved
  • bms_emsStatus.bmsIsConnt
  • inv.reserved
  • mppt.res

Failed to connect to MQTT: not authorised

Who can help?
After running the container I see an error

image

Failed to connect to MQTT: not authorised

But before that I see a message that the authorization is successful "Successfully logged in"

Thanks

River MAX - NO DATA for charging time

Чи є якісь оновлення стосовно Charging Remaining Time для River Max?
Так і показує NO Data на відміну від Delta MAX.

How to track multiple devices and how to use names instead of serial numbers?

First of all a HUGE thank you for a FANTASTIC job! Works perfectly with River 2 Pro.

So, questions.
How to track multiple devices? If i add second line with DEVICE_SN into .env then only the last entered serial number is used for pulling data. Adding the second number into Grafana dash gui does not work either, no data retrieved. Besides, even if only one serial is written in .env still, the Grafana dashboard starts empty and i have to manually add the serial to it. Should it get the number from .env?

How to use the device names instead of numbers? I assume, substitute the line of DEVICE_SN with the DEVICE_NAME ?

Ecoflow River 2 Max and Delta 2, works well

It works well, a bit of a misunderstanding with the .env file, that the credentials should be without any "" or <>. And for a lazy person, the command "docker compose up -d" must run inside a docker-compose folder.

tg_image_1348863010

Delta 2 Max + Extra battery metrics does not works after firmware update

After last update i see this in container logs

ecoflow_exporter  | 2023-12-14 07:38:48,517 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.soh -> ecoflow_bms_slave_bms_slave_status_1_soh
ecoflow_exporter  | 2023-12-14 07:38:48,517 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.tagChgAmp -> ecoflow_bms_slave_bms_slave_status_1_tag_chg_amp
ecoflow_exporter  | 2023-12-14 07:38:48,517 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.remainTime -> ecoflow_bms_slave_bms_slave_status_1_remain_time
ecoflow_exporter  | 2023-12-14 07:38:48,518 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.targetSoc -> ecoflow_bms_slave_bms_slave_status_1_target_soc
ecoflow_exporter  | 2023-12-14 07:38:48,518 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.bqSysStatReg -> ecoflow_bms_slave_bms_slave_status_1_bq_sys_stat_reg
ecoflow_exporter  | 2023-12-14 07:38:48,518 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.productType -> ecoflow_bms_slave_bms_slave_status_1_product_type
ecoflow_exporter  | 2023-12-14 07:38:48,518 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.minMosTemp -> ecoflow_bms_slave_bms_slave_status_1_min_mos_temp
ecoflow_exporter  | 2023-12-14 07:38:48,519 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.diffSoc -> ecoflow_bms_slave_bms_slave_status_1_diff_soc
ecoflow_exporter  | 2023-12-14 07:38:48,519 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.soc -> ecoflow_bms_slave_bms_slave_status_1_soc
ecoflow_exporter  | 2023-12-14 07:38:48,519 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.minCellTemp -> ecoflow_bms_slave_bms_slave_status_1_min_cell_temp
ecoflow_exporter  | 2023-12-14 07:38:48,519 INFO    Created new metric from payload key bms_slave_bmsSlaveStatus_1.packSn -> ecoflow_bms_slave_bms_slave_status_1_pack_sn
ecoflow_exporter  | Traceback (most recent call last):
ecoflow_exporter  |   File "/ecoflow_exporter.py", line 365, in <module>
ecoflow_exporter  |     main()
ecoflow_exporter  |   File "/ecoflow_exporter.py", line 357, in main
ecoflow_exporter  |     metrics.loop()
ecoflow_exporter  |   File "/ecoflow_exporter.py", line 262, in loop
ecoflow_exporter  |     self.process_payload(params)
ecoflow_exporter  |   File "/ecoflow_exporter.py", line 292, in process_payload
ecoflow_exporter  |     metric.set(ecoflow_payload_value)
ecoflow_exporter  |   File "/ecoflow_exporter.py", line 217, in set
ecoflow_exporter  |     self.metric.labels(device=self.device_name).set(value)
ecoflow_exporter  |   File "/usr/local/lib/python3.11/site-packages/prometheus_client/metrics.py", line 417, in set
ecoflow_exporter  |     self._value.set(float(value))
ecoflow_exporter  |                     ^^^^^^^^^^^^
ecoflow_exporter  | ValueError: could not convert string to float: 'R361Z1B4HF5S0986'
ecoflow_exporter exited with code 1

R361Z1B4HF5S0986 is an extra battery serial number

Adding Solar Stats on the dashboard

I've played a bit with my solar panels and have a proposition to add some stats on the dashboard:
image

I can share my dashboard json to pick those stat panels

General Issue with external connection: Unexpected log entries "Message queue is empty. Assuming that the device is offline" since 14. June, reconnects while iOS app is active.

Since yesterday 14th June 20123 we recognized friction in the logs and data visualisation outage after around one month of stable processing.

Install Prerequisites

We installed the docker compose version from the commandline including alertmanager reporting to Telegram on May 30th on a MacMini M1 under Monterey and used Docker Desktop just to monitor the install.

We run an Ecoflow Delta Pro under latest Firmware V1.0.1.49, | V0.1.0 (WLAN) (not updated during use of ecoflow_exporter)

Everything worked fine except short interruptions due to network related external issues (Restarts etc.)

We also recognized short outages of receiving messages in the night at almost the same time when the Internet connection is shortly interrupted by the Provider.

Current issue

Today we restarted the containers and for a short time everything went back to normal.

Then we received the "Message queue is empty. Assuming that the device is offline" messages again.

What we figured out is that the reporting from the Ecoflow server goes back to normal as long as a local iPhone with the Ecoflow app is actively communicating with the services. The Communication drops again when the app goes to background when closing the iPhone app screen (not the app) to the background.

This could be reproduced many times.

Composer Log Example:

### usual messages before the issues (there are more different ones, but I omit them for now)
2023-06-14 08:05:45 ecoflow_exporter  | 2023-06-14 06:05:45,741 INFO    Processing 15 event(s) from the message queue
2023-06-14 08:05:55 ecoflow_exporter  | 2023-06-14 06:05:55,759 INFO    Processing 15 event(s) from the message queue

### goes offline
2023-06-14 08:06:05 ecoflow_exporter  | 2023-06-14 06:06:05,772 INFO    Message queue is empty. Assuming that the device is offline  
  2023-06-14 08:06:15 ecoflow_exporter  | 2023-06-14 06:06:15,780 INFO    Message queue is empty. Assuming that the device is offline  
  2 

### messages after container restart
2023-06-15 16:24:08 ecoflow_exporter  | 2023-06-15 14:24:08,139 INFO    Login to EcoFlow API https://api.ecoflow.com/auth/login
2023-06-15 16:24:08 ecoflow_exporter  | 2023-06-15 14:24:08,308 INFO    Successfully logged in: [user]
2023-06-15 16:24:08 ecoflow_exporter  | 2023-06-15 14:24:08,308 INFO    Requesting IoT MQTT credentials https://api.ecoflow.com/iot-auth/app/certification
2023-06-15 16:24:08 ecoflow_exporter  | 2023-06-15 14:24:08,423 INFO    Successfully extracted account: app-******removed******
2023-06-15 16:24:08 ecoflow_exporter  | 2023-06-15 14:24:08,443 INFO    Connecting to MQTT Broker mqtt-e.ecoflow.com:8883 using client id ANDROID_******removed******
2023-06-15 16:24:08 ecoflow_exporter  | 2023-06-15 14:24:08,682 INFO    Subscribed to MQTT topic /app/device/property/******Ser#removed******
2023-06-15 16:24:18 ecoflow_exporter  | 2023-06-15 14:24:18,635 INFO    Processing 15 event(s) from the message queue
2023-06-15 16:24:18 ecoflow_exporter  | 2023-06-15 14:24:18,636 INFO    Created new metric from payload key pd.iconWifiMode -> ecoflow_pd_icon_wifi_mode
...
## Note: repeated many times for every property
...
2023-06-15 16:24:18 ecoflow_exporter  | 2023-06-15 14:24:18,645 INFO    Created new metric from payload key mppt.chgState -> ecoflow_mppt_chg_state
2023-06-15 16:24:28 ecoflow_exporter  | 2023-06-15 14:24:28,653 INFO    Processing 20 event(s) from the message queue
## now starts processing every 30 seconds 19 times written to the log and then goes offline

### goes online after iOS Device goes online
- 2023-06-15 11:55:52 ecoflow_exporter  | 2023-06-15 09:55:52,441 INFO    Processing 15 event(s) from the message queue'
  2023-06-15 11:56:22 ecoflow_exporter  | 2023-06-15 09:56:22,490 INFO    Processing 18 event(s) from the message queue  
  2023-06-15 11:56:32 ecoflow_exporter  | 2023-06-15 09:56:32,514 INFO    Processing 16 event(s) from the message queue  
  2023-06-15 11:56:42 ecoflow_exporter  | 2023-06-15 09:56:42,528 INFO    Processing 15 event(s) from the message queue  
  2023-06-15 11:56:52 ecoflow_exporter  | 2023-06-15 09:56:52,544 INFO    Processing 10 event(s) from the message queue

### repeated after iOS goes offline until iOS Device goes online again
- 2023-06-15 15:45:28 ecoflow_exporter  | 2023-06-15 13:45:28,007 INFO    Message queue is empty. Assuming that the device is offline

### intermediate Grafana log messages
- 2023-06-15 15:49:27 grafana           | logger=cleanup t=2023-06-15T13:49:27.38569113Z level=info msg="Completed cleanup jobs" duration=15.996333ms
  2023-06-15 15:49:27 grafana           | logger=grafana.update.checker t=2023-06-15T13:49:27.579195171Z level=info msg="Update check succeeded" duration=102.637208ms  
  2023-06-15 15:49:27 grafana           | logger=plugins.update.checker t=2023-06-15T13:49:27.68191263Z level=info msg="Update check succeeded" duration=151.199709ms

### intermediate Prometheus log messages
2023-06-15 17:00:03 prometheus        | ts=2023-06-15T15:00:03.132Z caller=compact.go:523 level=info component=tsdb msg="write block" mint=1686830400000 maxt=1686837600000 ulid=******removed******  duration=72.176208ms
2023-06-15 17:00:03 prometheus        | ts=2023-06-15T15:00:03.137Z caller=head.go:1286 level=info component=tsdb msg="Head GC completed" caller=truncateMemory duration=1.818208ms
2023-06-15 17:00:03 prometheus        | ts=2023-06-15T15:00:03.141Z caller=checkpoint.go:100 level=info component=tsdb msg="Creating checkpoint" from_segment=189 to_segment=191 mint=1686837600000
2023-06-15 17:00:03 prometheus        | ts=2023-06-15T15:00:03.235Z caller=head.go:1254 level=info component=tsdb msg="WAL checkpoint complete" first=189 last=191 duration=93.9965ms

Telegram reports

We get these alerts as well as follows:

  • ‼️ [FIRING:1] EcoFlow is offline
    Description: Device [[Delta Pro]] has disappeared from the network
  • ⚠️ [FIRING:1] EcoFlow detects power outage
    Description: Device [[Delta Pro]] detects power outage
  • ✅ [RESOLVED] EcoFlow is offline
    Description: Device [[Delta Pro]] has disappeared from the network
  • ✅ [RESOLVED] EcoFlow detects power outage
    Description: Device [[Delta Pro]] detects power outage
  • ⚠️ [FIRING:1] EcoFlow detects power outage
    Description: Device [[Delta Pro]] detects power outage
  • ✅ [RESOLVED] EcoFlow detects power outage
    Description: Device [[Delta Pro]] detects power outage
  • ‼️ [FIRING:1] EcoFlow is offline
    Description: Device [[Delta Pro]] has disappeared from the network
  • ⚠️ [FIRING:1] EcoFlow detects power outage
    Description: Device [[Delta Pro]] detects power outage
  • ✅ [RESOLVED] EcoFlow is offline
    Description: Device [[Delta Pro]] has disappeared from the network
  • ✅ [RESOLVED] EcoFlow detects power outage
    Description: Device [[Delta Pro]] detects power outage

Проблема при установке

Доброго времени суток, подскажите пожалуйста как решить проблему, столкнулся при установке:
285137782-cf839602-e880-4904-a49f-0d73ffeee30e

Система: Unraid 6.12.4
Заранее благодарен

Different parameters for Delta Pro

Hello! Thanks for this exporter.

It is strange, but I have different parameters for my Delta Pro.
For instance, I have ecoflow_bms_master_f32_show_soc instead of ecoflow_bms_bms_status_f32_show_soc.
Have this behavior for all parameters prefixed with ecoflow_bms_bms_status and ecoflow_bms_ems_status.

How did you investigate it? How did you find info about MQTT messages and API? Thanks.

Allow to define custom value for label device

It should be possible to define custom value for device label by setting DEVICE_NAME environment variable. If not given, DEVICE_SN will be exported.

⚠️ BREAKING CHANGE Grafana dashboard should be updated to use device label instead of device_sn

How to monitor multiple Ecoflows ?

Hello,
how to monitor multiple Ecoflows and have their serial number available in the dropdown list in Grafana dashboard ?
I did try a lot of things suggested here but nothing works.
Thank you very much

Delta 2 Max

Delta 2 Max works fine.
Great work, thank you!

Mostly NO DATA after plug smart extra battery (DELTA 2 in my case)

After plug smart extra battery have mostly NO DATA on dashboard.
image
In docker log have some like:
2024-06-27 09:38:02,067 INFO Created new metric from payload key bms_bmsStatus.actSoc -> ecoflow_bms_bms_status_act_soc 2024-06-27 09:38:02,067 WARNING Skipping unsupported metric bms_bmsStatus.cellVol: [3277, 3285, 3285, 3282, 3285, 3278, 3281, 3286, 3286, 3282, 3286, 3286] 2024-06-27 09:38:02,068 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:02,069 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:12,070 INFO Processing 9 event(s) from the message queue 2024-06-27 09:38:12,072 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:12,072 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:12,074 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:12,075 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:12,077 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:12,077 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:12,078 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:12,079 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:12,081 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:12,081 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:22,083 INFO Processing 10 event(s) from the message queue 2024-06-27 09:38:22,084 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:22,085 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:22,086 WARNING Skipping unsupported metric bms_kitInfo.watts: [{'appState': 1, 'curPower': -24, 'appVer': 34275944, 'f32Soc': 59.8, 'soc': 60, 'avaFlag': 1, 'sn': 'R341Z1XXXXXXXXXXX', 'detail': 4, 'type': 80, 'loadVer': 34275328}, {'appState': 0, 'curPower': 0, 'appVer': 0, 'f32Soc': 0, 'soc': 0, 'avaFlag': 0, 'sn': '', 'detail': 0, 'type': 0, 'loadVer': 0}] 2024-06-27 09:38:22,088 WARNING Skipping unsupported metric bms_bmsStatus.cellTemp: [] 2024-06-27 09:38:22,088 WARNING Skipping unsupported metric bms_bmsStatus.cellVol: [3285, 3285, 3279, 3277, 3279, 3282, 3283, 3282, 3282, 3283, 3283] 2024-06-27 09:38:22,089 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:22,090 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:22,090 WARNING Skipping unsupported metric pd.icoBytes: [32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2024-06-27 09:38:22,092 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:22,092 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:22,094 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:22,095 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:32,096 INFO Processing 9 event(s) from the message queue 2024-06-27 09:38:32,098 WARNING Skipping unsupported metric bms_slave.cellVol: [] 2024-06-27 09:38:32,099 WARNING Skipping unsupported metric bms_slave.cellTemp: [] 2024-06-27 09:38:32,101 WARNING Skipping unsupported metric bms_slave.cellVol: []

where 'sn': 'R341Z1XXXXXXXXXXX', - is smart extra battery SN, it's can't add to mobile app

also in log
Traceback (most recent call last): File "/ecoflow_exporter.py", line 365, in <module> main() File "/ecoflow_exporter.py", line 357, in main metrics.loop() File "/ecoflow_exporter.py", line 262, in loop self.process_payload(params) File "/ecoflow_exporter.py", line 292, in process_payload metric.set(ecoflow_payload_value) File "/ecoflow_exporter.py", line 217, in set self.metric.labels(device=self.device_name).set(value) File "/usr/local/lib/python3.11/site-packages/prometheus_client/metrics.py", line 417, in set self._value.set(float(value)) ^^^^^^^^^^^^ ValueError: could not convert string to float: 'R341Z1XXXXXXXXXXX'

Grafana: unsupported value type

I'm trying to extract data from EcoFlow RIVER 2 with this exporter, and although the exporter provides data, it is not pulled by Grafana.

To reproduce the issue I create a docker-compose.yaml file with content:

  grafana:
    image: grafana/grafana-oss
    ports: ["3000:3000"]
    environment:
      GF_LOG_LEVEL: debug
    volumes:
      - ./grafana-data:/var/lib/grafana
  scrapper:
    image: ghcr.io/berezhinskiy/ecoflow_exporter
    environment:
      DEVICE_SN: ddd
      ECOFLOW_USERNAME: xxx
      ECOFLOW_PASSWORD: "xxx"

Then while creating data source (type=Prometheus, URL 'http://scrapper:9090/') I see error message saying 'Error reading Prometheus: An error occurred within the plugin'.
Grafana logs say on debug level: 'msg="Processing metrics query" query="unsupported value type"', and nothing more interesting (or I don't know how to get to the actual error message).

Here is the datasource output:

Spoiler
# TYPE python_gc_objects_collected_total counter
python_gc_objects_collected_total{generation="0"} 928.0
python_gc_objects_collected_total{generation="1"} 469.0
python_gc_objects_collected_total{generation="2"} 0.0
# HELP python_gc_objects_uncollectable_total Uncollectable object found during GC
# TYPE python_gc_objects_uncollectable_total counter
python_gc_objects_uncollectable_total{generation="0"} 0.0
python_gc_objects_uncollectable_total{generation="1"} 0.0
python_gc_objects_uncollectable_total{generation="2"} 0.0
# HELP python_gc_collections_total Number of times this generation was collected
# TYPE python_gc_collections_total counter
python_gc_collections_total{generation="0"} 57.0
python_gc_collections_total{generation="1"} 5.0
python_gc_collections_total{generation="2"} 0.0
# HELP python_info Python platform information
# TYPE python_info gauge
python_info{implementation="CPython",major="3",minor="11",patchlevel="1",version="3.11.1"} 1.0
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 3.581952e+07
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 2.8778496e+07
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.6735425705e+09
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 0.8500000000000001
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 8.0
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1.048576e+06
# HELP ecoflow_online 1 if device is online
# TYPE ecoflow_online gauge
ecoflow_online{device="ddd"} 1.0
# HELP ecoflow_mqtt_messages_receive_total total MQTT messages
# TYPE ecoflow_mqtt_messages_receive_total counter
ecoflow_mqtt_messages_receive_total{device="ddd"} 153.0
# HELP ecoflow_mqtt_messages_receive_created total MQTT messages
# TYPE ecoflow_mqtt_messages_receive_created gauge
ecoflow_mqtt_messages_receive_created{device="ddd"} 1.6735425796005847e+09
# HELP ecoflow_bms_bms_status_output_watts value from MQTT object key bms_bmsStatus.outputWatts
# TYPE ecoflow_bms_bms_status_output_watts gauge
ecoflow_bms_bms_status_output_watts{device="ddd"} 80.0
# HELP ecoflow_bms_bms_status_max_cell_vol value from MQTT object key bms_bmsStatus.maxCellVol
# TYPE ecoflow_bms_bms_status_max_cell_vol gauge
ecoflow_bms_bms_status_max_cell_vol{device="ddd"} 3157.0
# HELP ecoflow_bms_bms_status_remain_cap value from MQTT object key bms_bmsStatus.remainCap
# TYPE ecoflow_bms_bms_status_remain_cap gauge
ecoflow_bms_bms_status_remain_cap{device="ddd"} 4104.0
# HELP ecoflow_bms_bms_status_amp value from MQTT object key bms_bmsStatus.amp
# TYPE ecoflow_bms_bms_status_amp gauge
ecoflow_bms_bms_status_amp{device="ddd"} -6.0
# HELP ecoflow_bms_bms_status_f32_show_soc value from MQTT object key bms_bmsStatus.f32ShowSoc
# TYPE ecoflow_bms_bms_status_f32_show_soc gauge
ecoflow_bms_bms_status_f32_show_soc{device="ddd"} 23.4
# HELP ecoflow_bms_bms_status_min_cell_vol value from MQTT object key bms_bmsStatus.minCellVol
# TYPE ecoflow_bms_bms_status_min_cell_vol gauge
ecoflow_bms_bms_status_min_cell_vol{device="ddd"} 3157.0
# HELP ecoflow_inv_output_watts value from MQTT object key inv.outputWatts
# TYPE ecoflow_inv_output_watts gauge
ecoflow_inv_output_watts{device="ddd"} 52.0
# HELP ecoflow_inv_inv_out_amp value from MQTT object key inv.invOutAmp
# TYPE ecoflow_inv_inv_out_amp gauge
ecoflow_inv_inv_out_amp{device="ddd"} 360.0
# HELP ecoflow_inv_inv_out_vol value from MQTT object key inv.invOutVol
# TYPE ecoflow_inv_inv_out_vol gauge
ecoflow_inv_inv_out_vol{device="ddd"} 229746.0
# HELP ecoflow_inv_ac_in_vol value from MQTT object key inv.acInVol
# TYPE ecoflow_inv_ac_in_vol gauge
ecoflow_inv_ac_in_vol{device="ddd"} 8100.0
# HELP ecoflow_bms_ems_status_f32_lcd_show_soc value from MQTT object key bms_emsStatus.f32LcdShowSoc
# TYPE ecoflow_bms_ems_status_f32_lcd_show_soc gauge
ecoflow_bms_ems_status_f32_lcd_show_soc{device="ddd"} 23.4
# HELP ecoflow_pd_car_used_time value from MQTT object key pd.carUsedTime
# TYPE ecoflow_pd_car_used_time gauge
ecoflow_pd_car_used_time{device="ddd"} 230291.0
# HELP ecoflow_pd_inv_used_time value from MQTT object key pd.invUsedTime
# TYPE ecoflow_pd_inv_used_time gauge
ecoflow_pd_inv_used_time{device="ddd"} 536788.0
# HELP ecoflow_pd_watts_out_sum value from MQTT object key pd.wattsOutSum
# TYPE ecoflow_pd_watts_out_sum gauge
ecoflow_pd_watts_out_sum{device="ddd"} 58.0
# HELP ecoflow_mppt_in_vol value from MQTT object key mppt.inVol
# TYPE ecoflow_mppt_in_vol gauge
ecoflow_mppt_in_vol{device="ddd"} 1068.0
# HELP ecoflow_mppt_out_vol value from MQTT object key mppt.outVol
# TYPE ecoflow_mppt_out_vol gauge
ecoflow_mppt_out_vol{device="ddd"} 12632.0
# HELP ecoflow_pd_car_watts value from MQTT object key pd.carWatts
# TYPE ecoflow_pd_car_watts gauge
ecoflow_pd_car_watts{device="ddd"} 4.0
# HELP ecoflow_inv_ac_in_freq value from MQTT object key inv.acInFreq
# TYPE ecoflow_inv_ac_in_freq gauge
ecoflow_inv_ac_in_freq{device="ddd"} 50.0
# HELP ecoflow_bms_ems_status_dsg_remain_time value from MQTT object key bms_emsStatus.dsgRemainTime
# TYPE ecoflow_bms_ems_status_dsg_remain_time gauge
ecoflow_bms_ems_status_dsg_remain_time{device="ddd"} 40.0
# HELP ecoflow_pd_remain_time value from MQTT object key pd.remainTime
# TYPE ecoflow_pd_remain_time gauge
ecoflow_pd_remain_time{device="ddd"} 41.0
# HELP ecoflow_mppt_in_amp value from MQTT object key mppt.inAmp
# TYPE ecoflow_mppt_in_amp gauge
ecoflow_mppt_in_amp{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_dsg_cmd value from MQTT object key bms_emsStatus.dsgCmd
# TYPE ecoflow_bms_ems_status_dsg_cmd gauge
ecoflow_bms_ems_status_dsg_cmd{device="ddd"} 1.0
# HELP ecoflow_bms_ems_status_chg_vol value from MQTT object key bms_emsStatus.chgVol
# TYPE ecoflow_bms_ems_status_chg_vol gauge
ecoflow_bms_ems_status_chg_vol{device="ddd"} 12.0
# HELP ecoflow_bms_ems_status_chg_remain_time value from MQTT object key bms_emsStatus.chgRemainTime
# TYPE ecoflow_bms_ems_status_chg_remain_time gauge
ecoflow_bms_ems_status_chg_remain_time{device="ddd"} 5999.0
# HELP ecoflow_bms_ems_status_max_charge_soc value from MQTT object key bms_emsStatus.maxChargeSoc
# TYPE ecoflow_bms_ems_status_max_charge_soc gauge
ecoflow_bms_ems_status_max_charge_soc{device="ddd"} 100.0
# HELP ecoflow_bms_ems_status_para_vol_max value from MQTT object key bms_emsStatus.paraVolMax
# TYPE ecoflow_bms_ems_status_para_vol_max gauge
ecoflow_bms_ems_status_para_vol_max{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_lcd_show_soc value from MQTT object key bms_emsStatus.lcdShowSoc
# TYPE ecoflow_bms_ems_status_lcd_show_soc gauge
ecoflow_bms_ems_status_lcd_show_soc{device="ddd"} 23.0
# HELP ecoflow_bms_ems_status_bms_model value from MQTT object key bms_emsStatus.bmsModel
# TYPE ecoflow_bms_ems_status_bms_model gauge
ecoflow_bms_ems_status_bms_model{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_chg_amp value from MQTT object key bms_emsStatus.chgAmp
# TYPE ecoflow_bms_ems_status_chg_amp gauge
ecoflow_bms_ems_status_chg_amp{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_chg_state value from MQTT object key bms_emsStatus.chgState
# TYPE ecoflow_bms_ems_status_chg_state gauge
ecoflow_bms_ems_status_chg_state{device="ddd"} 2.0
# HELP ecoflow_bms_ems_status_open_ups_flag value from MQTT object key bms_emsStatus.openUpsFlag
# TYPE ecoflow_bms_ems_status_open_ups_flag gauge
ecoflow_bms_ems_status_open_ups_flag{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_open_bms_idx value from MQTT object key bms_emsStatus.openBmsIdx
# TYPE ecoflow_bms_ems_status_open_bms_idx gauge
ecoflow_bms_ems_status_open_bms_idx{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_min_dsg_soc value from MQTT object key bms_emsStatus.minDsgSoc
# TYPE ecoflow_bms_ems_status_min_dsg_soc gauge
ecoflow_bms_ems_status_min_dsg_soc{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_para_vol_min value from MQTT object key bms_emsStatus.paraVolMin
# TYPE ecoflow_bms_ems_status_para_vol_min gauge
ecoflow_bms_ems_status_para_vol_min{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_min_open_oil_eb value from MQTT object key bms_emsStatus.minOpenOilEb
# TYPE ecoflow_bms_ems_status_min_open_oil_eb gauge
ecoflow_bms_ems_status_min_open_oil_eb{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_chg_cmd value from MQTT object key bms_emsStatus.chgCmd
# TYPE ecoflow_bms_ems_status_chg_cmd gauge
ecoflow_bms_ems_status_chg_cmd{device="ddd"} 1.0
# HELP ecoflow_bms_ems_status_max_avail_num value from MQTT object key bms_emsStatus.maxAvailNum
# TYPE ecoflow_bms_ems_status_max_avail_num gauge
ecoflow_bms_ems_status_max_avail_num{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_max_close_oil_eb value from MQTT object key bms_emsStatus.maxCloseOilEb
# TYPE ecoflow_bms_ems_status_max_close_oil_eb gauge
ecoflow_bms_ems_status_max_close_oil_eb{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_ems_is_normal_flag value from MQTT object key bms_emsStatus.emsIsNormalFlag
# TYPE ecoflow_bms_ems_status_ems_is_normal_flag gauge
ecoflow_bms_ems_status_ems_is_normal_flag{device="ddd"} 1.0
# HELP ecoflow_bms_ems_status_bms_war_state value from MQTT object key bms_emsStatus.bmsWarState
# TYPE ecoflow_bms_ems_status_bms_war_state gauge
ecoflow_bms_ems_status_bms_war_state{device="ddd"} 0.0
# HELP ecoflow_bms_ems_status_fan_level value from MQTT object key bms_emsStatus.fanLevel
# TYPE ecoflow_bms_ems_status_fan_level gauge
ecoflow_bms_ems_status_fan_level{device="ddd"} 0.0
# HELP ecoflow_bms_bms_status_sys_ver value from MQTT object key bms_bmsStatus.sysVer
# TYPE ecoflow_bms_bms_status_sys_ver gauge
ecoflow_bms_bms_status_sys_ver{device="ddd"} 3.3620282e+07
# HELP ecoflow_bms_bms_status_min_cell_temp value from MQTT object key bms_bmsStatus.minCellTemp
# TYPE ecoflow_bms_bms_status_min_cell_temp gauge
ecoflow_bms_bms_status_min_cell_temp{device="ddd"} 26.0
# HELP ecoflow_bms_bms_status_design_cap value from MQTT object key bms_bmsStatus.designCap
# TYPE ecoflow_bms_bms_status_design_cap gauge
ecoflow_bms_bms_status_design_cap{device="ddd"} 20000.0
# HELP ecoflow_bms_bms_status_temp value from MQTT object key bms_bmsStatus.temp
# TYPE ecoflow_bms_bms_status_temp gauge
ecoflow_bms_bms_status_temp{device="ddd"} 26.0
# HELP ecoflow_bms_bms_status_cycles value from MQTT object key bms_bmsStatus.cycles
# TYPE ecoflow_bms_bms_status_cycles gauge
ecoflow_bms_bms_status_cycles{device="ddd"} 27.0
# HELP ecoflow_bms_bms_status_type value from MQTT object key bms_bmsStatus.type
# TYPE ecoflow_bms_bms_status_type gauge
ecoflow_bms_bms_status_type{device="ddd"} 1.0
# HELP ecoflow_bms_bms_status_soh value from MQTT object key bms_bmsStatus.soh
# TYPE ecoflow_bms_bms_status_soh gauge
ecoflow_bms_bms_status_soh{device="ddd"} 0.0
# HELP ecoflow_bms_bms_status_max_cell_temp value from MQTT object key bms_bmsStatus.maxCellTemp
# TYPE ecoflow_bms_bms_status_max_cell_temp gauge
ecoflow_bms_bms_status_max_cell_temp{device="ddd"} 26.0
# HELP ecoflow_bms_bms_status_cell_id value from MQTT object key bms_bmsStatus.cellId
# TYPE ecoflow_bms_bms_status_cell_id gauge
ecoflow_bms_bms_status_cell_id{device="ddd"} 2.0
# HELP ecoflow_bms_bms_status_min_mos_temp value from MQTT object key bms_bmsStatus.minMosTemp
# TYPE ecoflow_bms_bms_status_min_mos_temp gauge
ecoflow_bms_bms_status_min_mos_temp{device="ddd"} 26.0
# HELP ecoflow_bms_bms_status_vol value from MQTT object key bms_bmsStatus.vol
# TYPE ecoflow_bms_bms_status_vol gauge
ecoflow_bms_bms_status_vol{device="ddd"} 12.0
# HELP ecoflow_bms_bms_status_remain_time value from MQTT object key bms_bmsStatus.remainTime
# TYPE ecoflow_bms_bms_status_remain_time gauge
ecoflow_bms_bms_status_remain_time{device="ddd"} 0.0
# HELP ecoflow_bms_bms_status_full_cap value from MQTT object key bms_bmsStatus.fullCap
# TYPE ecoflow_bms_bms_status_full_cap gauge
ecoflow_bms_bms_status_full_cap{device="ddd"} 17531.0
# HELP ecoflow_bms_bms_status_bq_sys_stat_reg value from MQTT object key bms_bmsStatus.bqSysStatReg
# TYPE ecoflow_bms_bms_status_bq_sys_stat_reg gauge
ecoflow_bms_bms_status_bq_sys_stat_reg{device="ddd"} 0.0
# HELP ecoflow_bms_bms_status_open_bms_idx value from MQTT object key bms_bmsStatus.openBmsIdx
# TYPE ecoflow_bms_bms_status_open_bms_idx gauge
ecoflow_bms_bms_status_open_bms_idx{device="ddd"} 1.0
# HELP ecoflow_bms_bms_status_num value from MQTT object key bms_bmsStatus.num
# TYPE ecoflow_bms_bms_status_num gauge
ecoflow_bms_bms_status_num{device="ddd"} 0.0
# HELP ecoflow_bms_bms_status_bms_fault value from MQTT object key bms_bmsStatus.bmsFault
# TYPE ecoflow_bms_bms_status_bms_fault gauge
ecoflow_bms_bms_status_bms_fault{device="ddd"} 0.0
# HELP ecoflow_bms_bms_status_soc value from MQTT object key bms_bmsStatus.soc
# TYPE ecoflow_bms_bms_status_soc gauge
ecoflow_bms_bms_status_soc{device="ddd"} 23.0
# HELP ecoflow_bms_bms_status_err_code value from MQTT object key bms_bmsStatus.errCode
# TYPE ecoflow_bms_bms_status_err_code gauge
ecoflow_bms_bms_status_err_code{device="ddd"} 0.0
# HELP ecoflow_bms_bms_status_input_watts value from MQTT object key bms_bmsStatus.inputWatts
# TYPE ecoflow_bms_bms_status_input_watts gauge
ecoflow_bms_bms_status_input_watts{device="ddd"} 0.0
# HELP ecoflow_bms_bms_status_tag_chg_amp value from MQTT object key bms_bmsStatus.tagChgAmp
# TYPE ecoflow_bms_bms_status_tag_chg_amp gauge
ecoflow_bms_bms_status_tag_chg_amp{device="ddd"} 20000.0
# HELP ecoflow_bms_bms_status_max_mos_temp value from MQTT object key bms_bmsStatus.maxMosTemp
# TYPE ecoflow_bms_bms_status_max_mos_temp gauge
ecoflow_bms_bms_status_max_mos_temp{device="ddd"} 26.0
# HELP ecoflow_pd_typec1_temp value from MQTT object key pd.typec1Temp
# TYPE ecoflow_pd_typec1_temp gauge
ecoflow_pd_typec1_temp{device="ddd"} 0.0
# HELP ecoflow_pd_qc_usb1_watts value from MQTT object key pd.qcUsb1Watts
# TYPE ecoflow_pd_qc_usb1_watts gauge
ecoflow_pd_qc_usb1_watts{device="ddd"} 0.0
# HELP ecoflow_pd_watts_in_sum value from MQTT object key pd.wattsInSum
# TYPE ecoflow_pd_watts_in_sum gauge
ecoflow_pd_watts_in_sum{device="ddd"} 0.0
# HELP ecoflow_pd_dc_in_used_time value from MQTT object key pd.dcInUsedTime
# TYPE ecoflow_pd_dc_in_used_time gauge
ecoflow_pd_dc_in_used_time{device="ddd"} 0.0
# HELP ecoflow_pd_wifi_ver value from MQTT object key pd.wifiVer
# TYPE ecoflow_pd_wifi_ver gauge
ecoflow_pd_wifi_ver{device="ddd"} 0.0
# HELP ecoflow_pd_ext3p8_port value from MQTT object key pd.ext3p8Port
# TYPE ecoflow_pd_ext3p8_port gauge
ecoflow_pd_ext3p8_port{device="ddd"} 0.0
# HELP ecoflow_pd_dsg_power_d_c value from MQTT object key pd.dsgPowerDC
# TYPE ecoflow_pd_dsg_power_d_c gauge
ecoflow_pd_dsg_power_d_c{device="ddd"} 0.0
# HELP ecoflow_pd_chg_power_d_c value from MQTT object key pd.chgPowerDC
# TYPE ecoflow_pd_chg_power_d_c gauge
ecoflow_pd_chg_power_d_c{device="ddd"} 0.0
# HELP ecoflow_pd_model value from MQTT object key pd.model
# TYPE ecoflow_pd_model gauge
ecoflow_pd_model{device="ddd"} 0.0
# HELP ecoflow_pd_wifi_auto_rcvy value from MQTT object key pd.wifiAutoRcvy
# TYPE ecoflow_pd_wifi_auto_rcvy gauge
ecoflow_pd_wifi_auto_rcvy{device="ddd"} 0.0
# HELP ecoflow_pd_standby_min value from MQTT object key pd.standbyMin
# TYPE ecoflow_pd_standby_min gauge
ecoflow_pd_standby_min{device="ddd"} 30.0
# HELP ecoflow_pd_beep_mode value from MQTT object key pd.beepMode
# TYPE ecoflow_pd_beep_mode gauge
ecoflow_pd_beep_mode{device="ddd"} 0.0
# HELP ecoflow_pd_typec_used_time value from MQTT object key pd.typecUsedTime
# TYPE ecoflow_pd_typec_used_time gauge
ecoflow_pd_typec_used_time{device="ddd"} 27.0
# HELP ecoflow_pd_typec2_watts value from MQTT object key pd.typec2Watts
# TYPE ecoflow_pd_typec2_watts gauge
ecoflow_pd_typec2_watts{device="ddd"} 0.0
# HELP ecoflow_pd_ext4p8_port value from MQTT object key pd.ext4p8Port
# TYPE ecoflow_pd_ext4p8_port gauge
ecoflow_pd_ext4p8_port{device="ddd"} 0.0
# HELP ecoflow_pd_bright_level value from MQTT object key pd.brightLevel
# TYPE ecoflow_pd_bright_level gauge
ecoflow_pd_bright_level{device="ddd"} 100.0
# HELP ecoflow_pd_typec_cha_watts value from MQTT object key pd.typecChaWatts
# TYPE ecoflow_pd_typec_cha_watts gauge
ecoflow_pd_typec_cha_watts{device="ddd"} 0.0
# HELP ecoflow_pd_usbqc_used_time value from MQTT object key pd.usbqcUsedTime
# TYPE ecoflow_pd_usbqc_used_time gauge
ecoflow_pd_usbqc_used_time{device="ddd"} 0.0
# HELP ecoflow_pd_dc_out_state value from MQTT object key pd.dcOutState
# TYPE ecoflow_pd_dc_out_state gauge
ecoflow_pd_dc_out_state{device="ddd"} 0.0
# HELP ecoflow_pd_chg_sun_power value from MQTT object key pd.chgSunPower
# TYPE ecoflow_pd_chg_sun_power gauge
ecoflow_pd_chg_sun_power{device="ddd"} 0.0
# HELP ecoflow_pd_car_temp value from MQTT object key pd.carTemp
# TYPE ecoflow_pd_car_temp gauge
ecoflow_pd_car_temp{device="ddd"} 0.0
# HELP ecoflow_pd_usb_used_time value from MQTT object key pd.usbUsedTime
# TYPE ecoflow_pd_usb_used_time gauge
ecoflow_pd_usb_used_time{device="ddd"} 0.0
# HELP ecoflow_pd_mppt_used_time value from MQTT object key pd.mpptUsedTime
# TYPE ecoflow_pd_mppt_used_time gauge
ecoflow_pd_mppt_used_time{device="ddd"} 0.0
# HELP ecoflow_pd_usb1_watts value from MQTT object key pd.usb1Watts
# TYPE ecoflow_pd_usb1_watts gauge
ecoflow_pd_usb1_watts{device="ddd"} 0.0
# HELP ecoflow_pd_dsg_power_a_c value from MQTT object key pd.dsgPowerAC
# TYPE ecoflow_pd_dsg_power_a_c gauge
ecoflow_pd_dsg_power_a_c{device="ddd"} 3646.0
# HELP ecoflow_pd_qc_usb2_watts value from MQTT object key pd.qcUsb2Watts
# TYPE ecoflow_pd_qc_usb2_watts gauge
ecoflow_pd_qc_usb2_watts{device="ddd"} 0.0
# HELP ecoflow_pd_wifi_rssi value from MQTT object key pd.wifiRssi
# TYPE ecoflow_pd_wifi_rssi gauge
ecoflow_pd_wifi_rssi{device="ddd"} 0.0
# HELP ecoflow_pd_wire_watts value from MQTT object key pd.wireWatts
# TYPE ecoflow_pd_wire_watts gauge
ecoflow_pd_wire_watts{device="ddd"} 0.0
# HELP ecoflow_pd_chg_power_a_c value from MQTT object key pd.chgPowerAC
# TYPE ecoflow_pd_chg_power_a_c gauge
ecoflow_pd_chg_power_a_c{device="ddd"} 7923.0
# HELP ecoflow_pd_lcd_off_sec value from MQTT object key pd.lcdOffSec
# TYPE ecoflow_pd_lcd_off_sec gauge
ecoflow_pd_lcd_off_sec{device="ddd"} 300.0
# HELP ecoflow_pd_ext_rj45_port value from MQTT object key pd.extRj45Port
# TYPE ecoflow_pd_ext_rj45_port gauge
ecoflow_pd_ext_rj45_port{device="ddd"} 0.0
# HELP ecoflow_pd_err_code value from MQTT object key pd.errCode
# TYPE ecoflow_pd_err_code gauge
ecoflow_pd_err_code{device="ddd"} 0.0
# HELP ecoflow_pd_sys_ver value from MQTT object key pd.sysVer
# TYPE ecoflow_pd_sys_ver gauge
ecoflow_pd_sys_ver{device="ddd"} 3.3620274e+07
# HELP ecoflow_pd_typec2_temp value from MQTT object key pd.typec2Temp
# TYPE ecoflow_pd_typec2_temp gauge
ecoflow_pd_typec2_temp{device="ddd"} 0.0
# HELP ecoflow_pd_typec1_watts value from MQTT object key pd.typec1Watts
# TYPE ecoflow_pd_typec1_watts gauge
ecoflow_pd_typec1_watts{device="ddd"} 0.0
# HELP ecoflow_pd_chg_dsg_state value from MQTT object key pd.chgDsgState
# TYPE ecoflow_pd_chg_dsg_state gauge
ecoflow_pd_chg_dsg_state{device="ddd"} 0.0
# HELP ecoflow_pd_usb2_watts value from MQTT object key pd.usb2Watts
# TYPE ecoflow_pd_usb2_watts gauge
ecoflow_pd_usb2_watts{device="ddd"} 0.0
# HELP ecoflow_pd_soc value from MQTT object key pd.soc
# TYPE ecoflow_pd_soc gauge
ecoflow_pd_soc{device="ddd"} 24.0
# HELP ecoflow_pd_car_state value from MQTT object key pd.carState
# TYPE ecoflow_pd_car_state gauge
ecoflow_pd_car_state{device="ddd"} 1.0
# HELP ecoflow_inv_dc_in_vol value from MQTT object key inv.dcInVol
# TYPE ecoflow_inv_dc_in_vol gauge
ecoflow_inv_dc_in_vol{device="ddd"} 0.0
# HELP ecoflow_inv_cfg_ac_work_mode value from MQTT object key inv.cfgAcWorkMode
# TYPE ecoflow_inv_cfg_ac_work_mode gauge
ecoflow_inv_cfg_ac_work_mode{device="ddd"} 0.0
# HELP ecoflow_inv_slow_chg_watts value from MQTT object key inv.SlowChgWatts
# TYPE ecoflow_inv_slow_chg_watts gauge
ecoflow_inv_slow_chg_watts{device="ddd"} 0.0
# HELP ecoflow_inv_dc_in_amp value from MQTT object key inv.dcInAmp
# TYPE ecoflow_inv_dc_in_amp gauge
ecoflow_inv_dc_in_amp{device="ddd"} 0.0
# HELP ecoflow_inv_cfg_ac_out_freq value from MQTT object key inv.cfgAcOutFreq
# TYPE ecoflow_inv_cfg_ac_out_freq gauge
ecoflow_inv_cfg_ac_out_freq{device="ddd"} 2.0
# HELP ecoflow_inv_err_code value from MQTT object key inv.errCode
# TYPE ecoflow_inv_err_code gauge
ecoflow_inv_err_code{device="ddd"} 0.0
# HELP ecoflow_inv_dc_in_temp value from MQTT object key inv.dcInTemp
# TYPE ecoflow_inv_dc_in_temp gauge
ecoflow_inv_dc_in_temp{device="ddd"} 0.0
# HELP ecoflow_inv_inv_out_freq value from MQTT object key inv.invOutFreq
# TYPE ecoflow_inv_inv_out_freq gauge
ecoflow_inv_inv_out_freq{device="ddd"} 50.0
# HELP ecoflow_inv_charger_type value from MQTT object key inv.chargerType
# TYPE ecoflow_inv_charger_type gauge
ecoflow_inv_charger_type{device="ddd"} 1.0
# HELP ecoflow_inv_ac_in_amp value from MQTT object key inv.acInAmp
# TYPE ecoflow_inv_ac_in_amp gauge
ecoflow_inv_ac_in_amp{device="ddd"} 48.0
# HELP ecoflow_inv_fan_state value from MQTT object key inv.fanState
# TYPE ecoflow_inv_fan_state gauge
ecoflow_inv_fan_state{device="ddd"} 0.0
# HELP ecoflow_inv_cfg_ac_xboost value from MQTT object key inv.cfgAcXboost
# TYPE ecoflow_inv_cfg_ac_xboost gauge
ecoflow_inv_cfg_ac_xboost{device="ddd"} 0.0
# HELP ecoflow_inv_cfg_ac_enabled value from MQTT object key inv.cfgAcEnabled
# TYPE ecoflow_inv_cfg_ac_enabled gauge
ecoflow_inv_cfg_ac_enabled{device="ddd"} 1.0
# HELP ecoflow_inv_out_temp value from MQTT object key inv.outTemp
# TYPE ecoflow_inv_out_temp gauge
ecoflow_inv_out_temp{device="ddd"} 33.0
# HELP ecoflow_inv_inv_type value from MQTT object key inv.invType
# TYPE ecoflow_inv_inv_type gauge
ecoflow_inv_inv_type{device="ddd"} 0.0
# HELP ecoflow_inv_cfg_ac_out_vol value from MQTT object key inv.cfgAcOutVol
# TYPE ecoflow_inv_cfg_ac_out_vol gauge
ecoflow_inv_cfg_ac_out_vol{device="ddd"} 0.0
# HELP ecoflow_inv_ac_dip_switch value from MQTT object key inv.acDipSwitch
# TYPE ecoflow_inv_ac_dip_switch gauge
ecoflow_inv_ac_dip_switch{device="ddd"} 0.0
# HELP ecoflow_inv_fast_chg_watts value from MQTT object key inv.FastChgWatts
# TYPE ecoflow_inv_fast_chg_watts gauge
ecoflow_inv_fast_chg_watts{device="ddd"} 0.0
# HELP ecoflow_inv_input_watts value from MQTT object key inv.inputWatts
# TYPE ecoflow_inv_input_watts gauge
ecoflow_inv_input_watts{device="ddd"} 0.0
# HELP ecoflow_inv_standby_mins value from MQTT object key inv.standbyMins
# TYPE ecoflow_inv_standby_mins gauge
ecoflow_inv_standby_mins{device="ddd"} 0.0
# HELP ecoflow_inv_chg_pause_flag value from MQTT object key inv.chgPauseFlag
# TYPE ecoflow_inv_chg_pause_flag gauge
ecoflow_inv_chg_pause_flag{device="ddd"} 0.0
# HELP ecoflow_inv_discharge_type value from MQTT object key inv.dischargeType
# TYPE ecoflow_inv_discharge_type gauge
ecoflow_inv_discharge_type{device="ddd"} 0.0
# HELP ecoflow_inv_sys_ver value from MQTT object key inv.sysVer
# TYPE ecoflow_inv_sys_ver gauge
ecoflow_inv_sys_ver{device="ddd"} 5.0397473e+07
# HELP ecoflow_mppt_car_out_vol value from MQTT object key mppt.carOutVol
# TYPE ecoflow_mppt_car_out_vol gauge
ecoflow_mppt_car_out_vol{device="ddd"} 0.0
# HELP ecoflow_mppt_car_state value from MQTT object key mppt.carState
# TYPE ecoflow_mppt_car_state gauge
ecoflow_mppt_car_state{device="ddd"} 1.0
# HELP ecoflow_mppt_discharge_type value from MQTT object key mppt.dischargeType
# TYPE ecoflow_mppt_discharge_type gauge
ecoflow_mppt_discharge_type{device="ddd"} 0.0
# HELP ecoflow_mppt_fault_code value from MQTT object key mppt.faultCode
# TYPE ecoflow_mppt_fault_code gauge
ecoflow_mppt_fault_code{device="ddd"} 4096.0
# HELP ecoflow_mppt_dc24v_state value from MQTT object key mppt.dc24vState
# TYPE ecoflow_mppt_dc24v_state gauge
ecoflow_mppt_dc24v_state{device="ddd"} 0.0
# HELP ecoflow_mppt_cfg_ac_xboost value from MQTT object key mppt.cfgAcXboost
# TYPE ecoflow_mppt_cfg_ac_xboost gauge
ecoflow_mppt_cfg_ac_xboost{device="ddd"} 1.0
# HELP ecoflow_mppt_car_temp value from MQTT object key mppt.carTemp
# TYPE ecoflow_mppt_car_temp gauge
ecoflow_mppt_car_temp{device="ddd"} 24.0
# HELP ecoflow_mppt_out_watts value from MQTT object key mppt.outWatts
# TYPE ecoflow_mppt_out_watts gauge
ecoflow_mppt_out_watts{device="ddd"} 0.0
# HELP ecoflow_mppt_sw_ver value from MQTT object key mppt.swVer
# TYPE ecoflow_mppt_sw_ver gauge
ecoflow_mppt_sw_ver{device="ddd"} 3.3620282e+07
# HELP ecoflow_mppt_x60_chg_type value from MQTT object key mppt.x60ChgType
# TYPE ecoflow_mppt_x60_chg_type gauge
ecoflow_mppt_x60_chg_type{device="ddd"} 0.0
# HELP ecoflow_mppt_car_out_amp value from MQTT object key mppt.carOutAmp
# TYPE ecoflow_mppt_car_out_amp gauge
ecoflow_mppt_car_out_amp{device="ddd"} 0.0
# HELP ecoflow_mppt_out_amp value from MQTT object key mppt.outAmp
# TYPE ecoflow_mppt_out_amp gauge
ecoflow_mppt_out_amp{device="ddd"} 0.0
# HELP ecoflow_mppt_chg_pause_flag value from MQTT object key mppt.chgPauseFlag
# TYPE ecoflow_mppt_chg_pause_flag gauge
ecoflow_mppt_chg_pause_flag{device="ddd"} 0.0
# HELP ecoflow_mppt_dcdc12v_watts value from MQTT object key mppt.dcdc12vWatts
# TYPE ecoflow_mppt_dcdc12v_watts gauge
ecoflow_mppt_dcdc12v_watts{device="ddd"} 0.0
# HELP ecoflow_mppt_ac_standby_mins value from MQTT object key mppt.acStandbyMins
# TYPE ecoflow_mppt_ac_standby_mins gauge
ecoflow_mppt_ac_standby_mins{device="ddd"} 60.0
# HELP ecoflow_mppt_pow_standby_min value from MQTT object key mppt.powStandbyMin
# TYPE ecoflow_mppt_pow_standby_min gauge
ecoflow_mppt_pow_standby_min{device="ddd"} 60.0
# HELP ecoflow_mppt_in_watts value from MQTT object key mppt.inWatts
# TYPE ecoflow_mppt_in_watts gauge
ecoflow_mppt_in_watts{device="ddd"} 0.0
# HELP ecoflow_mppt_dcdc12v_vol value from MQTT object key mppt.dcdc12vVol
# TYPE ecoflow_mppt_dcdc12v_vol gauge
ecoflow_mppt_dcdc12v_vol{device="ddd"} 0.0
# HELP ecoflow_mppt_scr_standby_min value from MQTT object key mppt.scrStandbyMin
# TYPE ecoflow_mppt_scr_standby_min gauge
ecoflow_mppt_scr_standby_min{device="ddd"} 300.0
# HELP ecoflow_mppt_car_out_watts value from MQTT object key mppt.carOutWatts
# TYPE ecoflow_mppt_car_out_watts gauge
ecoflow_mppt_car_out_watts{device="ddd"} 0.0
# HELP ecoflow_mppt_mppt_temp value from MQTT object key mppt.mpptTemp
# TYPE ecoflow_mppt_mppt_temp gauge
ecoflow_mppt_mppt_temp{device="ddd"} 0.0
# HELP ecoflow_mppt_cfg_ac_enabled value from MQTT object key mppt.cfgAcEnabled
# TYPE ecoflow_mppt_cfg_ac_enabled gauge
ecoflow_mppt_cfg_ac_enabled{device="ddd"} 1.0
# HELP ecoflow_mppt_chg_type value from MQTT object key mppt.chgType
# TYPE ecoflow_mppt_chg_type gauge
ecoflow_mppt_chg_type{device="ddd"} 0.0
# HELP ecoflow_mppt_dcdc12v_amp value from MQTT object key mppt.dcdc12vAmp
# TYPE ecoflow_mppt_dcdc12v_amp gauge
ecoflow_mppt_dcdc12v_amp{device="ddd"} 0.0
# HELP ecoflow_mppt_beep_state value from MQTT object key mppt.beepState
# TYPE ecoflow_mppt_beep_state gauge
ecoflow_mppt_beep_state{device="ddd"} 0.0
# HELP ecoflow_mppt_cfg_ac_out_vol value from MQTT object key mppt.cfgAcOutVol
# TYPE ecoflow_mppt_cfg_ac_out_vol gauge
ecoflow_mppt_cfg_ac_out_vol{device="ddd"} 230.0
# HELP ecoflow_mppt_cfg_chg_type value from MQTT object key mppt.cfgChgType
# TYPE ecoflow_mppt_cfg_chg_type gauge
ecoflow_mppt_cfg_chg_type{device="ddd"} 0.0
# HELP ecoflow_mppt_dc24v_temp value from MQTT object key mppt.dc24vTemp
# TYPE ecoflow_mppt_dc24v_temp gauge
ecoflow_mppt_dc24v_temp{device="ddd"} 0.0
# HELP ecoflow_mppt_car_standby_min value from MQTT object key mppt.carStandbyMin
# TYPE ecoflow_mppt_car_standby_min gauge
ecoflow_mppt_car_standby_min{device="ddd"} 0.0
# HELP ecoflow_mppt_dc_chg_current value from MQTT object key mppt.dcChgCurrent
# TYPE ecoflow_mppt_dc_chg_current gauge
ecoflow_mppt_dc_chg_current{device="ddd"} 8000.0
# HELP ecoflow_mppt_chg_state value from MQTT object key mppt.chgState
# TYPE ecoflow_mppt_chg_state gauge
ecoflow_mppt_chg_state{device="ddd"} 0.0
# HELP ecoflow_mppt_cfg_chg_watts value from MQTT object key mppt.cfgChgWatts
# TYPE ecoflow_mppt_cfg_chg_watts gauge
ecoflow_mppt_cfg_chg_watts{device="ddd"} 360.0
# HELP ecoflow_mppt_cfg_ac_out_freq value from MQTT object key mppt.cfgAcOutFreq
# TYPE ecoflow_mppt_cfg_ac_out_freq gauge
ecoflow_mppt_cfg_ac_out_freq{device="ddd"} 50.0

Any suggestions how to find the exact issue cause?

EcoFlow River 2 Pro

Thanks for this project.

I bought a River 2 Pro and wanted to know the cycle count because it is a sample/display model. It is unfortunate that the app does not provide this information.

After charging the display went from 0 cycles to what I can only assume is now the the actual cycle count (5).

Thank you again.

Compatibility with Prometheus base units

According to best practices for naming metrics and labels, the voltage should be in volts and the current in amperes as base units. EcoFlow sends millivolts mV and milliampere mA.
It is possible to convert units by exporter since all voltage, and current JSON keys have _vol and _amp suffix accordingly. The only downside here - it will break Grafana dashboard backward compatibility. A new revision will be required. Historical data will be affected as well. Still determining if the game is worth the candle.

Delta mini

Please can you add integration for Delta Mini?, thanks in advance.

Support DELTA Max Grafana dashboard

Hello, thank you for dashboard!

I have EcoFlow Max + extra battery, and it shows following
CleanShot 2023-01-24 at 21 35 45@2x

can i somehow help with debugging or adding support for max version?

Note:

Events are there and seems to be processing
CleanShot 2023-01-24 at 21 37 42@2x

No Data for DELTA 2

What is the current state of the API implementation?

I tried today for the first time and got no data so far.

Running on ubuntu (docker)

~$ docker run --rm \
	-e DEVICE_SN=R33************* \
	-e ECOFLOW_USERNAME=************** \
	-e ECOFLOW_PASSWORD=********** \
	-it -p 9090:9090 ghcr.io/berezhinskiy/ecoflow_exporter
2023-03-09 02:54:16,295 INFO    Login to EcoFlow API https://api.ecoflow.com/auth/login
2023-03-09 02:54:16,891 INFO    Successfully logged in: Ecoflow User
2023-03-09 02:54:16,891 INFO    Requesting IoT MQTT credentials https://api.ecoflow.com/iot-auth/app/certification
2023-03-09 02:54:17,464 INFO    Successfully extracted account: app-8cc8****************************
2023-03-09 02:54:17,509 INFO    Connecting to MQTT Broker mqtt.ecoflow.com:8883
2023-03-09 02:54:18,085 INFO    Subscribed to MQTT topic /app/device/property/R33*************
2023-03-09 02:54:22,895 INFO    Message queue is empty. Assuming that the device is offline
2023-03-09 02:54:27,896 INFO    Message queue is empty. Assuming that the device is offline
2023-03-09 02:54:32,896 INFO    Message queue is empty. Assuming that the device is offline
2023-03-09 02:54:37,896 INFO    Message queue is empty. Assuming that the device is offline
2023-03-09 02:54:42,896 INFO    Message queue is empty. Assuming that the device is offline
2023-03-09 02:54:47,897 INFO    Message queue is empty. Assuming that the device is offline
2023-03-09 02:54:52,897 INFO    Message queue is empty. Assuming that the device is offline
2023-03-09 02:54:57,897 INFO    Message queue is empty. Assuming that the device is offline
2023-03-09 02:55:02,898 INFO    Message queue is empty. Assuming that the device is offline

Exporter output

~$ curl --silent http://localhost:9090/
# HELP python_gc_objects_collected_total Objects collected during gc
# TYPE python_gc_objects_collected_total counter
python_gc_objects_collected_total{generation="0"} 308.0
python_gc_objects_collected_total{generation="1"} 235.0
python_gc_objects_collected_total{generation="2"} 0.0
# HELP python_gc_objects_uncollectable_total Uncollectable object found during GC
# TYPE python_gc_objects_uncollectable_total counter
python_gc_objects_uncollectable_total{generation="0"} 0.0
python_gc_objects_uncollectable_total{generation="1"} 0.0
python_gc_objects_uncollectable_total{generation="2"} 0.0
# HELP python_gc_collections_total Number of times this generation was collected
# TYPE python_gc_collections_total counter
python_gc_collections_total{generation="0"} 54.0
python_gc_collections_total{generation="1"} 4.0
python_gc_collections_total{generation="2"} 0.0
# HELP python_info Python platform information
# TYPE python_info gauge
python_info{implementation="CPython",major="3",minor="11",patchlevel="1",version="3.11.1"} 1.0
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 3.5926016e+07
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 2.6157056e+07
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.67833045501e+09
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 2.2800000000000002
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 9.0
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1.048576e+06
# HELP ecoflow_online 1 if device is online
# TYPE ecoflow_online gauge
ecoflow_online{device="R33*************"} 0.0
# HELP ecoflow_mqtt_messages_receive_total total MQTT messages
# TYPE ecoflow_mqtt_messages_receive_total counter

The app can access the device.

I tried so far:

  • Logout the app user
  • Force kill the app on the mobile
  • Create a dedicated api user for the exporter and share the device to it
    All to avoid possible session collision. But without any success.

Can anyone confirm this currently working?

Rename project to ecoflow_exporter

I believe that most people don't care how it is implemented. MQTT word can confuse and leads to misunderstanding. What do you think about renaming this project to ecoflow_exporter?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.