Enphase enlighten zonnepanelen koppelen aan homey

Als ik mijn Envoy op deze manier aanroep, wordt er om een token gevraagd, die eerst op een Enphase site moet worden gegenereerd. Zonder een token in te geven, is het resultaat bij mij geen json (of soortgelijke) file, die ik met een script zou kunnen uitlezen, maar een overzicht van het aantal in contact staande panelen.

De firmware op mijn Envoy is D8.2.42.64. Zou het met deze firmware te maken kunnen hebben, dat ik geen uitleesbaar resultaat krijg, of doe ik iets fout?

Deze Solar Panels app heeft onderhoud nodig, onder andere op wijzigingen die Enphase dit jaar heeft doorgevoerd. De koppeling werkt hierdoor niet meer als de connectie even is weggevallen door bijvoorbeeld een stroomstoring.

Zou iemand met programmeer vaardigheden deze Solar Panels app kunnen overnemen?
De oorspronkelijke developer reageert niet meer (ook niet op een DM) en de app source is via Github beschikbaar op GitHub - DiedB/Homey-SolarPanels: Connects production statistics of a wide range of PV inverters to Homey.

Ik zou het erg fijn vinden als ik de Enphase data weer beschikbaar zou kunnen hebben in Homey.

Het is de gebruikersinterface van de Envoy. Wat krijg je als je deze URL in een browser uitvoert?

Eerst moet ik user/wachtwoord van Enphase invullen, en daarna krijg ik onderstaand scherm.
Hoe kan ik geautomatiseerd de Enphase data hieruit halen?

Edit: Als ik http://192.168.xx.xx/production.json?details=1 invul (vervang xx door je eigen ip adres), dan krijg ik wel een json file:

{
  "production": [
    {
      "type": "inverters",
      "activeCount": 24,
      "readingTime": 1734862656,
      "wNow": 337,
      "whLifetime": 24037033
    },
    {
      "type": "eim",
      "activeCount": 0,
      "measurementType": "production",
      "readingTime": 1734862705,
      "wNow": 0.826,
      "whLifetime": 0,
      "varhLeadLifetime": 0,
      "varhLagLifetime": 0,
      "vahLifetime": 0,
      "rmsCurrent": 0.298,
      "rmsVoltage": 241.822,
      "reactPwr": 0,
      "apprntPwr": 69.83,
      "pwrFactor": 0,
      "whToday": 0,
      "whLastSevenDays": 0,
      "vahToday": 0,
      "varhLeadToday": 0,
      "varhLagToday": 0,
      "lines": [
        {
          "wNow": 0.826,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0.298,
          "rmsVoltage": 234.309,
          "reactPwr": 0,
          "apprntPwr": 69.83,
          "pwrFactor": 0,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        },
        {
          "wNow": 0,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0,
          "rmsVoltage": 4.837,
          "reactPwr": 0,
          "apprntPwr": 0,
          "pwrFactor": 0,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        },
        {
          "wNow": 0,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0,
          "rmsVoltage": 2.676,
          "reactPwr": 0,
          "apprntPwr": 0,
          "pwrFactor": 0,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        }
      ]
    }
  ],
  "consumption": [
    {
      "type": "eim",
      "activeCount": 0,
      "measurementType": "total-consumption",
      "readingTime": 1734862705,
      "wNow": 3.719,
      "whLifetime": 0,
      "varhLeadLifetime": 0,
      "varhLagLifetime": 0,
      "vahLifetime": 0,
      "rmsCurrent": 0.832,
      "rmsVoltage": 238.733,
      "reactPwr": 0,
      "apprntPwr": 98.408,
      "pwrFactor": 0.06,
      "whToday": 0,
      "whLastSevenDays": 0,
      "vahToday": 0,
      "varhLeadToday": 0,
      "varhLagToday": 0,
      "lines": [
        {
          "wNow": 3.232,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0.415,
          "rmsVoltage": 234.237,
          "reactPwr": 0,
          "apprntPwr": 97.227,
          "pwrFactor": 0.03,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        },
        {
          "wNow": 0.468,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0.339,
          "rmsVoltage": 3.179,
          "reactPwr": 0,
          "apprntPwr": 1.078,
          "pwrFactor": 0.43,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        },
        {
          "wNow": 0.019,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0.078,
          "rmsVoltage": 1.317,
          "reactPwr": 0,
          "apprntPwr": 0.102,
          "pwrFactor": 0.19,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        }
      ]
    },
    {
      "type": "eim",
      "activeCount": 0,
      "measurementType": "net-consumption",
      "readingTime": 1734862705,
      "wNow": 2.893,
      "whLifetime": 0,
      "varhLeadLifetime": 0,
      "varhLagLifetime": 0,
      "vahLifetime": 0,
      "rmsCurrent": 0.534,
      "rmsVoltage": 238.733,
      "reactPwr": 0,
      "apprntPwr": 28.535,
      "pwrFactor": 0.23,
      "whToday": 0,
      "whLastSevenDays": 0,
      "vahToday": 0,
      "varhLeadToday": 0,
      "varhLagToday": 0,
      "lines": [
        {
          "wNow": 2.406,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0.117,
          "rmsVoltage": 234.237,
          "reactPwr": 0,
          "apprntPwr": 27.354,
          "pwrFactor": 0.09,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        },
        {
          "wNow": 0.468,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0.339,
          "rmsVoltage": 3.179,
          "reactPwr": 0,
          "apprntPwr": 1.078,
          "pwrFactor": 0.43,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        },
        {
          "wNow": 0.019,
          "whLifetime": 0,
          "varhLeadLifetime": 0,
          "varhLagLifetime": 0,
          "vahLifetime": 0,
          "rmsCurrent": 0.078,
          "rmsVoltage": 1.317,
          "reactPwr": 0,
          "apprntPwr": 0.102,
          "pwrFactor": 0.19,
          "whToday": 0,
          "whLastSevenDays": 0,
          "vahToday": 0,
          "varhLeadToday": 0,
          "varhLagToday": 0
        }
      ]
    }
  ],
  "storage": [
    {
      "type": "acb",
      "activeCount": 0,
      "readingTime": 0,
      "wNow": 0,
      "whNow": 0,
      "state": "idle"
    }
  ]
}

Edit 2: het commando https://192.168.xx.xx/ivp/pdm/energy is snel en levert o.a. de huidige opbrengst en de opbrengst vandaag op. Lijkt 2x per minuut te worden ververst:

{
    "production": {
        "pcu": {
            "wattHoursToday": 775,
            "wattHoursSevenDays": 10525,
            "wattHoursLifetime": 24037380,
            "wattsNow": 142
        },
        "rgm": {
            "wattHoursToday": 0,
            "wattHoursSevenDays": 0,
            "wattHoursLifetime": 0,
            "wattsNow": 0
        },
        "eim": {
            "wattHoursToday": 0,
            "wattHoursSevenDays": 0,
            "wattHoursLifetime": 0,
            "wattsNow": 0
        }
    },
    "consumption": {
        "eim": {
            "wattHoursToday": 0,
            "wattHoursSevenDays": 0,
            "wattHoursLifetime": 0,
            "wattsNow": 0
        }
    }
}

Heb je advanced flows? Dan werkt het volgende:

Je kunt dan het http request kaartje gebruiken om de “TestString” op te halen uit de envoy

De flow wordt dan

“Antwoord” in het tweede kaartje is de tag die gegenereerd is door het eerste kaartje.
Het tweede kaartje (Lees tekst naar JSON en zet PAD naar nummer) genereert de nummer-tag “Resultaat” waar je opbrengst dan in staat.

Ik heb een “oude” envoy en daar werkt jouw commando niet. Ik gebruik wat ik eerder heb aangegeven: dat genereert de complete webpagina als output en daar haal ik met Homey Script de opbrengst uit.

1 Like

Bij het GET commando krijg ik een foutmelding:

Enig idee hoe ik deze kan maken (ik heb intussen een token, die een jaar geldig blijft) en hoe ik deze moet gebruiken in de Logica kaart van de advanced flow? Alles is lekker dichtgetimmerd op deze lokaal te gebruiken Envoy software versie D8.2.4264…

Heb je http: in plaats van https: geprobeerd?
Als je in een browser een response krijgt, zou dat met Homey http request ook moeten lukken.
Anders moet ik er even in duiken hoe dat met envoy 2 gaat. Of iemand anders op dit forum die dat weet?

Bij het uitvoeren van de advanced flow maakt ie er zelf https van, terwijl ik een http commando geef.

Hier hetzelfde probleem, nadat de Zonnepanelen app niet meer werkt via Enlighten en nu lokaal wil verbinden dezelfde uitdaging.
Ik heb de Envoy S Metered maar helaas geen CT spoelen :frowning: .

Ik heb een token, en kan via een browser de api calls doen. Maar ik krijg net als @Amersfoort de self-signed certificate melding.
In de browser redirect deze url namelijk ook naar https.

Er zal dus iets in de flow bij moeten komen om deze te negeren denk ik.

Omdat ik klaar was met dit gedoe heb ik ervoor gekozen om een “Shelly PM mini (16A limit)” in serie te plaatsen en heb ik mooi realtime data (sidenote deze word als sensor uitgelezen en kan dus niet wijzigen “wat is er ingeplugd” om een zonnepaneel te kiezen, maar hiervoor heb ik de ontwikkelaar al benaderd).

Ik ben niet zo technisch, dus vandaar de volgende vraag: Hoe plaats ik dat “in serie”. Ik heb 2 Q Relay units en 2 fasen voor de zonnepanelen omdat mijn theoretische Wattpiek bijna 8000 is.
Wat kan Homey uitlezen/automatiseren van de Shelly?


Zo is het iig in mijn situatie aangesloten, dan zou je in jouw situatie alles vanaf de meterkast dubbel hebben dus mogelijk zo uivoeren.

Maakt mijn tekening meer duidelijker?
Groet. Sebas

Dit heb ik opgelost door een virtueel device “Zonnepanelen” te maken en met een “Iedere…” trigger-kaartje de measure_power capability te updaten met de opbrengst-waarde die ik uit mijn oude Envoy kan halen. Dit zou jij kunnen doen met je “Shelly”-waarde. Door de measure-power capability te gebruiken wordt het virtuele device herkend door het energie-dashboard.

1 Like

Zoiets had ik al in gedachten maar met de standaard virtueel apparaat zag ik deze optie niet maar ik heb nu even verder gekeken en als ik de app device capabilities pak kan ik dit wel creëren lijkt mij. Heb jij t ook dmv deze app gedaan?

Iig alvast bedankt voor de tip


Deze app doet in ieder geval precies wat ik wil/wat jij voorstelde alleen heb ik nu een negatieve waarde die ik uitlees.

Dus ik verwacht wanneer ik de “L & O” draden omdraai op de Shelly dat ik positieve waardes ipv nagatieve krijg

Geeft Shelly zelf ook een negatieve waarde? Weet je wel wat je allemaal doet in je meterkast? :slight_smile: Ik heb de app “Virtual Devices” gebruikt.

Yes de Shelly zelf ook dat is de (Zonnepanelen) en de virtuele is (Zonnepanelen_Virtual) vd screenshot hierboven.

En ja maak je niet ongerust ik programmeer (en sluit soms zelf ook ) industriele machines aan dus dit is een peulenschilletje :slight_smile:

Bedankt voor je reactie.
Doordat ik te weinig elektrotechnische kennis heb, blijf ik denk ik maar uit de meterkast, en zoek ik het nu maar in een softwarematige oplossing. Doordat het een officiele app is, zal ik Athom vragen, of iemand de app kan updaten, zodat Enphase metingen weer gaan werken.

Voor minder of niet-elektrotechnisch opgeleide mensen kan ik stroomklemmen aanraden als meetinstrument.

Zo hoef je geen bedrading los te halen, je klikt gewoon een meetklem om de te meten draad heen.
Wel moet de meetunit op 230V worden aangesloten.
Laat dat door iemand met kennis van zaken doen, zéker in de meterkast.
Voorbeeld:

1 Like

lol ik moest de app “Virtuele apparaten” hebben :smiley: maar die werkt indd prettiger dan de andere die ik had gevonden,
nu moet ik mogelijk alleen de waarde van mijn shelly inverteren waar ik het hierboven over had maar kan ik ook berekenen door deze functie te gebruiken prettiger dan weer met de elektra bezig moeten.
(Morgen ff kijken hoe t gaat als de zon weer schijnt)

1 Like