NEUE Betreff: Text-to-Speech App

Begonnen von mediastudio, 02 November 2025, 17:59:16

Vorheriges Thema - Nächstes Thema

mediastudio

Funktioniert die App mit flex.js überhaupt nicht oder nur bestimmte Ansichten, ich werde morgen mal
deine Fehlermeldung prüfen, andernfalls müsste ich mir ein FHEM mit  flex Style  aufsetzen.

Gisbert

Zitat von: mediastudio am 06 November 2025, 21:23:29Funktioniert die App mit flex.js überhaupt nicht oder nur bestimmte Ansichten, ich werde morgen mal
deine Fehlermeldung prüfen, andernfalls müsste ich mir ein FHEM mit  flex Style  aufsetzen.

Die App funktioniert schon, nur dass bei jedem Seitenwechsel die besagte Meldung als Einblendung vorhanden ist, die man dann erst schließen muss (mit einem ok).
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

mediastudio

Ich habe das mal untersucht,
if (typeof data.Results[0] !== "object") return;
Diese Zeile wirft den Fehler, wenn data.Results nicht existiert oder leer ist.
Also: data kommt vom FHEM-Aufruf jsonlist2 <webName>, aber FHEM liefert manchmal kein Objekt zurück, z. B. wenn:
webName leer oder falsch ist, das Device in FHEM nicht existiert, der Nutzer nicht eingeloggt ist oder falsche Rechte hat,
oder FHEM temporär nichts liefert (z. B. wegen Caching).
Dann ist data.Results undefined, und JavaScript kann data.Results[0] nicht lesen → Cannot read properties of undefined
(reading '0').
Lösung auf der JavaScript-Seite (sicherer Code),Falls du Zugriff auf flex.js hast (z. B. über dein
FTUI oder das FHEM-Verzeichnis /opt/fhem/www/pgm2/flex.js), kannst du die problematische Zeile robust absichern.

Ersetze:
 if (typeof data.Results[0] !== "object") return;

durch:
 if (!data || !data.Results || !Array.isArray(data.Results) || typeof data.Results[0] !== "object") {
    console.warn("⚠️ flex.js: Unerwartete Datenstruktur bei jsonlist2", data);
    return;
}

Damit verschwindet der JavaScript-Fehler, und du bekommst stattdessen eine Warnung in der Konsole.

Verhalten in der App: (Android-WebView), ich habe ein onConsoleMessage-Handler eingebaut, es sollte bei den Fällen:
⚠️ FTUI-Fehler in flex.js (Zeile 2346): Cannot read properties of undefined (reading '0')
Die App sollte nicht abstürzen, sondern sollte sauber den Fehler anzeigen.



Gisbert

#18
Ich hab den QR-Code ausgeführt, eine ...apk.zip Datei heruntergeladen und installiert.
Ich musste, das .zip entfernen (Änderung des Dateinamens, nicht Entpacken) - war das richtig?
Es ist anders, aber nicht besser geworden.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

mediastudio

Hallo Gisbert,
danke für Deine Rückmeldung, ich habe noch keine Erfahrung mit fhem-flex,
Ich werde mich mal damit beschäftigen. Sollte ich die Fehler abstellen können,
werde ich das hier weitergeben. Für FHEM und FTUI Layouts sollte die App aber
ohne Probleme funktionieren. Warum habe ich diese App programmiert, ein Muss für
mich war es. die Sprachsteuerung ohne große Änderung an der fhem.cfg wieder herstellen
zu können.