Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. [Frage] Erfahrungen mit Discovergy-Zählern

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Frage] Erfahrungen mit Discovergy-Zählern

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      wenk0815 last edited by

      Hallo nochmal,

      Sorry war ein paar Tage unterwegs.

      @ple

      Die Daten sind fast in Echtzeit verfügbar, ich hab es nicht genau aber ca. alle 10 bis 30 Sekunden werden die aktualisiert. Das kann man wunderbar mit der Handy APP neben dem E-Herd beobachten 😄

      Das mit dem Support von Discovergy kann ich ein wenig bestätigen, anfragen dauern eine Weile bei mir zwei bis drei Wochen und selbst wenn man im Forum etwas fragt dauerts 😉 Die scheinen nach Ihrer Sinderpreis-Offensive ein wenig überlastet zu sein.

      Natürlich kann man wie vor schon erklärt noch einen weiteren Zähler selber zusätzlich montieren, aber ein Standard Zählerschrank hat nunmal nur einen Zählerplatz (wie bei mir). Da muss der zweite Zähler dann zumindest irgendwie auf die Hutschiene passen. Ich denke 100 bis 200€ sollte man dafür auch einplanen, denn auch für eine Lösung mit einem PI brauche ich die Stromwandler für 63A. Und da kostet auch eine einfache Rogowskispule schon 40€ das Stück.

      Ich selber habe noch gute Erfahrungen mit Zählern der Fa. Socomec gemacht. Z.B. das Diris A20 gibt es gebraucht bei Ebay ab 30€, da muss dann aber noch das Kommunikationsmodul dran.

      1 Reply Last reply Reply Quote 0
      • M
        ManfredH last edited by

        @wenk0815:

        Da ich mir in meinem neuen Zuhause seit März den Discovergy-Zähler hab einbauen lassen wollte ich mal berichten was das Ding kann und wie es so läuft. `
        Schöner Bericht - danke! Hab mir (ohne diesen Bericht zu kennen) jetzt auch den SmartMeter von Discovergy bestellt, nicht zuletzt weil die die Schwelle für den kostenlosen Einbau von 3000 kWh auf 1500 kWh gesenkt haben. So wie ich das sehe werden allerdings noch Kosten für einen neuen Zählerschrank (der alte ist 40 Jahr alt!) auf mich zukommen.

        Hast Du schon einen Zugriff vom ioBroker auf die via Gateway bereitgestellten Daten realisiert (also nicht via Web/API) und wenn ja, wie?

        1 Reply Last reply Reply Quote 0
        • M
          ManfredH last edited by

          @uweklatt:

          ich verwende einen Carlo Gavazzi EM24-DIN AV93 X IS P (Hutschiene mit Modbus Schnittstelle) `
          Und mit welchen Mitteln bekommst Du die Daten in ioBroker? Bin nämlich grad auf der Suche nach Infos dazu.

          1 Reply Last reply Reply Quote 0
          • M
            ManfredH last edited by

            @ple:

            Wegen lokalen Zugriff, der Zähler kann doch D0 wenn ich das richtig verstanden habe, dann sollte es vielleicht mit dem Smartmeter Adapter funktionieren.

            D0-MSB (DIN EN 62056-61)

            Ethernet (RJ 45) 10/100 LAN 802.3

            RS485 / MODBUS (RJ 10) IEC 61158 `
            So wie ich das sehe ist D0 vom Gateway belegt (das setzt direkt auf dem Easymeter auf und versorgt sich über die D0 offensichtlich selbst)) und RJ45 wird wohl für den Datentransfer zu Discovergy benötigt. Bleibt nur noch RS485 / MODBUS und damit - wie ich gelernt habe - der Modbus-Adapter (Smartmeter-Adapter geht nur mit D0). Leider hab ich keine Ahnung, wie das dann letztendlich funktioniert 😞

            1 Reply Last reply Reply Quote 0
            • uweklatt
              uweklatt last edited by

              Hallo Manfred,@ManfredH:

              Und mit welchen Mitteln bekommst Du die Daten in ioBroker? Bin nämlich grad auf der Suche nach Infos dazu. ` der Zähler spricht Modbus über RS-485. Ich lese den mit meinem Photovoltaik Datenlogger Sun-Watch ein. Von dort holt sich IoBroker dann zusätzlich die Livewerte ab.

              Tschau

              Uwe

              1 Reply Last reply Reply Quote 0
              • M
                ManfredH last edited by

                @uweklatt:

                der Zähler spricht Modbus über RS-485. `
                Schon. Mir ist nur nicht klar, wie da die Konfiguration in ioBroker aussieht - da gibts ja ziemlich viel zu konfigurieren:
                6967_modbus_iobroker.jpg
                (plus die Tabs "Diskrete Ein-/Ausgäng", "Eingangsregister", "Holding Registers"). Leider hab ich dazu (wieder mal?) keine für mich verständliche Beschreibung gefunden (der Thread im Forum bringt ich leider auch nicht weiter) 😞

                1 Reply Last reply Reply Quote 0
                • M
                  ManfredH last edited by

                  Nachtrag: lt. Auskunft von Discovergy ist der einzige Wert, den der Zähler (bzw. das Gateway) über RS-485 liefert der aktuelle Verbrauch - sonst nix! Damit kann ich mir auch den Aufwand sparen, diesen Wert irgendwie auszulesen, weil ich den genausogut über den HomeMatic-Sensor bekomme (ES-LED), zumal ich den Sender selbst ja schon habe (lese im Moment noch über ES-Fer aus, was mir aber zu ungenau ist). An alle anderen Werte kommt man nur über die API, die https://api.discovergy.com/docs/ beschrieben ist.

                  1 Reply Last reply Reply Quote 0
                  • Stabilostick
                    Stabilostick last edited by

                    Als Basis z.B so etwas nehmen:

                    https://github.com/CodeKing/de.codeking … discovergy

                    1 Reply Last reply Reply Quote 0
                    • M
                      ManfredH last edited by

                      Interessant - danke! Ist halt nur nicht für ioBroker und zum "umpfriemeln" fehlen mir die Kenntnisse.

                      1 Reply Last reply Reply Quote 0
                      • Webranger
                        Webranger last edited by

                        Ich beziehe meinen Strom jetzt von fresh energy und habe einen Discovergy Zähler seit mitte September im Zählerschrank verbaut.

                        Seit heute hab ich einen API Zugang von Discovergy bekommen.

                        Hat wer zufällig schon das auslesen der Daten hinbekommen oder umgesetzt?

                        Hätte einfach nur gerne meinen Verbrauch in der VIS angezeigt.

                        Am liebsten mit dem hier => viewtopic.php?f=21&t=2175

                        Kann da wer helfen vieleicht?

                        Gruss Danyel

                        1 Reply Last reply Reply Quote 0
                        • Webranger
                          Webranger last edited by

                          Ich habe da was bei ip-symcon gefunden vielleicht hilft es ja jemanden weiter:

                          
                           * @link        https://codeking.de
                           * @link        https://github.com/CodeKing/de.codeking.symcon
                           *
                           *
                           * @ToDo: short interval for current settings
                           * @ToDo: get relevant data:
                           * @ToDo: current consumption (kWh)
                           * @ToDo: current solar (kWh)
                           * @ToDo: current grid (kWh)
                           * @ToDo: consumption yesterday (kWh)
                           * @ToDo: consumption devices (kWh / €)
                           */
                          class GetFresh extends ModuleHelper
                          {
                              protected $prefix = 'GF';
                              private $email;
                              private $password;
                              private $token;
                              private $position_offset = 0;
                              public $data = [];
                              protected $archive_mappings = [ // archive: 0 = default, 1 = counter
                                  'Base Price' => 0,
                                  'Price per kWh' => 0,
                                  'Current Price' => 0,
                                  'Meter Reading' => 1,
                                  'Power' => 0
                              ];
                              protected $profile_mappings = [
                                  'Base Price' => 'Price',
                                  'Price per kWh' => 'Price',
                                  'Meter Reading' => 'kWh',
                                  'Power' => 'Watt',
                                  'Power L1' => 'Watt',
                                  'Power L2' => 'Watt',
                                  'Power L3' => 'Watt',
                                  'Provider' => '~String'
                              ];
                              /**
                               * create instance
                               */
                              public function Create()
                              {
                                  parent::Create();
                                  // register public properties
                                  $this->RegisterPropertyString('email', 'user@email.com');
                                  $this->RegisterPropertyString('password', '');
                                  $this->RegisterPropertyInteger('interval', 60); // in seconds
                                  // register timer
                                  $this->RegisterTimer('UpdateData', 0, $this->prefix . '_Update($_IPS[\'TARGET\']);');
                                  $this->RegisterTimer('UpdateTariffData', 60 * 1000, $this->prefix . '_UpdateTariff($_IPS[\'TARGET\']);');
                              }
                              /**
                               * execute, when kernel is ready
                               */
                              protected function onKernelReady()
                              {
                                  // update timer
                                  $this->SetTimerInterval('UpdateData', $this->ReadPropertyInteger('interval') * 1000);
                                  // Update tariff details
                                  $this->UpdateTariff();
                                  // Update data
                                  $this->Update();
                              }
                              /**
                               * Read config
                               */
                              private function ReadConfig()
                              {
                                  // get settings
                                  $this->email = $this->ReadPropertyString('email');
                                  $this->password = $this->ReadPropertyString('password');
                                  $this->token = $this->GetBuffer('token');
                                  // return if service or internet connection is not available
                                  if (!Sys_Ping('getfresh.energy', 1000)) {
                                      $this->_log('GetFresh', 'Error: api or internet connection not available!');
                                      exit(-1);
                                  }
                                  // check if email and password are provided
                                  if (!$this->email || !$this->password) {
                                      return false;
                                  }
                                  // read access token
                                  if (!$this->token) {
                                      $this->token = $this->GetBuffer('token');
                                  }
                                  // login if no valid token was provided
                                  if (!$this->token) {
                                      $this->Login();
                                  }
                                  // simple error handling
                                  if (!$this->token) {
                                      $this->SetStatus(201);
                                      $this->_log('GetFresh', 'Error: The email address or password of your account is invalid!');
                                      exit(-1);
                                  }
                                  // everything looks ok, start
                                  $this->SetStatus(102);
                              }
                              /**
                               * read & update tariff data
                               */
                              public function UpdateTariff()
                              {
                                  // read config
                                  $this->ReadConfig();
                                  // get tariff provider name
                                  if ($profile = $this->Api('profile')) {
                                      $this->data['Provider'] = $profile['brandName'];
                                  }
                                  // get tariff
                                  if ($tariff = $this->Api('consumptionCurrentMonth')) {
                                      $this->data['Base Price'] = $tariff['monthlyBasePrice']['value'];
                                      $this->data['Price per kWh'] = $tariff['unitPrice']['value'];
                                  }
                                  // log data
                                  $this->_log('GetFresh Tariff Data', json_encode($this->data));
                                  // save data
                                  $this->position_offset = 0;
                                  $this->SaveData();
                              }
                              /**
                               * read & update consumption data
                               */
                              public function Update()
                              {
                                  // read config
                                  $this->ReadConfig();
                                  // get current readings
                                  if ($currentReadings = $this->Api('currentReadings')) {
                                      $cnt = count($currentReadings['readings']) - 1;
                                      $currentReading = $currentReadings['readings'][$cnt];
                                      $this->data['Meter Reading'] = $currentReading['energyReading'];
                                      $this->data['Power'] = $currentReading['power'];
                                      $this->data['Power L1'] = $currentReading['powerPhase1'];
                                      $this->data['Power L2'] = $currentReading['powerPhase2'];
                                      $this->data['Power L3'] = $currentReading['powerPhase3'];
                                  }
                                  // log data
                                  $this->_log('GetFresh Data', json_encode($this->data));
                                  // save data
                                  $this->position_offset = 10;
                                  $this->SaveData();
                              }
                              /**
                               * save data to variables
                               */
                              private function SaveData()
                              {
                                  // loop data and save to variable
                                  $position = $this->position_offset;
                                  foreach ($this->data AS $key => $value) {
                                      $this->CreateVariableByIdentifier([
                                          'parent_id' => $this->InstanceID,
                                          'name' => $key,
                                          'value' => $value,
                                          'position' => $position
                                      ]);
                                      $position++;
                                  }
                                  // reset data
                                  $this->data = [];
                              }
                              /**
                               * basic api to getfresh (inofficial)
                               * @param string $request
                               * @return array
                               */
                              public function Api($request = 'currentReadings')
                              {
                                  // build url
                                  $url = 'https://www.getfresh.energy/links';
                                  // default data
                                  $data = [];
                                  // curl options
                                  $curlOptions = [
                                      CURLOPT_TIMEOUT => 10,
                                      CURLOPT_RETURNTRANSFER => true,
                                      CURLOPT_HTTPHEADER => [
                                          'Authorization: Bearer ' . $this->token,
                                          'Content-Type: application/json',
                                          'Connection: keep-alive',
                                          'Accept-Encoding: gzip',
                                          'User-Agent: okhttp/3.2.0'
                                      ]
                                  ];
                                  // call api
                                  $ch = curl_init($url);
                                  curl_setopt_array($ch, $curlOptions);
                                  $links = curl_exec($ch);
                                  // get links
                                  if ($links = json_decode($links, true)) {
                                      #var_dump($links);
                                      #exit;
                                      $links = [
                                          'currentReadings' => $links['_links']['currentReadings']['href'],
                                          'consumption' => $links['_links']['consumption']['href'],
                                          'profile' => $links['_links']['profile']['href'],
                                          'consumptionCurrentMonth' => $links['_links']['consumptionCurrentMonth']['href']
                                      ];
                                      if (isset($links[$request])) {
                                          curl_setopt($ch, CURLOPT_URL, $links[$request]);
                                          $result = curl_exec($ch);
                                          $data = json_decode($result, true);
                                      }
                                  }
                                  // close curl
                                  curl_close($ch);
                                  // return data
                                  return $data;
                              }
                              /**
                               * Login to getfresh
                               */
                              public function Login()
                              {
                                  $this->_log('GetFresh', sprintf('Logging in to account of %s...', $this->email));
                                  // login url
                                  $url = 'https://www.getfresh.energy/oauth/token';
                                  // curl options
                                  $curlOptions = [
                                      CURLOPT_TIMEOUT => 10,
                                      CURLOPT_RETURNTRANSFER => true,
                                      CURLOPT_POST => true,
                                      CURLOPT_POSTFIELDS => http_build_query([
                                          'grant_type' => 'password',
                                          'username' => $this->email,
                                          'password' => $this->password
                                      ]),
                                      CURLOPT_HTTPHEADER => [
                                          'Content-Type: application/x-www-form-urlencoded',
                                          'Accept-Encoding: gzip',
                                          'Connection: keep-alive',
                                          'User-Agent: okhttp/3.2.0'
                                      ],
                                      CURLOPT_USERPWD => 'fresh-webclient:'
                                  ];
                                  // login
                                  $ch = curl_init($url);
                                  curl_setopt_array($ch, $curlOptions);
                                  $result = curl_exec($ch);
                                  curl_close($ch);
                                  // extract token
                                  $json = json_decode($result, true);
                                  $this->token = isset($json['access_token']) ? $json['access_token'] : false;
                                  // save valid token
                                  if ($this->token) {
                                      $this->SetStatus(102);
                                      $this->SetBuffer('token', $this->token);
                                  } // simple error handling
                                  else {
                                      $this->SetStatus(201);
                                      $this->_log('GetFresh', 'Error: The email address or password of your account is invalid!');
                                      exit(-1);
                                  }
                                  return true;
                              }
                              /**
                               * create custom variable profile
                               * @param string $profile_id
                               * @param string $name
                               */
                              protected function CreateCustomVariableProfile(string $profile_id, string $name)
                              {
                                  switch ($name):
                                      case 'Watt':
                                          IPS_CreateVariableProfile($profile_id, 2); // float
                                          IPS_SetVariableProfileDigits($profile_id, 0); // 0 decimals
                                          IPS_SetVariableProfileText($profile_id, '', ' W'); // Watt
                                          IPS_SetVariableProfileIcon($profile_id, 'Electricity');
                                          break;
                                      case 'kWh':
                                          IPS_CreateVariableProfile($profile_id, 2); // float
                                          IPS_SetVariableProfileDigits($profile_id, 2); // 2 decimals
                                          IPS_SetVariableProfileText($profile_id, '', ' kWh'); // Watt
                                          IPS_SetVariableProfileIcon($profile_id, 'Electricity');
                                          break;
                                      case 'Price':
                                          IPS_CreateVariableProfile($profile_id, 2); // float
                                          IPS_SetVariableProfileDigits($profile_id, 4); // 4 decimals
                                          IPS_SetVariableProfileText($profile_id, '', ' €'); // currency symbol
                                          IPS_SetVariableProfileIcon($profile_id, 'Euro');
                                          break;
                                  endswitch;
                              }
                          
                          1 Reply Last reply Reply Quote 0
                          • Stabilostick
                            Stabilostick last edited by

                            Ich hätte da mal einige Zähler:

                            7446_dcceccca-0e1b-4711-834d-2f0f8e652447.jpeg

                            Heißt das jetzt, ich brauche 4 intelligente Zähler und damit 4x ca. 100€=400€ Messstellenbetrieb pro Jahr?

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            928
                            Online

                            31.6k
                            Users

                            79.6k
                            Topics

                            1.3m
                            Posts

                            13
                            39
                            7388
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo