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