IO-Homecontrol Devices über Tahoma Box einbinden

Begonnen von mike3436, 17 Oktober 2014, 22:07:36

Vorheriges Thema - Nächstes Thema

eckonator

Zitat von: mrfloppy am 20 Juni 2023, 14:18:10
Zitat von: mike3436 am 19 Juni 2023, 14:12:01Zum Developer Mode:
Ich würde die Änderungen von IT-Fuzzi gern übernehmen, habe aber leider nichts von ihm gehört. Vielleicht muss ich ihn mal direkt anschreiben.

DAs wäre super wenn du das machen würdest, vielleicht wird das ganze ja noch was.

LG


Hallo zusammen, ich habe auch Interesse an der Version mit der Local API. Nachdem ich mich hier eingelesen habe, befürchte ich allerdings, dass die Version von IT-Fuzzi hier nicht mehr ankommen wird.

Meine gebrauchte Tahoma Box Premium habe ich eben erst in ebay erstanden und befindet sich noch auf dem Weg zu mir.

@mike3436 schau dir mal folgende Code-Anpassungen an - so sollte man die Local API in der Theorie angesprochen bekommen. Kannst du daraus was zusammen mergen?


sub tahoma_login($) {
  my ($hash) = @_;
  my $name = $hash->{NAME};
  Log3 $name, 3, "$name: tahoma_login";

  HttpUtils_Close($hash);
  $hash->{logged_in} = undef;
  $hash->{startup_run} = undef;
  $hash->{startup_done} = undef;

  # URL und Pod für lokale API
  my $local_url = "https://ha101-1.overkiz.com/enduser-mobile-web/enduserAPI/";
  my $pod = "YOUR_GATEWAY_PIN"; # Ersetzen Sie dies durch Ihre Gateway-PIN

  # Anmeldeinformationen für lokale API
  my $username = "YOUR_EMAIL_ADDRESS";
  my $password = "YOUR_PASSWORD";

  # Login-Anfrage an lokale API senden
  my $login_url = "${local_url}login";
  my $login_body = "userId=$username&userPassword=$password";
  my %login_headers = (
    'Content-Type' => 'application/x-www-form-urlencoded'
  );

  HttpUtils_NonblockingGet({
    timeout => 10,
    noshutdown => 1,
    hash => $hash,
    url => $login_url,
    data => $login_body,
    headers => \%login_headers,
    callback => \&tahoma_handle_login_response,
    nonblocking => 1,
  });
}

sub tahoma_handle_login_response($) {
  my ($hash, $response) = @_;
  my $name = $hash->{NAME};

  if ($response->{httpCode} == 200) {
    my $session_id = $response->{HTTPCookies}->{'JSESSIONID'}; # Sitzungs-ID aus der Antwort erhalten
    Log3 $name, 2, "$name: Login erfolgreich, Session-ID: $session_id";
   
    # Nach erfolgreicher Anmeldung können weitere Aktionen ausgeführt werden
    # Z.B. Token generieren, um die lokale API zu autorisieren
    tahoma_generate_token($hash, $session_id);
  } else {
    Log3 $name, 2, "$name: Login fehlgeschlagen, HTTP-Code: $response->{httpCode}";
    # Hier können Sie entsprechend auf einen fehlgeschlagenen Login reagieren
  }
}

sub tahoma_generate_token($) {
  my ($hash, $session_id) = @_;
  my $name = $hash->{NAME};

  # Token-Generierungs-Anfrage an lokale API senden
  my $token_url = "${local_url}config/$pod/local/tokens/generate";
  my %token_headers = (
    'Content-Type' => 'application/json',
    'Cookie' => "JSESSIONID=$session_id"
  );

  HttpUtils_NonblockingGet({
    timeout => 10,
    noshutdown => 1,
    hash => $hash,
    url => $token_url,
    headers => \%token_headers,
    callback => \&tahoma_handle_token_response,
    nonblocking => 1,
  });
}

sub tahoma_handle_token_response($) {
  my ($hash, $response) = @_;
  my $name = $hash->{NAME};

  if ($response->{httpCode} == 200) {
    my $token = $response->{data}->{token}; # Token aus der Antwort erhalten
    Log3 $name, 2, "$name: Token erfolgreich generiert: $token";
    # Hier können Sie den generierten Token speichern und für zukünftige lokale API-Anfragen verwenden
  } else {
    Log3 $name, 2, "$name: Fehler beim Generieren des Tokens, HTTP-Code: $response->{httpCode}";
    # Hier können Sie entsprechend auf einen Fehler beim Generieren des Tokens reagieren
  }
}


FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

mike3436

@eckonator

ich kann gerne funktionierenden, getesteten Code übernehmen, aber wie schon geschrieben habe ich eine Tahoma der 1. Generation und ich kann das Feature des lokalen Zugriffs im Tahoma Control Center für meine Box nicht aktivieren, und somit auch nichts selber testen.
KNX Hausautomatisierung, RPi mit FHEM, Jeelink + LaCrosse, HM_LAN + KeyMatic, Somfy IO Rollladen mit Tahoma und KLF200, Buderus WPS mit USBTin und KM200

sig10680

Zitat von: eckonator am 05 April 2024, 23:04:24
Zitat von: mrfloppy am 20 Juni 2023, 14:18:10
Zitat von: mike3436 am 19 Juni 2023, 14:12:01Zum Developer Mode:
Ich würde die Änderungen von IT-Fuzzi gern übernehmen, habe aber leider nichts von ihm gehört. Vielleicht muss ich ihn mal direkt anschreiben.

DAs wäre super wenn du das machen würdest, vielleicht wird das ganze ja noch was.

LG


Hallo zusammen, ich habe auch Interesse an der Version mit der Local API. Nachdem ich mich hier eingelesen habe, befürchte ich allerdings, dass die Version von IT-Fuzzi hier nicht mehr ankommen wird.

Meine gebrauchte Tahoma Box Premium habe ich eben erst in ebay erstanden und befindet sich noch auf dem Weg zu mir.

@mike3436 schau dir mal folgende Code-Anpassungen an - so sollte man die Local API in der Theorie angesprochen bekommen. Kannst du daraus was zusammen mergen?


sub tahoma_login($) {
  my ($hash) = @_;
  my $name = $hash->{NAME};
  Log3 $name, 3, "$name: tahoma_login";

  HttpUtils_Close($hash);
  $hash->{logged_in} = undef;
  $hash->{startup_run} = undef;
  $hash->{startup_done} = undef;

  # URL und Pod für lokale API
  my $local_url = "https://ha101-1.overkiz.com/enduser-mobile-web/enduserAPI/";
  my $pod = "YOUR_GATEWAY_PIN"; # Ersetzen Sie dies durch Ihre Gateway-PIN

  # Anmeldeinformationen für lokale API
  my $username = "YOUR_EMAIL_ADDRESS";
  my $password = "YOUR_PASSWORD";

  # Login-Anfrage an lokale API senden
  my $login_url = "${local_url}login";
  my $login_body = "userId=$username&userPassword=$password";
  my %login_headers = (
    'Content-Type' => 'application/x-www-form-urlencoded'
  );

  HttpUtils_NonblockingGet({
    timeout => 10,
    noshutdown => 1,
    hash => $hash,
    url => $login_url,
    data => $login_body,
    headers => \%login_headers,
    callback => \&tahoma_handle_login_response,
    nonblocking => 1,
  });
}

sub tahoma_handle_login_response($) {
  my ($hash, $response) = @_;
  my $name = $hash->{NAME};

  if ($response->{httpCode} == 200) {
    my $session_id = $response->{HTTPCookies}->{'JSESSIONID'}; # Sitzungs-ID aus der Antwort erhalten
    Log3 $name, 2, "$name: Login erfolgreich, Session-ID: $session_id";
   
    # Nach erfolgreicher Anmeldung können weitere Aktionen ausgeführt werden
    # Z.B. Token generieren, um die lokale API zu autorisieren
    tahoma_generate_token($hash, $session_id);
  } else {
    Log3 $name, 2, "$name: Login fehlgeschlagen, HTTP-Code: $response->{httpCode}";
    # Hier können Sie entsprechend auf einen fehlgeschlagenen Login reagieren
  }
}

sub tahoma_generate_token($) {
  my ($hash, $session_id) = @_;
  my $name = $hash->{NAME};

  # Token-Generierungs-Anfrage an lokale API senden
  my $token_url = "${local_url}config/$pod/local/tokens/generate";
  my %token_headers = (
    'Content-Type' => 'application/json',
    'Cookie' => "JSESSIONID=$session_id"
  );

  HttpUtils_NonblockingGet({
    timeout => 10,
    noshutdown => 1,
    hash => $hash,
    url => $token_url,
    headers => \%token_headers,
    callback => \&tahoma_handle_token_response,
    nonblocking => 1,
  });
}

sub tahoma_handle_token_response($) {
  my ($hash, $response) = @_;
  my $name = $hash->{NAME};

  if ($response->{httpCode} == 200) {
    my $token = $response->{data}->{token}; # Token aus der Antwort erhalten
    Log3 $name, 2, "$name: Token erfolgreich generiert: $token";
    # Hier können Sie den generierten Token speichern und für zukünftige lokale API-Anfragen verwenden
  } else {
    Log3 $name, 2, "$name: Fehler beim Generieren des Tokens, HTTP-Code: $response->{httpCode}";
    # Hier können Sie entsprechend auf einen Fehler beim Generieren des Tokens reagieren
  }
}




Hallo @eckonator,
ich biete mich auch als tester an. Ich habe meine Box schon für die locale nutzung freigeschaltet.

mfg Sig10680

sig10680

Zitat von: sig10680 am 22 April 2024, 14:44:42
Zitat von: eckonator am 05 April 2024, 23:04:24
Zitat von: mrfloppy am 20 Juni 2023, 14:18:10
Zitat von: mike3436 am 19 Juni 2023, 14:12:01Zum Developer Mode:
Ich würde die Änderungen von IT-Fuzzi gern übernehmen, habe aber leider nichts von ihm gehört. Vielleicht muss ich ihn mal direkt anschreiben.

DAs wäre super wenn du das machen würdest, vielleicht wird das ganze ja noch was.

LG


Hallo zusammen, ich habe auch Interesse an der Version mit der Local API. Nachdem ich mich hier eingelesen habe, befürchte ich allerdings, dass die Version von IT-Fuzzi hier nicht mehr ankommen wird.

Meine gebrauchte Tahoma Box Premium habe ich eben erst in ebay erstanden und befindet sich noch auf dem Weg zu mir.

@mike3436 schau dir mal folgende Code-Anpassungen an - so sollte man die Local API in der Theorie angesprochen bekommen. Kannst du daraus was zusammen mergen?


sub tahoma_login($) {
  my ($hash) = @_;
  my $name = $hash->{NAME};
  Log3 $name, 3, "$name: tahoma_login";

  HttpUtils_Close($hash);
  $hash->{logged_in} = undef;
  $hash->{startup_run} = undef;
  $hash->{startup_done} = undef;

  # URL und Pod für lokale API
  my $local_url = "https://ha101-1.overkiz.com/enduser-mobile-web/enduserAPI/";
  my $pod = "YOUR_GATEWAY_PIN"; # Ersetzen Sie dies durch Ihre Gateway-PIN

  # Anmeldeinformationen für lokale API
  my $username = "YOUR_EMAIL_ADDRESS";
  my $password = "YOUR_PASSWORD";

  # Login-Anfrage an lokale API senden
  my $login_url = "${local_url}login";
  my $login_body = "userId=$username&userPassword=$password";
  my %login_headers = (
    'Content-Type' => 'application/x-www-form-urlencoded'
  );

  HttpUtils_NonblockingGet({
    timeout => 10,
    noshutdown => 1,
    hash => $hash,
    url => $login_url,
    data => $login_body,
    headers => \%login_headers,
    callback => \&tahoma_handle_login_response,
    nonblocking => 1,
  });
}

sub tahoma_handle_login_response($) {
  my ($hash, $response) = @_;
  my $name = $hash->{NAME};

  if ($response->{httpCode} == 200) {
    my $session_id = $response->{HTTPCookies}->{'JSESSIONID'}; # Sitzungs-ID aus der Antwort erhalten
    Log3 $name, 2, "$name: Login erfolgreich, Session-ID: $session_id";
   
    # Nach erfolgreicher Anmeldung können weitere Aktionen ausgeführt werden
    # Z.B. Token generieren, um die lokale API zu autorisieren
    tahoma_generate_token($hash, $session_id);
  } else {
    Log3 $name, 2, "$name: Login fehlgeschlagen, HTTP-Code: $response->{httpCode}";
    # Hier können Sie entsprechend auf einen fehlgeschlagenen Login reagieren
  }
}

sub tahoma_generate_token($) {
  my ($hash, $session_id) = @_;
  my $name = $hash->{NAME};

  # Token-Generierungs-Anfrage an lokale API senden
  my $token_url = "${local_url}config/$pod/local/tokens/generate";
  my %token_headers = (
    'Content-Type' => 'application/json',
    'Cookie' => "JSESSIONID=$session_id"
  );

  HttpUtils_NonblockingGet({
    timeout => 10,
    noshutdown => 1,
    hash => $hash,
    url => $token_url,
    headers => \%token_headers,
    callback => \&tahoma_handle_token_response,
    nonblocking => 1,
  });
}

sub tahoma_handle_token_response($) {
  my ($hash, $response) = @_;
  my $name = $hash->{NAME};

  if ($response->{httpCode} == 200) {
    my $token = $response->{data}->{token}; # Token aus der Antwort erhalten
    Log3 $name, 2, "$name: Token erfolgreich generiert: $token";
    # Hier können Sie den generierten Token speichern und für zukünftige lokale API-Anfragen verwenden
  } else {
    Log3 $name, 2, "$name: Fehler beim Generieren des Tokens, HTTP-Code: $response->{httpCode}";
    # Hier können Sie entsprechend auf einen Fehler beim Generieren des Tokens reagieren
  }
}




Hallo @eckonator,
ich biete mich auch als tester an. Ich habe meine Box schon für die locale nutzung freigeschaltet.

mfg Sig10680

Hallo in die Runde,

ich habe meine Box für die local Api freigeschaltet und kann die Geräte über Curl befehle steuern. Ausserdem habe ich versucht es mit Fhem und diesen Modul hinzubekommen bin aber gescheitert. Mal sehen vielleicht hat ja einer eine Idee wie man es in das vorhanden Modul einbauen könnte.

mfg Sig10680

sig10680

Hallo in die Runde,

Wenn ich die lokale API Freigeschaltet und den Token ausgelesen habe, würde es möglich sein über das Attribut URL die interne api anzusprechen?

Mfg sig10680

sig10680

Hallo,

ich habe die Local Api freigeschaltet und kann mit befehlen die Jalousie steuern. Könnte man nicht einfach in den Modul oder als Attr. die erzeugten Cookies / GatewayID und die URL eintragen und es sollte mit die Local API Steuerung funktionieren?! Ohne es über die Cloud zu nutzen!

Ich habe seit kurzen wieder extreme Probleme und viele Fehler im Log! tahoma_dispatch error: Too many asynchronous jobs, try again later (job was Full refresh all states) aller 2 Minuten!

mfg Sig10680