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.// --- 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"));
}
};
}
}
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 Browserdefmod 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')","");; }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
....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"
set ... reset aiData delValue=con>=xxxxx