Ankündigung

Einklappen
Keine Ankündigung bisher.

Home-Connect | 2nd

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Ok, ich fange an die Logik zu verstehen. Kannst du mir bei der Frage zu den beiden iKO noch helfen bitte? Muss ich mit denen noch etwas tun außer sie anzulegen und mit E2 und E2 jeweils zu verbinden?

    Kommentar


      Du kannst natürlich ein iKO und dort als Initialwert für E2 den API-Key (client_id) und für E3 den client_secret aus deiner Anwendung die du im HC Developerportal angelegt hast, eintragen ... oder ... du trägst den Key und das Secret direkt an den Eingängen des LBSen ein (ohne den "Umweg" über die iKO).
      Danke und LG, Dariusz
      GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

      Kommentar


        [gelöscht]
        Zuletzt geändert von turtle1987; 23.09.2019, 18:48.

        Kommentar


          Hallo André jonofe,

          ich bin mir nicht mehr sicher ob es von dir kommt ... bilde mir aber ein, du sagtest mal, die Abfrage der Access- und Refresh-Tokens direkt aus dem Script der am Webbrowser läuft, abzufragen um nicht innerhalb der von HC vorgegebenen 10 Minuten den LBS in der Logik starten zu müssen ...

          Ich habe es folgends versucht, leider ohne Erfolg (bis jetzt) ... aus dem LBS direkt funktioniert es ohne Probleme.
          Liegt es an ...
          PHP-Code:
          require('/../../main/include/php/HOME-CONNECT-API-PHP/scr/HomeConnect/autoload.php'); 
          oder vom Ansatz her komplett anders (oder gar unmöglich) ?

          DANKE für deine Meinung.


          HTML-Code:
          <!DOCTYPE html>
          <html lang="en">
          <head>
          <title>HC-REDIRECT</title>
          <meta http-equiv="content-type" content="text/html; charset=UTF-8">
          </head>
          <body>
          <header>
          <h2>Home-Connect</h2>
          </header>
          
          <?php
          
          ...
          
          
          //    ab hier neue Codezeilen ... für access-/refresh-tokens ...
          
                  require('/../../main/include/php/HOME-CONNECT-API-PHP/scr/HomeConnect/autoload.php');
          
                  if (file_exists('/usr/local/edomi/www/visu/hc_config.json'))
                  {
                      echo '<h2>hc_config.json exists</h2>';
          
                      $config = json_decode(file_get_contents('/usr/local/edomi/www/visu/hc_config.json', true));
          
                      echo '$config == '.serialize($config)."<br />\n";
          
          
          // diese echo Ausgabe sehe ich noch im Browser, den Rest nicht mehr, auch die hc_tokens.json wird nicht abgespeichert ...
          
          
                      $client = new HomeConnect\Clients\HcClient($config);
          
                      echo '$client == '.serialize($client)."<br />\n";
          
                      $tokens_request = $client->getAccessTokenFromAuthorizationCode($code);
          
                      unset($config, $client);
          
                      $tokens_response == $tokens_request;
          
                      unset($tokens_request);
          
                      echo 'tokens_response == '.$tokens_response."<br />\n";
                  }
          
                  if (file_exists('hc_tokens.json'))
                  {
                      unlink('/usr/local/edomi/www/visu/hc_tokens.json');
                  }
          
                  if ($tokens_response['access_token'])
                  {
                      echo 'access_token == '.$tokens_response['access_token']."<br />\n";
                  }
          
                  if ($tokens_response['refresh_token'])
                  {
                      echo 'refresh_token == '.$tokens_response['refresh_token']."<br />\n";
                  }
                  $tokens = array(
                              'code'            => $code,
                              'access_token'    => $tokens_response['access_token'],
                              'refresh_token'    => $tokens_response['refresh_token']);
          
                  echo '$tokens == '.$tokens."<br />\n";
          
                  file_put_contents($json, json_encode($tokens));
          
                  unset($tokens_response, $tokens);
              }
          }
          else
          {
              echo '<h1>state_SENT is not equil state_GET == NOK</h1>';
              echo '<h2>state_SENT need to be equil to state_GET otherwise possibility of cross-site request forgery</h2>';
              echo 'state_SENT == '.$state_sent."<br />\n";
              echo 'state_GET == '.$state_get."<br />\n";
          }
          ?>
          
          <footer>
          <p>&copy; coliflower</p>
          </footer>
          </body>
          </html>
          Danke und LG, Dariusz
          GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

          Kommentar


            Ich bin nicht ganz sicher, was du meinst, ich mache in meinem Prototypen wie folgt:

            Der EXEC Bereich meines HomeConnect API LBS ist gleichzeitig das Callback Skript, welches vom Homeconnect Server aufgerufen wird. Dazu verlinke ich das finale EXEC Skript innerhalb des EDOMI www Pfades:

            PHP-Code:
            if (! is_link('/usr/local/edomi/www/admin/include/php/homeconnect/hc.php'))
            symlink('/usr/local/edomi/www/data/liveproject/lbs/EXE19001570.php''/usr/local/edomi/www/admin/include/php/homeconnect/hc.php'); 
            Das hc.php Skript wird dann durch den HomeConnect Server bei der OAuth2 Authentifizierung aufgerufen: (Callback URL in der HomeConnect Application Konfiguration). Es geht also letztlich so:

            1. LBS einfügen und konfigurieren
            2. EDOMI Projekt aktivieren
            3. URL welche an A1 des LBS erscheint im Browser aufrufen
            4. Dann muss man bestätigen, dass man die Berechtigung erteilen will
            5. Hierdurch wird das EXEC Skript von der HomeConnect API getriggert und dieses ruft Access/Refresh Token ab und speichert diese in einer Datei.
            6. Bei erneuten Projekt Aktivierungen findet der LBS die Token und an A1 wird angezeigt, dass der LBS schon bei HC registriert ist, ansonsten wird die Auth-URL ausgegeben und man macht mit 3. weiter

            Läuft aber bei mir nur als Prototyp und hat noch keine Geräte-spezifische Funktionalität, d.h. ich kann grundsätzlich alle HC API Befehle senden und bekomme alle Events, aber es ist nur ein API LBS. Dazu müsste dann noch diverse Geräte LBS entwickelt werden. Das ist aber noch eine große Baustelle, welche ich vielleicht mal angehe, wenn weitere HC Geräte bei uns Einzug halten.

            Vielleicht hilft ja diese grundsätzliche Beschreibung schon weiter.

            Kommentar


              Zitat von jonofe Beitrag anzeigen
              Ich bin nicht ganz sicher, was du meinst ...
              Hallo André,

              vielen Dank für deine Antwort.

              Mein LBS (SSE/API/OAUTH2) läuft eh schon ganz gut (zumindest bei mir, ich habe neben einem Geschirrspüler nun auch eine Waschmaschine und einen Trockner, somit 3 Geräte die schon mal richtig erkannt werden).
              Ich möchte den LBS abrunden um dem User die 10 Minuten "zu sparen" innerhalb derer er den LBS starten muss (derzeitiger Stand).
              Ansonsten läuft - denke ich - bei mir in etwa alles gleich wie von dir beschrieben.

              Eigentlich versuchte ich über mein obiges Skript folgenden Punkt zu erschlagen:
              5. Hierdurch wird das EXEC Skript von der HomeConnect API getriggert und dieses ruft Access/Refresh Token ab und speichert diese in einer Datei.

              Ob ich es richtig verstanden habe (dann würde ich versuchen deine Methode bei mir umzusetzen) ...
              Am Ende deiner redirect_uri (HC-App...) is dein hc.php:
              Code:
              [COLOR=#0000FF]/usr/local/edomi/www/admin/include/php/homeconnect/hc.php[/COLOR]
              In dieser ist der symlink() der auf dein Code im EXEC Bereich des LBS verlinkt (oder is da noch mehr notwendig) ?
              PHP-Code:
              if (! is_link('/usr/local/edomi/www/admin/include/php/homeconnect/hc.php'))
              symlink('/usr/local/edomi/www/data/liveproject/lbs/EXE19001570.php''/usr/local/edomi/www/admin/include/php/homeconnect/hc.php'); 


              Der folgende Pfad auf den "LBS" ruft den kompletten LBS oder nur den EXEC Bereich (des LBS) auf (sorry für möglicherweise so elementare Fragen, leider kenne ich mich mit Edomi selbst NULL aus - aber ich lerne gerne) ?
              PHP-Code:
              /usr/local/edomi/www/data/liveproject/lbs/EXE19001570.php 
              Danke und LG, Dariusz
              GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

              Kommentar


                Zitat von coliflower Beitrag anzeigen
                Der folgende Pfad auf den "LBS" ruft den kompletten LBS oder nur den EXEC Bereich
                Nur das EXEC Skript. Bei der Projekt Aktivierung macht EDOMI aus dem 19xxxxxx_lbs.php zwei PHP Skripte, nämlich LBS19xxxxxx.php und EXE19xxxxxx.php.

                Mit dem Symlink ermöglichst du, dass das EXEC auch von außen aufgerufen werden kann. Dazu musst du natürlich den ReverseProxy entsprechend konfigurieren.

                Und im EXEC musst du dann prüfen, ob dieser gerade von HC oder von EDOMI aufgerufen wurde. Das geht wie folgt:


                PHP-Code:
                ###[DEF]###

                // Dein DEF Teil

                ###[/DEF]###
                ###[HELP]###

                // Dein HELP Teil

                ###[/HELP]###
                ###[LBS]###

                // Dein LBS Teil 

                ###[/LBS]###
                ###[EXEC]###
                if (isset($_GET['code'])) {

                // Dieser Code wird ausgeführt wenn HC das EXEC Skript aufruft

                die();
                }

                // Alles was danach kommt ist der normale EXEC Teil, der von EDOMI ausgeführt wird.

                ###[/EXEC]### 
                Zuletzt geändert von jonofe; 27.09.2019, 09:46.

                Kommentar


                  DANKE für deine Erklärung :-)
                  Ich werde es nach dem WE probieren - jetzt muss ich für meine beiden Jungs (5 und 7) die Geburtstagsparty vorbereiten ...

                  Nochmals Danke !
                  Danke und LG, Dariusz
                  GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                  Kommentar


                    Hallo,

                    Ich habe soeben den 70er mit 9 getriggert, und dann den Aktivierungscode per copy/paste im Browser eingegeben. Er hat mich dann auf die von mir angegebene redirect_url verwiesen, aber dort erscheint Folgendes:
                    Home-Connect
                    Some ERROR occured, please check the description ...
                    error invalid_scope
                    error_description given scope doesn't match requested scope
                    state_session
                    state_get 9pfQGTQlhsr7v_3BcP7fQZWv64WsEOv8yDdrRvEWIjgLS9Oy_z HDdQmzKA71kY4f
                    © coliflower


                    Was hat das zu bedeuten?

                    Kommentar


                      Die Lösung (zumindest für mich) steckte in Post #129. Du bist leider gezwungen hier fast jeden Post zu lesen, da die Themen momentan nicht zusammen gefasst sind.

                      Du könntest mir aber mal berichten, ob du den 71er LBS ans Laufen bekommst. Bei mir tut der nämlich gar nichts. Kein Log, kein gar nichts. Der 70er sieht gut aus.

                      Kommentar


                        Zitat von bkr Beitrag anzeigen
                        Aktivierungscode per copy/paste im Browser eingegeben
                        Poste mal den Link, OHNE den client_id Wert ...

                        Übrigens, ich überarbeite gerade den 70er und mache diesen für mehrere HC Geräte tauglich ... bei mir läuft es schon zumindest stabil, leider ist er noch nicht so weit, das er hoch geladen werden kann.


                        Zitat von turtle1987 Beitrag anzeigen
                        Du könntest mir aber mal berichten, ob du den 71er LBS ans Laufen bekommst.
                        Eigentlich braucht er nichts außer eine Verbindung (wenn der 70er läuft).

                        Bildschirmfoto 2019-10-03 um 22.33.17.png
                        Danke und LG, Dariusz
                        GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                        Kommentar


                          Hi,

                          hier meine Ansicht:
                          hc_lbs.jpg
                          Ich habe CentOS7 und EDOMI 2.00, das sollte ich sicher erwähnen. Der 71er LBS gibt keinen Mucks von sich. Eventuell hängt es mit folgendem Fehler-Log von EDOMI zusammen: 2019-10-04 17:10:41 176354 ? 7450 Datei: /usr/local/edomi/main/include/php/HOME-CONNECT-API-PHP/scr/HomeConnect/Clients/HcClient.php | Fehlercode: 0 | Zeile: 316 | Class 'HomeConnect\Clients\Exception' not found

                          Zusätzlich habe ich 3 Geräte in HC: Spülmaschine, Backofen und einen Trockner. Da hattest du auch berichtet, dass das eventuell zu Problemen führt.

                          Das Log zum 70er sieht gut aus in meinen Augen:
                          hc_lbs_log.jpg
                          Zuletzt geändert von turtle1987; 04.10.2019, 16:21.

                          Kommentar


                            Da ich unterwegs bin, ganz kurz...
                            a.) da sollte 1.62 stehen, nicht 2.00
                            b.) der LBS geht derzeit nur mit PHP 5, nicht mit 7 (CentOS7) ... deshalb der CLASS Fehler
                            Danke und LG, Dariusz
                            GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                            Kommentar


                              Danke für die klaren Worte zu CentOS7. Wirst du in absehbarer Zeit CentOS7 unterstützen können?

                              Kommentar


                                Zitat von turtle1987 Beitrag anzeigen
                                Danke für die klaren Worte zu CentOS7. Wirst du in absehbarer Zeit CentOS7 unterstützen können?
                                Wenn es (70er) mal in meiner Umgebung (Edomi 1.62) mit mehreren Geräten läuft UND die Tokens automatisch übernommen werden (bin gerade dran, leider noch ohne Erfolg) , dann werde ich mich an CentOS7 wagen und danach die Fehlenden Codezeilen in der KLASSE um PHP7 erweitern (beides soll möglich sein, PHP5 und 7).
                                Danke und LG, Dariusz
                                GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                                Kommentar

                                Lädt...
                                X