Git Product home page Git Product logo

matthew1471 / enphase-api Goto Github PK

View Code? Open in Web Editor NEW
65.0 16.0 8.0 2.03 MB

Enphase-API is an unofficial project providing an API wrapper (including local/LAN Gateway API) and the documentation for Enphase®'s products and services.

License: GNU General Public License v3.0

Python 100.00%
enphase solar solar-system enphase-envoy enphase-api enphase-iq-envoy generation production sun microinverters

enphase-api's Introduction

Enphase-API

Introduction

Enphase-API is an unofficial project providing an API wrapper and the documentation for Enphase®'s products and services.

This project is focusing primarily on the Enphase® "IQ Gateway" (formerly "IQ Envoy") system, the gateway for Enphase®'s IQ6, IQ7 and IQ8 Microinverters used on solar panels to convert Direct Current (DC) to Alternating Current (AC) to be directly consumed by the home.

⚠️
This project currently predominantly consumes the same local API that the local Gateway web administration portal consumes and Enphase® may choose to change it in subsequent updates without warning.

The official route for production applications is to use the Enphase® developer cloud-based API. The Enphase® IQ Gateway, however, only reports to the Enphase® Cloud either every 15 minutes (when connected via WiFi or Ethernet) or every 6 hours (when connected via a cellular modem) and its consumption is currently very expensive for hobbyist consumption if data is required more than once an hour throughout the month or more detailed statistics or configuration is required.

Documentation

The documentation for the wrapper and the API itself is at Documentation/README.adoc

Code

Copyright © 2023 Matthew1471

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Documentation

Copyright © 2023 Matthew1471.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the file Documentation/LICENSE.md.

Authors

Enphase-API is led by Matthew1471 and may have received contributions from other individuals in GitHub’s awesome community. The project was initiated in 2022 by Matthew1471 after having his own solar installation and wanting to know when is the cheapest time to put on the dishwasher.

Trademarks

Enphase®, Envoy® are trademarks of Enphase Energy®.

All trademarks are the property of their respective owners.

Any trademarks used in this project are used in a purely descriptive manner and to state compatability.

enphase-api's People

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

Watchers

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

enphase-api's Issues

Get Current Profile does not work with Bearer Auth

I got the entire Bearer auth running with my standalone C++ Mac application which I like to port down to an ESP32 later on for energy switching based on metered data. Thanks for this great documentation.

When requesting the Profile "installer/agf/details.json”, the Bearer token based auth gives error 401. Using an HTTP session cookie e.g.:
”envoy_122143077773=xxx; sessionId=3TUYsfNoGCYPQmCyDPuvoMRAWV6OiNaA"
it works with a different session ID compared to the Bearer login session ID.
It works only if I login via Firefox to envoy.local via login with Enphase, then copying this session ID from the browser into my app.

PS: Have you logged into the Envoy via a TTY serial adapter to see the running code and the JavaScript code (maybe Node.js), or any other trick.

Response /ivp/ensemble/submod

Response from /ivp/ensemble/submod Envoy vD8.2.62

{
  "serial_nums": {
    "XXX": {
      "device_type": 22,
      "com_interface_str": "USB",
      "device_id": "XXX",
      "admin_state": 43,
      "admin_state_str": "ENS_DEVICE_STATE_READY",
      "msg_retry_count": 0,
      "part_number": "800-01821-r05",
      "assembly_number": "880-01821-r05",
      "app_fw_version": "3.0.239_rel/31.11",
      "ibl_fw_version": "1.3.413",
      "swift_asic_fw_version": "",
      "bmu_fw_version": "",
      "submodule_count": 1,
      "submodules": {
        "XXX": {
          "device_type": 24,
          "admin_state": 1,
          "part_number": "800-01821-r05",
          "assembly_number": "546-00003-01",
          "dmir": {
            "part_number": "546-00003-01",
            "assembly_number": "01"
          },
          "procload": {
            "part_number": "3.0.239_rel/31.11",
            "assembly_number": "3.0.239_rel/31.11"
          }
        }
      }
    },
    "XXX": {
      "device_type": 17,
      "com_interface_str": "CAN",
      "device_id": "XXX",
      "admin_state": 24,
      "admin_state_str": "ENPWR_STATE_OPER_CLOSED",
      "msg_retry_count": 10,
      "part_number": "865-00378-r24",
      "assembly_number": "885-00378-r27",
      "app_fw_version": "3.0.5509_rel/31.11",
      "ibl_fw_version": "1.3.413",
      "swift_asic_fw_version": "",
      "bmu_fw_version": "",
      "submodule_count": 2,
      "submodules": {
        "XXX": {
          "device_type": 18,
          "admin_state": 1,
          "part_number": "800-01820-r05",
          "assembly_number": "546-00003-01",
          "dmir": {
            "part_number": "546-00003-01",
            "assembly_number": "01"
          },
          "procload": {
            "part_number": "3.0.5509_rel/31.11",
            "assembly_number": "3.0.5509_rel/31.11"
          }
        },
        "XXX": {
          "device_type": 20,
          "admin_state": 1,
          "part_number": "800-01861-r01",
          "assembly_number": "546-00003-01",
          "dmir": {
            "part_number": "546-00003-01",
            "assembly_number": "01"
          },
          "procload": {
            "part_number": "",
            "assembly_number": ""
          }
        }
      }
    },
    "XXX": {
      "device_type": 13,
      "com_interface_str": "CAN",
      "device_id": "XXX",
      "admin_state": 6,
      "admin_state_str": "ENCHG_STATE_READY",
      "reported_grid_mode": "multimode-ongrid",
      "phase": "ph-a",
      "der_index": 2,
      "encharge_revision": 3,
      "encharge_capacity": 5000,
      "encharge_rated_power": 3840,
      "reported_enc_grid_state": "multimode-ongrid",
      "msg_retry_count": 5,
      "part_number": "836-01826-r76",
      "assembly_number": "892-00024-r78",
      "app_fw_version": "3.0.6306_rel/31.11",
      "ibl_fw_version": "3.1.813-8c003b",
      "swift_asic_fw_version": "001.002.1.7.2",
      "bmu_fw_version": "3.8.63",
      "submodule_count": 7,
      "submodules": {
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 15,
          "admin_state": 1,
          "part_number": "800-00329-r06",
          "assembly_number": "546-00002-01",
          "dmir": {
            "part_number": "546-00002-01",
            "assembly_number": "01"
          },
          "procload": {
            "part_number": "3.0.6306_rel/31.11",
            "assembly_number": "3.0.6306_rel/31.11"
          }
        }
      }
    },
    "XXX": {
      "device_type": 13,
      "com_interface_str": "CAN",
      "device_id": "XXX",
      "admin_state": 6,
      "admin_state_str": "ENCHG_STATE_READY",
      "reported_grid_mode": "multimode-ongrid",
      "phase": "ph-a",
      "der_index": 2,
      "encharge_revision": 3,
      "encharge_capacity": 5000,
      "encharge_rated_power": 3840,
      "reported_enc_grid_state": "multimode-ongrid",
      "msg_retry_count": 1,
      "part_number": "836-01826-r81",
      "assembly_number": "892-00024-r83",
      "app_fw_version": "3.0.6306_rel/31.11",
      "ibl_fw_version": "3.1.813-8c003b",
      "swift_asic_fw_version": "001.002.1.7.2",
      "bmu_fw_version": "3.8.63",
      "submodule_count": 7,
      "submodules": {
        "122331107536": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 15,
          "admin_state": 1,
          "part_number": "800-00329-r06",
          "assembly_number": "546-00002-01",
          "dmir": {
            "part_number": "546-00002-01",
            "assembly_number": "01"
          },
          "procload": {
            "part_number": "3.0.6306_rel/31.11",
            "assembly_number": "3.0.6306_rel/31.11"
          }
        }
      }
    },
    "XXX": {
      "device_type": 13,
      "com_interface_str": "CAN",
      "device_id": "XXX",
      "admin_state": 6,
      "admin_state_str": "ENCHG_STATE_READY",
      "reported_grid_mode": "multimode-ongrid",
      "phase": "ph-a",
      "der_index": 2,
      "encharge_revision": 3,
      "encharge_capacity": 5000,
      "encharge_rated_power": 3840,
      "reported_enc_grid_state": "multimode-ongrid",
      "msg_retry_count": 32,
      "part_number": "836-01826-r81",
      "assembly_number": "892-00024-r83",
      "app_fw_version": "3.0.6306_rel/31.11",
      "ibl_fw_version": "3.1.813-8c003b",
      "swift_asic_fw_version": "001.002.1.7.2",
      "bmu_fw_version": "3.8.63",
      "submodule_count": 7,
      "submodules": {
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 15,
          "admin_state": 1,
          "part_number": "800-00329-r06",
          "assembly_number": "546-00002-01",
          "dmir": {
            "part_number": "546-00002-01",
            "assembly_number": "01"
          },
          "procload": {
            "part_number": "3.0.6306_rel/31.11",
            "assembly_number": "3.0.6306_rel/31.11"
          }
        }
      }
    },
    "XXX": {
      "device_type": 13,
      "com_interface_str": "CAN",
      "device_id": "XXX",
      "admin_state": 6,
      "admin_state_str": "ENCHG_STATE_READY",
      "reported_grid_mode": "multimode-ongrid",
      "phase": "ph-a",
      "der_index": 2,
      "encharge_revision": 3,
      "encharge_capacity": 5000,
      "encharge_rated_power": 3840,
      "reported_enc_grid_state": "multimode-ongrid",
      "msg_retry_count": 6,
      "part_number": "836-01826-r81",
      "assembly_number": "892-00024-r83",
      "app_fw_version": "3.0.6306_rel/31.11",
      "ibl_fw_version": "3.1.813-8c003b",
      "swift_asic_fw_version": "001.002.1.7.2",
      "bmu_fw_version": "3.8.63",
      "submodule_count": 7,
      "submodules": {
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 14,
          "admin_state": 1,
          "part_number": "800-01729-r02",
          "assembly_number": "549-00056-r00",
          "dmir": {
            "part_number": "549-00056-r00",
            "assembly_number": "4.35.3-D35"
          },
          "procload": {
            "part_number": "4.35.1-D35",
            "assembly_number": "4.35.1-D35"
          }
        },
        "XXX": {
          "device_type": 15,
          "admin_state": 1,
          "part_number": "800-00329-r06",
          "assembly_number": "546-00002-01",
          "dmir": {
            "part_number": "546-00002-01",
            "assembly_number": "01"
          },
          "procload": {
            "part_number": "3.0.6306_rel/31.11",
            "assembly_number": "3.0.6306_rel/31.11"
          }
        }
      }
    }
  }
}

Endpoint for setting IQ Battery profile?

It looks like /admin/lib/tariff will tell you what the current battery profile is. Do you know if there is a POST endpoint that allows changing it and/or what the valid battery_mode types are that show up on /admin/lib/tariff?

Also curious if the Envoy has any concept of the Storm Guard feature, or if that's all cloud based and just changes the battery mode ot a normal full-backup profile.

Thanks!

storage ct can be reported in /ivp/meters measurementtype

Envoy can report a 3th CT for storage when used with a combiner box. Seen it with fw 8.2.127, but may exist before then one, not sure.

[
    {
        "eid": 704643328,
        "state": "enabled",
        "measurementType": "production",
        "phaseMode": "split",
        "phaseCount": 2,
        "meteringStatus": "normal",
        "statusFlags": []
    },
    {
        "eid": 704643584,
        "state": "enabled",
        "measurementType": "net-consumption",
        "phaseMode": "split",
        "phaseCount": 2,
        "meteringStatus": "normal",
        "statusFlags": []
    },
    {
        "eid": 704643840,
        "state": "enabled",
        "measurementType": "storage",
        "phaseMode": "split",
        "phaseCount": 2,
        "meteringStatus": "normal",
        "statusFlags": []
    }
]

And /ivp/meters/readings will have a 3th section for the storage CT

Response /ivp/ensemble/ec1_wiring_test

Response from /ivp/ensemble/ec1_wiring_test Envoy vD8.2.62

{
    "ec1_wiring_test_result": {
        "status": "ENC_CONN_NOT_VERIFIED",
        "code": -1,
        "timestamp": "Wed Dec 31 18:00:00 1969\n"
    }
}

Accessing IQ Gateway's internal DB from the local API?

Hi there,

Congratulations and many thanks for the great job you're doing with this project!
I recently started playing with the IQ Gateway's local API, and I learned the device has an internal database where it stores at least production data that can be communicated to Enlighten. Sounds like there would be at least several days of data stored in there, which could be very handy if we could read, obvioulsy.
Would you know if there is any way to access and read the IQ Gateway's internal database from the API?

Best,
Fabien

Add Phasemode to ivp/meters

ivp/meters field phaseMode is currently described as 'The number of phases the meter can monitor' which is for phaseCount.

I know of at least:

  • three
  • split

values showing in phaseMode.

API documentation source

Hi,

I've just got an Enphase IQ Gateway and have started playing around with the APIs and I was planning on creating something similar to this in C#.

I was wondering where you found the complete API documentation for the gateway as the online pdf only contains a brief summary of the available endpoints?

I can happily base use this library as a reference for the endpoints but figured it might be better to go straight to the source if possible :)

Thanks

Response /ivp/ensemble/device_list

Below are a few responses from /ivp/ensemble/device_list Envoy vD8.2.62

device_type 22 is unknown.

{
    "XXX": {
        "device_type": 22
    }
}

device_type 17 is the IQ SystemController 3

{
    "XXX": {
        "device_type": 17,
        "admin_state": 24,
        "admin_state_str": "ENPWR_STATE_OPER_CLOSED",
        "grid_status": "Off-grid"
    }
}

device_type 13 are 5P batteries

{
    "492319003325": {
        "device_type": 13,
        "admin_state": 6,
        "admin_state_str": "ENCHG_STATE_READY",
        "soc": 62
    }
}

inv.adoc suggestion

It sppears ip is the current running firmware. Same as inventory.json img_pnum_running and matches what can be seen from Enlighten under menu>system>devices>microinverters. For what ir is worth, my Envoy is running FW D8.2.62

/inv

{
	"ce": "1627395857",
	"dtype": "1",
	"chtype": "1",
	"as": "2",
	"s": "XXX",
	"pn": "800-01384-r02",
	"ptpn": "549-00040-r01-v02.48.02",
	"edcon": "0",
	"devobs": "0",
	"ctcon": "0",
	"ctobs": "0",
	"ctctf": "0",
	"chcon": "0",
	"chobs": "0",
	"chctf": "0",
	"cd": "1699630380",
	"ld": "1703967194",
	"ip": "521-00005-r05-v02.48.01",
	"id": "0",
	"ap": "883-01384-r03",
	"fp": "000-00000-r00",
	"cap": "6308347"
}

inventory.json

{
"part_num": "800-01384-r02",
"installed": "1699630380",
"serial_num": "XXX",
"device_status": [
	"envoy.global.ok"
],
"last_rpt_date": "1703967519",
"admin_state": 2,
"dev_type": 1,
"created_date": "1699630380",
"img_load_date": "0",
"img_pnum_running": "521-00005-r05-v02.48.01
/",
"ptpn": "549-00040-r01-v02.48.02",
"chaneid": 1627395857,
"device_control": [
	{
		"gficlearset": false
	}
],
"producing": true,
"communicating": true,
"provisioned": true,
"operating": true,
"phase": "ph-a"
}

Non-metered Envoys return empty responses from /ivp/meters

Hello,

this API seems to be just what I need for my local metering system. However, when setting this up, I did the configuration and was able to connect to the Enphase system. Trying out gateway_console.py I found out that gateway.api_call('/ivp/meters') returns an empy response. This is probably due to my gateway being a non-metered one.
The gateway_console.py script was easy to fix by adding next(..., {state: 'enabled'}) structure around the list comprehension on lines180 and 198 but I am wondering if the idea of the API would be return something where this non-meteredeness would be obvious?

Keep up the good work!
Best regards,
Marko

Documentation for fresh solar install on how to begin leveraging this repo

I just got my solar activated yesterday, and am looking to start monitoring locally with my servers. I cannot seem to find a good howto for how exactly to get the auth credentials so I can talk to the system..

I am guessing this part from the quick start guide:

3. Auth URL
To start making API requests, the application must be authorized by the system owner. The Auth URL must be sent to the system owner via email or must be embedded in the HO App created by the developer. For the above app, Auth URL is https://api.enphaseenergy.com/oauth/authorize?response_type=code&client_id=f2a479f3c6067f0d9517cadae7f00b47

But who do I reach out to at Enphase for this? Do we have to imply we are creating an app for them to give us credentials?

I am trying to be honest with Enphase, and am really hoping that there is somewhere I can simply request auth keys so I can query my local install and drop data into Grafana and Graphite/InfluxDb on my own.

New CT Reversal endpoint?

I get a 404 - Not found when hitting the /ivp/meters/ctreversal/{EID} endpoint. Has this changed / is there an alternate?

Response /ivp/ensemble/sleep

Response from /ivp/ensemble/sleep Envoy vD8.2.62
Four 5P batteries

{
    "encharge_sleep": [
        {
            "serial_num": "XXX",
            "sleep_req_type": 0,
            "sleep_min_soc": 0,
            "sleep_max_soc": 100
        },
        {
            "serial_num": "XXX",
            "sleep_req_type": 0,
            "sleep_min_soc": 0,
            "sleep_max_soc": 100
        },
        {
            "serial_num": "XXX",
            "sleep_req_type": 0,
            "sleep_min_soc": 0,
            "sleep_max_soc": 100
        },
        {
            "serial_num": "XXX",
            "sleep_req_type": 0,
            "sleep_min_soc": 0,
            "sleep_max_soc": 100
        }
    ]
}

Document which software version the structures apply to

Good work documenting all the structures. It looks like you are working with V7

Just be aware that older versions do not have all the fields and/or API's. Might want to look at making that clear what versions they apply to.

Just FYI - Forced Inverter Report using NEWSCAN

Hi, How are you ? Thank you for the great effort.
Just Let me share a small top to force to refresh report from Inverters for 1 minute interval.

In the old Local API, if call, COMCHECK. it can refresh report time to 1min.

BUT, in new API (v7) COMCHECK method is not working, have to use PUT NEWSCAN to force to refresh Inverter Data Report. and, can get 1 minute resolution.

if using Enphase's document to get a token with 'user[email]', only can get an owner token. I am trying to find a way to get a installer token to get installer access

Looking for an battery energy endpoint

Hey Matthew1471,
I really appreciate your effort maintaining a documentation for the API.

Are you by any chance aware of an endpoint that provides data for the total energy charged/discharged by Encharge batteries? I'm only aware of the endpoints providing the instantaneous power of the batteries.
Would be really nice to add that data to the home-assistant Enphase integrations.

Best regards

Response /ivp/ensemble/gen_wiring_test` & /ivp/ensemble/generator

Response from /ivp/ensemble/gen_wiring_test Envoy vD8.2.62
System Controller 3G (Generator Support). Generator not connected at this time

{
    "gen_wiring_test_result": {
        "status": "GEN_CONN_NOT_VERIFIED",
        "code": -1,
        "timestamp": "Wed Dec 31 18:00:00 1969\n"
    }
}

Response from /ivp/ensemble/generator

{
    "admin_state": "unknown",
    "oper_state": "open",
    "admin_mode": 0,
    "schedule": 0,
    "start_soc": 100,
    "stop_soc": -1,
    "exc_on": 0,
    "present": 0,
    "type": 1
}

Response /ivp/meters/storage_setting

Response from /ivp/meters/storage_setting Envoy vD8.2.62

{
    "isCalibrated": true,
    "storage_cfg": {
        "prod_ct_present": false,
        "cons_ct_present": true,
        "prod_ch_mask": 4,
        "cons_ch_mask": 4
    }
}

Response /ivp/ensemble/profile_status

Response from /ivp/ensemble/profile_status Envoy vD8.2.62
Configured for Self Consumption mode

[
    {
        "serial_num": "XXX",
        "device_type": "ENPOWER",
        "admin_state": 2,
        "device_record_type": "AGF",
        "ph_ind": "ph-a",
        "gcpa_ph_ind": "ph-a",
        "man_ph_ind": "ph-unk",
        "status": 2,
        "message": ""
    },
    {
        "serial_num": "XXX",
        "device_type": "ENPOWER",
        "admin_state": 2,
        "device_record_type": "AGF",
        "ph_ind": "ph-a",
        "gcpa_ph_ind": "ph-a",
        "man_ph_ind": "ph-unk",
        "status": 2,
        "message": ""
    },
    {
        "serial_num": "XXX",
        "device_type": "ENCHARGE",
        "admin_state": 2,
        "device_record_type": "AGF",
        "ph_ind": "ph-a",
        "gcpa_ph_ind": "ph-a",
        "man_ph_ind": "ph-unk",
        "status": 2,
        "message": ""
    },
    {
        "serial_num": "XXX",
        "device_type": "ENCHARGE",
        "admin_state": 2,
        "device_record_type": "AGF",
        "ph_ind": "ph-a",
        "gcpa_ph_ind": "ph-a",
        "man_ph_ind": "ph-unk",
        "status": 2,
        "message": ""
    },
    {
        "serial_num": "XXX",
        "device_type": "ENCHARGE",
        "admin_state": 2,
        "device_record_type": "AGF",
        "ph_ind": "ph-a",
        "gcpa_ph_ind": "ph-a",
        "man_ph_ind": "ph-unk",
        "status": 2,
        "message": ""
    },
    {
        "serial_num": "XXX",
        "device_type": "ENCHARGE",
        "admin_state": 2,
        "device_record_type": "AGF",
        "ph_ind": "ph-a",
        "gcpa_ph_ind": "ph-a",
        "man_ph_ind": "ph-unk",
        "status": 2,
        "message": ""
    }
]

Response - /ivp/ensemble/device_list

Here is a response from /ivp/ensemble/device_list Envoy vD8.2.62

{
  "usb": {
    "ck2_bridge": "connected",
    "auto_scan": false
  },
  "devices": [
    {
      "serial_number": "XXX",
      "device_type": 22,
      "com_interface": 1,
      "com_interface_str": "USB",
      "status": "Connected"
    },
    {
      "serial_number": "XXX",
      "device_type": 17,
      "com_interface": 2,
      "com_interface_str": "CAN",
      "status": "Connected"
    },
    {
      "serial_number": "XXX",
      "device_type": 13,
      "com_interface": 2,
      "com_interface_str": "CAN",
      "status": "Connected",
      "dev_info": {
        "capacity": 5000,
        "DER_Index": 2
      }
    },
    {
      "serial_number": "XXX",
      "device_type": 13,
      "com_interface": 2,
      "com_interface_str": "CAN",
      "status": "Connected",
      "dev_info": {
        "capacity": 5000,
        "DER_Index": 2
      }
    },
    {
      "serial_number": "XXX",
      "device_type": 13,
      "com_interface": 2,
      "com_interface_str": "CAN",
      "status": "Connected",
      "dev_info": {
        "capacity": 5000,
        "DER_Index": 2
      }
    },
    {
      "serial_number": "XXX",
      "device_type": 13,
      "com_interface": 2,
      "com_interface_str": "CAN",
      "status": "Connected",
      "dev_info": {
        "capacity": 5000,
        "DER_Index": 2
      }
    }
  ]
}

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.