Create Pixoo64.md
This commit is contained in:
337
Pixoo64.md
Normal file
337
Pixoo64.md
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
# Divoom Pixoo64 Update API Research
|
||||||
|
|
||||||
|
Dokumentation der Recherche für eine potenzielle RSS-Bridge für Pixoo64 Firmware-Updates.
|
||||||
|
|
||||||
|
## Zusammenfassung
|
||||||
|
|
||||||
|
Die offizielle Divoom API für Firmware-Updates ist **nicht öffentlich zugänglich** und benötigt Authentifizierung mit einem registrierten Gerät. Eine RSS-Bridge ohne physisches Gerät ist daher **nicht umsetzbar**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Gefundene API-Endpoints
|
||||||
|
|
||||||
|
### Base URLs
|
||||||
|
Aus der dekompilierten APK (`com.divoom.Divoom`) gefunden:
|
||||||
|
|
||||||
|
- `https://appin.divoom-gz.com` - Haupt-API (international)
|
||||||
|
- `https://app.divoom-gz.com` - Alternative API
|
||||||
|
- `https://appchina.divoom-gz.com` - China-spezifisch
|
||||||
|
- `https://appusa.divoom-gz.com` - USA-spezifisch
|
||||||
|
- `https://apptest.divoom-gz.com` - Test-Umgebung
|
||||||
|
- `https://f.divoom-gz.com` - File Downloads
|
||||||
|
- `https://ai.divoom-gz.com` - KI-Features
|
||||||
|
|
||||||
|
### Update-Endpoints
|
||||||
|
|
||||||
|
Aus APK-Analyse (`classes.dex`):
|
||||||
|
|
||||||
|
```
|
||||||
|
Device/GetUpdateInfo - Firmware Update-Informationen
|
||||||
|
Device/GetUpdateFileList - Liste verfügbarer Update-Dateien
|
||||||
|
Device/GetFileVersion - Aktuelle Firmware-Version des Geräts
|
||||||
|
Device/NotifyUpdate - Update-Benachrichtigungen
|
||||||
|
GetNewAppVersion - App-Versions-Updates
|
||||||
|
GetUpdateFileV3 - Update-Datei Download (Version 3)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Request/Response-Klassen (gefunden in DEX)
|
||||||
|
|
||||||
|
```java
|
||||||
|
// Requests
|
||||||
|
com.divoom.Divoom.http.request.device.DeviceGetUpdateInfoRequest
|
||||||
|
com.divoom.Divoom.http.request.device.DeviceGetUpdateFileListRequest
|
||||||
|
com.divoom.Divoom.http.request.device.DeviceGetFileVersionRequest
|
||||||
|
com.divoom.Divoom.http.request.update.GetNewAppVersionRequest
|
||||||
|
|
||||||
|
// Responses
|
||||||
|
com.divoom.Divoom.http.response.device.DeviceGetUpdateInfoResponse
|
||||||
|
com.divoom.Divoom.http.response.device.DeviceGetUpdateFileListResponse
|
||||||
|
com.divoom.Divoom.http.response.update.GetNewAppVersionResponse
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API-Tests
|
||||||
|
|
||||||
|
### Test 1: GetUpdateInfo (ohne Parameter)
|
||||||
|
```bash
|
||||||
|
curl -X POST "https://appin.divoom-gz.com/Device/GetUpdateInfo" \
|
||||||
|
-H "Content-Type: application/json" -d '{}'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{"ReturnCode":11,"ReturnMessage":"Token is not match"}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 2: GetUpdateInfo (mit DeviceType)
|
||||||
|
```bash
|
||||||
|
curl -X POST "https://appin.divoom-gz.com/Device/GetUpdateInfo" \
|
||||||
|
-H "Content-Type: application/json" -d '{"DeviceType": 1}'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{"ReturnCode":1,"ReturnMessage":"no device"}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 3: GetUpdateFileList
|
||||||
|
```bash
|
||||||
|
curl -X GET "https://appin.divoom-gz.com/Device/GetUpdateFileList"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{"ReturnCode":1,"ReturnMessage":"Failed"}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 4: GetNewAppVersion
|
||||||
|
```bash
|
||||||
|
curl -X POST "https://appin.divoom-gz.com/GetNewAppVersion" \
|
||||||
|
-H "Content-Type: application/json" -d '{}'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
```json
|
||||||
|
{"ReturnCode":3,"ReturnMessage":"Request data is incomplete"}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Authentifizierungs-Anforderungen
|
||||||
|
|
||||||
|
### Aus APK-Analyse identifizierte Parameter:
|
||||||
|
|
||||||
|
**Device-Parameter:**
|
||||||
|
- `DeviceId` - Eindeutige Geräte-ID
|
||||||
|
- `DeviceType` - Gerätetyp (Pixoo64, Pixoo16, etc.)
|
||||||
|
- `DeviceModel` - Modellnummer
|
||||||
|
- `BluetoothDeviceId` - Bluetooth-Gerät-ID
|
||||||
|
|
||||||
|
**Auth-Parameter:**
|
||||||
|
- `Token` - Authentifizierungs-Token
|
||||||
|
- Wird bei `ReturnCode: 11` mit "Token is not match" abgelehnt
|
||||||
|
|
||||||
|
### Error-Codes:
|
||||||
|
- `ReturnCode: 1` - "Failed" / "no device"
|
||||||
|
- `ReturnCode: 3` - "Request data is incomplete"
|
||||||
|
- `ReturnCode: 10` - "Command is not match"
|
||||||
|
- `ReturnCode: 11` - "Token is not match"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Device-Typen (aus APK)
|
||||||
|
|
||||||
|
```java
|
||||||
|
DeviceTypeEnum {
|
||||||
|
PIXOO_64,
|
||||||
|
PIXOO_16,
|
||||||
|
PIXOO_MAX,
|
||||||
|
TIMEBOX_EVO,
|
||||||
|
// weitere...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Externe Ressourcen
|
||||||
|
|
||||||
|
### Reddit-Post
|
||||||
|
**URL:** https://old.reddit.com/r/Divoom/comments/1i7fe1u/privacy_check/
|
||||||
|
|
||||||
|
**Gefundene Server-Adressen:**
|
||||||
|
```
|
||||||
|
api.divoom-gz.com
|
||||||
|
appin.divoom-gz.com
|
||||||
|
fin.divoom-gz.com
|
||||||
|
min-api.cryptocompare.com # Crypto-Preise
|
||||||
|
qt.gtimg.cn # Aktien-Kurse
|
||||||
|
www.googleapis.com # YouTube/Wetter
|
||||||
|
```
|
||||||
|
|
||||||
|
### GitHub-Projekte
|
||||||
|
|
||||||
|
#### 1. Pixoo64-Advanced-Tools
|
||||||
|
**URL:** https://github.com/tidyhf/Pixoo64-Advanced-Tools
|
||||||
|
|
||||||
|
**Relevante Findings:**
|
||||||
|
- Python-Tool für lokale Steuerung
|
||||||
|
- Nutzt `pixoo` und `pixoo1664` Libraries
|
||||||
|
- Cloud API-Endpoints gefunden:
|
||||||
|
```python
|
||||||
|
DIV_BASE_URL = "https://app.divoom-gz.com"
|
||||||
|
DIV_FILE_URL = "https://f.divoom-gz.com"
|
||||||
|
```
|
||||||
|
- Endpoints:
|
||||||
|
- `/User/UserLogin` - Login
|
||||||
|
- `/GetCategoryFileListV2` - Gallery
|
||||||
|
- `/Comment/GetCommentListV3` - Kommentare
|
||||||
|
- `/Cloud/GetLikeUserList` - Likes
|
||||||
|
|
||||||
|
#### 2. pixoo-homeassistant
|
||||||
|
**URL:** https://github.com/gickowtf/pixoo-homeassistant
|
||||||
|
|
||||||
|
**Info:**
|
||||||
|
- Home Assistant Integration
|
||||||
|
- Lokale IP-basierte Kommunikation
|
||||||
|
- Keine Firmware-Update-Features
|
||||||
|
|
||||||
|
#### 3. pixoo_api (APK Reverse Engineering)
|
||||||
|
**URL:** https://github.com/Grayda/pixoo_api/blob/main/NOTES.md
|
||||||
|
|
||||||
|
**Relevante Endpoints aus decompilierter APK:**
|
||||||
|
- `Device/GetUpdateInfo`
|
||||||
|
- `Device/GetUpdateFileList`
|
||||||
|
- `Device/NotifyUpdate`
|
||||||
|
- `GetNewAppVersion`
|
||||||
|
- `GetUpdateFileV3`
|
||||||
|
|
||||||
|
**Dokumentation:**
|
||||||
|
- Base URL: `https://appin.divoom-gz.com/`
|
||||||
|
- Undokumentierte Remote API
|
||||||
|
- Verschlüsselung: AES mit Key/IV aus APK
|
||||||
|
|
||||||
|
#### 4. Firmware-Repository
|
||||||
|
**URL:** https://github.com/amnemonic/Pixoo64
|
||||||
|
|
||||||
|
**Verfügbare Versionen:**
|
||||||
|
```
|
||||||
|
V90122 - 27 Jul 2022
|
||||||
|
V90126 - 21 Aug 2022
|
||||||
|
V90127 - 02 Sep 2022
|
||||||
|
V90136 - 06 Nov 2022
|
||||||
|
V90146 - 28 Nov 2022
|
||||||
|
V90149 - 26 Dec 2022
|
||||||
|
V90153 - 05 Jan 2023
|
||||||
|
V90156 - 05 Jan 2023
|
||||||
|
V90165 - 23 Mar 2023
|
||||||
|
V90166 - 29 Mar 2023
|
||||||
|
V90167 - 03 Apr 2023
|
||||||
|
V90180 - 27 Jul 2023
|
||||||
|
V90181 - 28 Aug 2023
|
||||||
|
V90192 - 25 Apr 2024
|
||||||
|
V90205 - 15 Feb 2025
|
||||||
|
```
|
||||||
|
|
||||||
|
**Limitations:**
|
||||||
|
- Keine offiziellen Releases
|
||||||
|
- Keine Changelogs
|
||||||
|
- Nur binäre Firmware-Dateien
|
||||||
|
- Unvollständige Sammlung (laut README)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## APK-Analyse Details
|
||||||
|
|
||||||
|
### Analysierte APK
|
||||||
|
- **Package:** `com.divoom.Divoom`
|
||||||
|
- **Pfad:** `/mnt/d/GitHub/Bridges/com_divoom_Divoom/`
|
||||||
|
- **DEX-Dateien:** 4 (classes.dex, classes2-4.dex)
|
||||||
|
|
||||||
|
### Extraktions-Methoden
|
||||||
|
```bash
|
||||||
|
# URLs extrahieren
|
||||||
|
strings classes*.dex | grep "divoom-gz.com"
|
||||||
|
|
||||||
|
# API-Endpoints finden
|
||||||
|
strings classes*.dex | grep -E "(Device/|Update/|GetNew)"
|
||||||
|
|
||||||
|
# Request/Response-Klassen
|
||||||
|
strings classes*.dex | grep "Request\|Response"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Weitere gefundene Endpoints (nicht Update-bezogen)
|
||||||
|
```
|
||||||
|
User/UserLogin
|
||||||
|
Cloud/GetLikeUserList
|
||||||
|
Comment/GetCommentListV3
|
||||||
|
GetCategoryFileListV2
|
||||||
|
SocialPlatform/* (OAuth für Twitter, Reddit, TikTok, etc.)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mögliche zukünftige Ansätze
|
||||||
|
|
||||||
|
### Option 1: GitHub-Repository überwachen
|
||||||
|
- **Pro:** Öffentlich zugänglich, keine Auth nötig
|
||||||
|
- **Contra:**
|
||||||
|
- Keine Changelogs
|
||||||
|
- Unvollständige Sammlung
|
||||||
|
- Manuelle Updates durch Community
|
||||||
|
|
||||||
|
**Implementation:**
|
||||||
|
```php
|
||||||
|
// GitHub Commits API
|
||||||
|
$url = "https://api.github.com/repos/amnemonic/Pixoo64/commits";
|
||||||
|
// oder Atom Feed:
|
||||||
|
$url = "https://github.com/amnemonic/Pixoo64/commits/master.atom";
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option 2: APK-Updates überwachen
|
||||||
|
- APKPure/APKMirror für App-Versionen
|
||||||
|
- Indirekte Information über neue Features
|
||||||
|
|
||||||
|
### Option 3: Mit physischem Gerät
|
||||||
|
Wenn Zugriff auf ein Pixoo64:
|
||||||
|
1. Gerät in App registrieren
|
||||||
|
2. Token/DeviceId aus App extrahieren
|
||||||
|
3. API-Calls mit valider Auth
|
||||||
|
|
||||||
|
**Token-Extraktion:**
|
||||||
|
```bash
|
||||||
|
# Aus Android App-Daten (Root erforderlich)
|
||||||
|
adb shell
|
||||||
|
cd /data/data/com.divoom.Divoom/shared_prefs/
|
||||||
|
cat *.xml | grep -i "token\|deviceid"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option 4: Divoom-Website Scraping
|
||||||
|
- Falls offizielle Changelog-Seite existiert
|
||||||
|
- Keine API-Auth nötig
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lokale API (Device)
|
||||||
|
|
||||||
|
### Dokumentation
|
||||||
|
**URL:** http://doc.divoom-gz.com/web/#/12?page_id=196
|
||||||
|
|
||||||
|
**Info:**
|
||||||
|
- Lokale HTTP-API auf Pixoo64-Gerät
|
||||||
|
- Direkter Netzwerk-Zugriff (IP-basiert)
|
||||||
|
- Keine Firmware-Update-Funktionen
|
||||||
|
- Nur für Display-Steuerung
|
||||||
|
|
||||||
|
**Kategorien:**
|
||||||
|
- Dial control
|
||||||
|
- Channel control
|
||||||
|
- System settings
|
||||||
|
- Tool functions
|
||||||
|
- Animation functions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fazit
|
||||||
|
|
||||||
|
Eine **RSS-Bridge für Pixoo64 Firmware-Updates ist derzeit nicht realisierbar**, da:
|
||||||
|
|
||||||
|
1. Alle Update-APIs benötigen Device-Authentifizierung
|
||||||
|
2. Kein öffentlicher Changelog verfügbar
|
||||||
|
3. GitHub-Repo ist unvollständig und Community-maintained
|
||||||
|
|
||||||
|
**Empfehlung:** Warten auf:
|
||||||
|
- Offizielle Divoom Changelog-Seite
|
||||||
|
- Öffentliche API-Dokumentation
|
||||||
|
- Vollständigeres GitHub-Repository
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Kontakt
|
||||||
|
|
||||||
|
**Divoom Support:**
|
||||||
|
- Website: https://divoom.com
|
||||||
|
- Developer Email: developer@divoom.com (laut APK)
|
||||||
|
- Support: https://divoom.com/apps/help-center
|
||||||
|
|
||||||
|
**Recherche durchgeführt:** 2025-01-25 via Claude Code
|
||||||
Reference in New Issue
Block a user