Om de REST API van Enphase te kunnen gebruiken heb je vanaf firmware 7 een access token nodig. Zo’n token is heel eenvoudig aan te maken middels onderstaand PHP-script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php $user='YOUR_EMAIL_ADDRESS_HERE'; // emailadres waarmee je inlogt op https://enlighten.enphaseenergy.com/ $password='YOUR_PASSWORD_HERE'; // wachtwoord waarmee je ingogt op https://enlighten.enphaseenergy.com/ $envoy_serial='YOUR_ENVOY_SERIAL_HERE'; // is te vinden als je bent ingelogd op https://enlighten.enphaseenergy.com/ en dan vervolgens SYSTEEM > APPARATEN // RETRIEVE SESSION ID $data = (array( "user[email]" => "$user", "user[password]" => "$password" )); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://enlighten.enphaseenergy.com/login/login.json'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); $response = json_decode($response); $session_id = $response->session_id; // RETRIEVE TOKEN $data = json_encode(array( "session_id" => "$session_id", "serial_num" => "$envoy_serial", "username" => "$user" )); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://entrez.enphaseenergy.com/tokens'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', ]); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); curl_close($ch); echo $response.PHP_EOL.PHP_EOL; ?> |
Shoot,
I tried this but I do not get anything back when running the script. I tried this link: https://entrez.enphaseenergy.com/tokens‘ manually and get back:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sat Jul 15 19:31:29 UTC 2023
There was an unexpected error (type=Not Found, status=404).
Has this already changed??
No, this still works fine!
Hoi,
Ik vind het enrom interessant om mijn panelen op afstand aan/uit te zetten.
Ik loop alleen tegen een aantal problemen aan. Vandaar mijn vraag: Met welke applicatie kan ik dit PHP script gemakkelijk uitvoeren?
Ik heb het via CMD-prompt (Win10) geprobeerd, maar de verschillende regels veroorzaakten een error. En, is het wellicht mogelijk om het script vanaf een iPhone uit te voeren?
JB
Je moet hiervoor wel een PHP web server hebben draaien, dat kan b.v. op een Raspberry Pi: https://ehoco.nl/apache-web-server-php-installeren-op-raspberry-pi/
Ik heb de web server nu draaien op een rpi. Het aanmaken en/of opvragen van een token werkte perfect. Ik kan tevens de geldigheid van het token opvragen. Alles lijkt correct te werken.
Echter bij het opvragen van de status van de panelen, krijg ik een error: 401 Authorization Required
Ik heb zowel het token als het IP adres van mijn Envoy ingevuld waar aangegeven.
Enig idee wat ik verkeerd doe?
Hoi JB, waarschijnlijk is jouw token aangemaakt met een owner-account, maar je moet het token aangemaakt hebben met een installer-account (mogelijk werkt een DHZ-account ook).
Ik krijg bij het draaien van dit script deze melding:
Fatal error: Uncaught Error: Call to undefined function curl_init() in C:\PHP\enphase.php:12
Stack trace:
#0 {main}
thrown in C:\PHP\enphase.php on line 12
Wat gaat er fout?
Ik heb geen verstand van PHP op een Windows machine, maar is de PHP cURL extensie wel actief?