Skip to content

login to EDA Portal (Energiewirtschaftlicher Datenaustausch GmbH Vienna/Austria - https://www.eda.at/portal) for energy community administrators in Austria

License

Notifications You must be signed in to change notification settings

badgir2/EDA-script-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

EDA-script-php

login to EDA Portal (Energiewirtschaftlicher Datenaustausch GmbH Vienna/Austria - https://www.eda.at/portal) for energy community administrators in Austria

feel free to use and adapt the script to your own needs

Available Methods:

  • login(): Login with EDA Portal credentials and get token for further requests
  • users(): details about the person who has access to the portal
  • pwaUser(): not sure about the use of this request
  • energycommunities: basic data about the energy community
  • energycommunities STRING: details about the members of the energy community
  • meter data: shows metering data of the energy community in a selected time range
  • kpiData: data of self-sufficency and consumption of the energy comunity

Usage

<?php // login to EDA Portal (Energiewirtschaftlicher Datenaustausch GmbH Vienna/Austria) // use at your own risk  // first create /temp directory  $cookieFile = dirname(__DIR__)."/temp/cookieEDA.txt"; //if file doesn't exist if(!file_exists($cookieFile)) { //fopen for writing $fh = fopen($cookieFile, "w"); //write fwrite($fh, ""); //close fclose($fh); } // write your access credentials for the EDA Portal $username = 'email@example.com'; // the email used for registration  $password = 'password'; // plain text password // login Url $loginUrl = 'https://prod.eda-portal.at/api/login'; // compose login string and convert to json $login = array('email' => $username, 'password' => $password ); $login = json_encode($login); //do login //init curl $ch = curl_init(); //Set the URL to work with curl_setopt($ch, CURLOPT_URL, $loginUrl); // ENABLE HTTP POST curl_setopt($ch, CURLOPT_POST, 1); //Set the post parameters curl_setopt($ch, CURLOPT_POSTFIELDS, $login); //Handle cookies for the login curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); //Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL //not to print out the results of its query. //Instead, it will return the results as a string return value //from curl_exec() instead of the usual true/false. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $headers = array(); $headers[] = 'Content-Type: application/json'; $headers[] = 'Accept: application/json, text/plain, */*'; $headers[] = 'Accept-Language: en-US,en;q=0.9,it;q=0.8,de-DE;q=0.7,de;q=0.6'; $headers[] = 'Cache-Control: no-cache'; $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //execute the request (the login) $store = curl_exec($ch); //the login is now done and you can continue to get the //protected content. //execute the request $result = curl_exec($ch); curl_close($ch); // decode json reult $json = json_decode($result, true); // show result /* a typical result would be:  Array (  [token] => [a JWT base64 encoded string which contains a json string and other unreadable data: {"typ":"JWT","alg":"RS256"}{"iss":"https://prod-api.eda-portal.at/api/v4/auth/login","iat":*unix date*,"exp":*unix date*,"nbf":*unix date*,"jti":"*alphanumeric string*","user_id":"*36 digit alphanumeric string*","sub":"*4 digit number*","prv":"*another string*"}]  [exp] => [expiry date of the token; usually 1 week after the call]  [user] => Array  (  [confirmedAt] => [date and time when access has been given by the EDA Portal to the user]  [defaultLocale] => de  [familyName] => [the family name of the person who has applied for access to the EDA Portal]  [givenName] => [the first name of the person who has applied for access to the EDA Portal]  [id] => [an alphanumeric string with 16 digits which identifies the user also in future calls]  [additionalAttributes] => Array  (  [postalCode] => [postal code]  [streetAddress] => [address]  [addressCountry] => [country]  [acceptedTermsAt] => [date and time when access has been given by the EDA Portal to the user]  [addressLocality] => [city]  [acceptedPrivacyAt] => [date and time when access has been given by the EDA Portal to the user]  )   [receivedDataLinks] => Array  (  )   [role] => PWA_USER  [storedFilters] => Array  (  )   [validReceivedDataLinks] => Array  (  )   [watchLists] => Array  (  )   )  ) */ echo '<br>login result: <pre>'; print_r($json); echo '</pre>'; // extract token from result, needed for further requests $token = $json['token']; // users // more details about the person who has access to the portal // this request must contain the $token variable received from the previous request $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://prod.eda-portal.at/api/users'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); $headers = array(); $headers[] = 'Accept: application/json, text/plain, */*'; $headers[] = 'Accept-Language: en-US,en;q=0.9,it;q=0.8,de-DE;q=0.7,de;q=0.6'; $headers[] = 'Authorization: Bearer '.$token; $headers[] = 'Cache-Control: no-cache'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); $json = json_decode($result, true); echo '<br>users result: <pre>'; print_r($json); echo '</pre>'; // pwaUser GET // needs token variable from login response // not sure about the use of this request; gives funny answer from the system: [isHotlineUser] => Hurra die Hex ist tot. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://prod-api.eda-portal.at/api/pwa/pwaUser'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); $headers = array(); $headers[] = 'Accept: application/json, text/plain, */*'; $headers[] = 'Accept-Language: en-US,en;q=0.9,it;q=0.8,de-DE;q=0.7,de;q=0.6'; $headers[] = 'Authorization: Bearer '.$token; $headers[] = 'Cache-Control: no-cache'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); $json = json_decode($result, true); echo '<br>pwaUser result: <pre>'; print_r($json); echo '</pre>'; // energycommunities GET // this request will produce basic data about the energy community; token variable from login request is needed.  $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://prod-api.eda-portal.at/api/pwa/energycommunities'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); $headers = array(); $headers[] = 'Accept: application/json, text/plain, */*'; $headers[] = 'Accept-Language: en-US,en;q=0.9,it;q=0.8,de-DE;q=0.7,de;q=0.6'; $headers[] = 'Authorization: Bearer '.$token; $headers[] = 'Cache-Control: no-cache'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); $json = json_decode($result, true); echo '<br>energycommunities result: <pre>'; print_r($json); echo '</pre>'; // extract id string from the previous request (there may be more strings if more communities are registered with the same user; cannot check this) $string = $json['data'][0]['id']; // energycommunities STRING // this call will give all details about the members of the energy community associated with the id string; needs the id string from the prevoius request and token varaible from login $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://prod-api.eda-portal.at/api/pwa/energycommunities/'.$string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); $headers = array(); $headers[] = 'Accept: application/json, text/plain, */*'; $headers[] = 'Accept-Language: en-US,en;q=0.9,it;q=0.8,de-DE;q=0.7,de;q=0.6'; $headers[] = 'Authorization: Bearer '.$token; $headers[] = 'Cache-Control: no-cache'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); $json = json_decode($result, true); echo '<br>energycommunities STRING result: <pre>'; print_r($json); echo '</pre>'; // meter data // shows metering data of the energy community associated with the id string on a daily base related to the selected period; need token variable, id string, min and max data // data format for min and max: UTC date format yyyy-mm-ddThh:mm, example 2025-05-11T00:00; don't forget 'Content-Type: application/json' in headers to be sent $min = '0000-00-00T00:00'; $max = '0000-00-00T23:45'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://prod-api.eda-portal.at/api/pwa/energycommunities/'.$string.'/meterdata'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"time\":{\"in\":{\"min\":\"".$min."\",\"max\":\"".$max."\"}},\"energyCommunityId\":\"".$string."\",\"groupBy\":\"day\"}"); $headers = array(); $headers[] = 'Accept: application/json, text/plain, */*'; $headers[] = 'Accept-Language: en-US,en;q=0.9,it;q=0.8,de-DE;q=0.7,de;q=0.6'; $headers[] = 'Authorization: Bearer '.$token; $headers[] = 'Cache-Control: no-cache'; $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); $json = json_decode($result, true); echo '<br>meter data day value result: <pre>'; print_r($json); echo '</pre>'; // kpiData  // data of self-sufficency and consumption of the energy comunity, needs token, id string and min/max date values; can eventually be grouped by day/month/year - not tested $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://prod-api.eda-portal.at/api/pwa/energycommunities/'.$string.'/kpiData'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"energyCommunityId\":\"".$string."\",\"time\":{\"in\":{\"min\":\"".$min."\",\"max\":\"".$max."\"}},\"groupBy\":\"day\"}"); $headers = array(); $headers[] = 'Accept: application/json, text/plain, */*'; $headers[] = 'Accept-Language: en-US,en;q=0.9,it;q=0.8,de-DE;q=0.7,de;q=0.6'; $headers[] = 'Authorization: Bearer '.$token; $headers[] = 'Cache-Control: no-cache'; $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); $json = json_decode($result, true); echo '<br>kpiData result: <pre>'; print_r($json); echo '</pre>'; ?> 

Requirements

  • php-curl

Disclaimer

This is not an official API of EDA (Energiewirtschaftlicher Datenaustausch GmbH Vienna/Austria).

About

login to EDA Portal (Energiewirtschaftlicher Datenaustausch GmbH Vienna/Austria - https://www.eda.at/portal) for energy community administrators in Austria

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages