Op een zonnige dag met veel wind kan het zijn dat de dynamische stroomprijzen gedurende een periode negatief worden. Indien je zonnepanelen hebt betekent dit dat je (mogelijk) moet betalen om stroom aan het net te leveren. Dat is natuurlijk niet de bedoeling. Enever.nl heeft PHP-script gemaakt om zonnepanelen uit- en aan te zetten.
Met het eerste script kun je controleren wat de huidige status van de zonnepanelen is. Daarna volgen de scripts om de zonnepanelen uit te zetten en aan te zetten (beide scripts zijn bijna hetzelfde, alleen deze regel verschilt: curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"length\":1,\"arr\":[1]}");
Vergeet niet om jouw token in te vullen waar
staat en het IP adres te wijzigen! Mocht je nog geen JWT-token hebben, dan kun je hier lezen hoe je eenvoudig een Enphase token kunt aanmaken middels een PHP-script.$jwt_token = 'YOUR_TOKEN_HERE';
LET OP! Je hebt hier een installer-account voor nodig (mogelijk werkt het ook met een DHZ-account).
STATUS ZONNEPANELEN OPVRAGEN:
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 41 42 |
<?php // COOKIE FILE $ckfile = tempnam ("/tmp", "CURLCOOKIE"); // JWT token $jwt_token = 'YOUR_TOKEN_HERE'; // COOKIE OPSLAAN $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://192.168.2.33/auth/check_jwt'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = "Authorization: Bearer $jwt_token"; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); // STATUS OPVRAGEN $ch = curl_init(); //curl_setopt($ch, CURLOPT_URL, 'https://192.168.2.33/production.json?details=1'); curl_setopt($ch, CURLOPT_URL, 'https://192.168.2.33/ivp/mod/603980032/mode/power'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = "Authorization: Bearer $jwt_token"; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); echo $result; ?> |
ZONNEPANELEN UITZETTEN:
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 41 42 43 |
<?php // COOKIE FILE $ckfile = tempnam ("/tmp", "CURLCOOKIE"); // JWT token $jwt_token = 'YOUR_TOKEN_HERE'; // COOKIE OPSLAAN $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://192.168.2.33/auth/check_jwt'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = "Authorization: Bearer $jwt_token"; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); // ZONNEPANELEN UITZETTEN $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://192.168.2.33/ivp/mod/603980032/mode/power'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"length\":1,\"arr\":[1]}"); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = 'Authorization: Bearer $jwt_token'; $headers[] = 'Content-Type: application/x-www-form-urlencoded'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); ?> |
ZONNEPANELEN AANZETTEN:
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 41 42 43 |
<?php // COOKIE FILE $ckfile = tempnam ("/tmp", "CURLCOOKIE"); // JWT token $jwt_token = 'YOUR_TOKEN_HERE'; // COOKIE OPSLAAN $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://192.168.2.33/auth/check_jwt'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = "Authorization: Bearer $jwt_token"; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); // ZONNEPANELEN AANZETTEN $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://192.168.2.33/ivp/mod/603980032/mode/power'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"length\":1,\"arr\":[0]}"); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = 'Authorization: Bearer $jwt_token'; $headers[] = 'Content-Type: application/x-www-form-urlencoded'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); ?> |
Bedankt voor het delen van deze instructie.
Ik loop echter wel vast.
Het maken van een token lukt prima. Ik kan vervolgens voor het controleren van de productie de stap: ‘auth/check_jwt’ ook uitvoeren. Echter bij het daadwerkelijk controleren of de productie aan of uit staat, krijg ik de melding 401 unauthorized.
Wanneer ik in de browser naar de gateway ga krijg ik met de URL dezelfde fout.
Zou je voldoende rechten moeten hebben met het token om dit te kunnen opvragen en vervolgens te schakelen?
Met vriendelijke groet,
Edwin de Boer
Hoi Edwin, je hebt hiervoor een token nodig die is aangemaakt met een installer-account (wellicht werkt het ook met een DHZ-account, dat weet ik niet).
Betekent het gebruik van een ‘installer account’ dat na 12 uur een nieuw token aangemaakt moet worden?
Nee, hier is het token van een installer account 1 jaar geldig.
Dag enever.nl,
Is het (al) mogelijk om, in combinatie met mijn dynamische contract, het uitzetten van de panelen automatisch gaat? Gecombineerd met de negatieve prijzen? Kan je daar iets meer over vertellen of weet je waar ik die informatie kan vinden?
Alvast bedankt!
Elisabeth
Hallo Elisabeth, wij hebben daar geen script gemaakt, maar op zich zou dat niet zo heel lastig moeten zijn
Ik heb dit succesvol in Home Assistant voor elkaar gekregen via onderstaande HACS integratie.
Wel moet je dan Enphase bellen om een DIY account te krijgen (met het standaard account van Enphase kun je de panelen niet aan- of uitzetten).
https://github.com/vincentwolsink/home_assistant_enphase_envoy_installer
@edward, kort vraagje. Ik heb HA op mijn Synology geïnstalleerd. En via bovenstaande link probeer ik de repository in HACS te openen. Echter hij blijft hangen bij mij. Enig idee?
Is het DIY account een betaald account en waar bij Enphase kan je dit aanvragen?
Is een gratis account. Kun je aanmaken via https://enlighten.enphaseenergy.com/manager/registration
welke kies je dan?
Deze?
-I am a do-it-yourself user installing Enphase products?
En ik heb een bestaand systeem dat onder ‘controle’ staat van mijn installateur. kan het dan?
Ja, dat kan zeker
ok, Ik heb dat gedaan. Met een ander mailadres dan mijn ‘normale’ gebruiker/ Dat gaat goed. Alleen neem ik aan dat ik dan daarna in Enphase bij ‘Mijn Toegangscontrole” en dan “Bedrijven” een ander bedrijf toegang geven? Klopt dat? Want als ik dat doe met het :
-I am a do-it-yourself user installing Enphase products?
mailadres dan krijg ik de foutmelding :
There is no company associated with the user info@*********.nl
Ik ben benieuw of het nog werkt.
Ik krijg namelijk een 401 authorisation required melding wanneer ik de status van de productie wil uitlezen of omschakelen.
In maart werd mijn systeem zonder aankondiging opeens geupgrade en had met behulp van deze uitleg in node-red dit geheel werkend gemaakt en werkte prima. Voor een week of 2 denk ik. Bij testen werkte het en ook 1 x daadwerkelijk geschakeld vanwege negatieve stroomprijzen.
Het is net of een DIY Installer account opeens minder rechten heeft gekregen en de productie niet meer mag schakelen.
Mijn systeem staat ook onder beheer van een installateur en heb via een truc een DIY Installer account kunnen koppelen.
Ja, werkt zeker nog!
Voor diegene die geen PHP op de uitvoerende machine hebben maar wel een bash script kunnen uitvoeren;
#!/bin/bash
# —–
# Paste in een file met extensie .sh en maak het executable met het commando: chmod +x filename.sh
# Bash script file to turn on power from the panels on the gateway
# JWT token (replace with your actual token)
jwt_token=”YOUR_TOKEN”
# Data to be sent in the PUT request – TURN ON
data='{“length”:1,”arr”:[0]}’
# Make the curl request
result=$(curl -s -k \
-X PUT \
-H “Accept: application/json” \
-H “Authorization: Bearer $jwt_token” \
-H “Content-Type: application/x-www-form-urlencoded” \
-d “$data” \
“https://LOCAL_IP_ADDR_GATEWAY/ivp/mod/603980032/mode/power”)
# Check for errors during the curl request
if [[ $? -ne 0 ]]; then
echo “Error during the request”
exit 1
fi
# Output the result
echo “$result” #None if result is oke
# END OF FILE
—— Voor het uitzetten hoeft alleen de volgende regel in het script gezet te worden i.p.v. de huidige regel:
# Data to be sent in the PUT request – TURN OFF
data='{“length”:1,”arr”:[1]}’
—–
Script om te zien of de power productie aan of uit staat:
#!/bin/bash
# JWT token (replace with your actual token)
jwt_token=”jouw_token_hier”
# Make the curl request
result=$(curl -s -k \
-H “Accept: application/json” \
-H “Authorization: Bearer $jwt_token” \
“https://192.168.178.146/ivp/mod/603980032/mode/power”)
# Check for errors during the curl request
if [[ $? -ne 0 ]]; then
echo “Error: $(curl -s –stderr -)”
exit 1
fi
# Output the result
echo “$result”