Hauptmenü

Neueste Beiträge

#91
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von grappa24 - 08 April 2026, 23:00:06
nix auffälliges im Log. Kannst du mir die letzte 2.5.2 zur Verfügung stellen?
#92
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 08 April 2026, 22:50:30
Ja 2.5.1 ist richtig.
Hmm das riecht nach einem Perl Fehler. Gibt es bei mir allerdings nicht.

Schau mal bitte in deinem Log nach Fehler beim Start mit der V 2.5.3. Dort müsste etwas auftauchen was das Laden von SF verhindert.
#93
Unterstützende Dienste / Aw: Neues Modul: Signalbot (In...
Letzter Beitrag von Gisbert - 08 April 2026, 22:48:23
Ok verstehe, dass es erstmal nicht weitergeht.

Die Installation bricht bei mir mit folgender Meldung ab:

Stopping signal-cli service
Downloading signal-cli 0.14.1...WARNING: timestamping does nothing in combination with -O. See the manual
for details.

--2026-04-08 22:42:40--  https://github.com/AsamK/signal-cli/releases/download/v0.14.1/signal-cli-0.14.1-Linux.tar.gz
Resolving github.com (github.com)... 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2026-04-08 22:42:40 ERROR 404: Not Found.

Ich breche an der Stelle erstmal ab und warte bis in etwa klar ist, wie es für mich weitergehen könnte.
#94
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von grappa24 - 08 April 2026, 22:47:57
mit dem list <SF-Device> kommt no device named <SF-Device> found
Mit der regulären Version, ich glaub das war die 2.5.1, ist alles wieder da
#95
FHEMWEB / Aw: [Voicecontrol] Button für ...
Letzter Beitrag von schwatter - 08 April 2026, 22:45:59
Nabend,

1. In Fhemweb.js am Ende einfügen

// --- FHEM Universal Audio & Speech Backend ---
var fhemSelectedVoice = null;

function FW_audioControl(input) {
    if (!input || input.trim() === "") return;

    // --- fw_id aus [id] extrahieren ---
    var match = input.match(/^(.*)\s\[(.*)\]$/);
    var cleanInput = match ? match[1] : input;
    var targetId   = match ? match[2] : null;

    // eigene fw_id holen (body)
    var myId = (typeof $ !== 'undefined') ? $("body").attr("fw_id") : null;

    // nur ausführen wenn passende fw_id oder keine gesetzt
    if (targetId && myId && targetId !== myId) return;

    input = cleanInput.trim();

    // --- actualWindow Marker erkennen ---
    var onlyThisWindow = false;

    if (/\|actualWindow$/i.test(input)) {
        onlyThisWindow = true;
        input = input.replace(/\|actualWindow$/i, "").trim();
    }

    // wenn nur dieses Fenster → prüfen
    if (onlyThisWindow && !myId) return;


    // 1. Stimmen-Management (Innere Logik)
    var loadVoices = function() {
        if (typeof window.speechSynthesis === 'undefined') return;
        var voices = window.speechSynthesis.getVoices();
        if (voices.length > 0) {
            fhemSelectedVoice =
                voices.find(v => v.name.includes("Stefan")) ||
                voices.find(v => v.name.includes("Hans")) ||
                voices.find(v => v.lang.startsWith("de"));
        }
    };

    // Stimmen laden, falls noch nicht geschehen
    if (!fhemSelectedVoice) loadVoices();
    if (window.speechSynthesis && window.speechSynthesis.onvoiceschanged !== undefined && !fhemSelectedVoice) {
        window.speechSynthesis.onvoiceschanged = loadVoices;
    }

    // 2. Entscheidung: AUDIO-DATEI (.mp3, .wav, .ogg)
    if (/\.(mp3|wav|ogg)$/i.test(input)) {
        var url = '/fhem/www/audio/' + input;
        console.log('FHEM_AUDIO PLAY:', url);
        var a = new Audio(url);
        a.play().catch(e => console.log('Audio blocked:', e));
    }
   
    // 3. Entscheidung: SPRACHAUSGABE (TTS)
    else {
        console.log('FHEM_AUDIO SPEAK:', input);
       
        // Textreinigung
        var cleanText = input.replace(/_/g, ' ').trim();
        var utter = new SpeechSynthesisUtterance(cleanText);
        utter.lang = "de-DE";
       
        if (fhemSelectedVoice) {
            utter.voice = fhemSelectedVoice;
        }

        // Sprachausgabe starten
        window.speechSynthesis.speak(utter);
    }
}
   
// Optional: Einmaliges Vorab-Laden beim Start der Seite
if (window.speechSynthesis) {
    if (window.speechSynthesis.onvoiceschanged !== undefined) {
        window.speechSynthesis.onvoiceschanged = function() {
            var v = window.speechSynthesis.getVoices();
            if (v.length > 0 && !fhemSelectedVoice) {
                fhemSelectedVoice = v.find(s => s.name.includes("Stefan")) || v.find(s => s.lang.startsWith("de"));
            }
        };
    }
}

2. notify Beispiele

Aktuelles offenes Browserfenster
defmod n_audio_test notify Lampe01_Ez:on { FW_directNotify("#FHEMWEB:$FW_wname","FW_audioControl('ballhupe.mp3|actualWindow')","");; }
defmod n_audio_test notify Lampe01_Ez:on { FW_directNotify("#FHEMWEB:$FW_wname","FW_audioControl('Das ist ein Test|actualWindow')","");; }
Alle offenen Browser
defmod n_audio_test notify Lampe01_Ez:on { FW_directNotify("#FHEMWEB:$FW_wname","FW_audioControl('ballhupe.mp3')","");; }defmod n_audio_test notify Lampe01_Ez:on { FW_directNotify("#FHEMWEB:$FW_wname","FW_audioControl('Das ist ein Test')","");; }
EIn Statusicon ist noch nicht drin.

Gruß schwatter
#96
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 08 April 2026, 22:41:58
Vllt. hast du noch mehr fehlerhafte Definitionen in dem Attribut.
 
Gib mal ein   list <dein SF-Device> 

Dann erscheint:

Internals:
   FUUID      65fc9458-f33f-b178-25f9-f4ecb3d78e5f1f59
   FVERSION   76_SolarForecast.pm:v2.5.2-s31087/2026-04-06
   LCACHEFILE last write time: 22:27:01 whole Operating Memory
   MODE       Automatic / Event-controlled - next planned Cycletime: 22:40:09
   MODEL      OpenMeteoDWDD2API
   NAME       openMeteo
   NOTIFYDEV  SMA_Energymeter,SolCastDummy3,SolCastDummy,MySTP_5000,batteryinverter,solarcharger,pvinverter
   ....

Der NAME (hier openMeteo) ist ein Link dort kannst du das Device auf die Oberfläche holen ...
#97
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von grappa24 - 08 April 2026, 22:36:44
In der fhem.cfg sind alle Definitionen vorhanden, es erscheint aber nicht mehr im WEB Frontend
#98
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 08 April 2026, 22:32:53
Was heißt weg?
#99
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von grappa24 - 08 April 2026, 22:28:41
Zitat von: DS_Starter am 08 April 2026, 22:07:28V 2.5.3 liegt im contrib.
Mit der 2.5.3 ist nach einem restart mein SF Device "weg" ???
#100
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 08 April 2026, 22:21:21
@grappa24,

das ist natürlich jetzt ein bisschen blöd bei dir gelaufen. Für die Legacy Verbrauchsprognose sollten die zu hohen gespeicherten Werte mit der Zeit an Bedeutung verlieren.
Für das KI Training sind sie irreführend.
Deshalb würde ich dir vorschlagen alle con >= deinem "normalen" Verbrauch pro Stunde aus aiRawData zu löschen.

Das geht mit 

set ... reset aiData delValue=con>=xxxxx