Zitat von: JoWiemann am 07 Februar 2025, 12:41:00Hier gibt es zwei Links, einmal um die Info-Led zurück zu setzen und um das Reading selber zu löschen.beide links funktionieren.
[fritzbox | 7490 | 113.07.60 | Set.2165] - SIGNIFICANT:ledsetting notifyoff 8_1 - not applied
Zitat von: JoWiemann am 07 Februar 2025, 12:41:00Es gibt parallel ein zweites reading in dem ich einen Button hinterlegt habe, mit dem dann in Zukunft eine nähere Info ausgeben werden kann.der button sieht bei mir gut aus, siehe sreenshot.
2025.02.08 14:39:37.765 3: [fritzbox | 7490 | 113.07.60 | Readout_Run_Web_LuaData.4607] - BASIC:hmtl_links:
<html>INTERNET NO_CONNECTION <a href='/fhem?cmd=deletereading%20-q%20fritzbox%20box_notify_8_1.*&fwcsrf=csrf_559199566838920' target='_self'><reading löschen></a> <a href='/fhem?cmd=set%20fritzbox%20ledSetting%20notifyoff%208_1&fwcsrf=csrf_559199566838920' target='_self'><LED ausschalten></a></html>
<html><div id='button'><button id='dis' onclick='JS:FW_okDialog("wenn ich weiß, wo ich eine Info herbekomme")'>Information anzeigen</button></div></html>
const notifyTexts = (() => {
const getDiagnosisText = el => html2.printf("Starten Sie unter %1%Linkanfang%Diagnose > Funktion%/1%Linkende% die Diagnose der FRITZ!Box.", createLink(el.url, "funcCheck"));
const getLogText = el => html2.printf("Weitere Details finden Sie unter %1%Linkanfang%System > Ereignisse > Telefonie%/1%Linkende%.", createLink(el.url, "log"));
return {
getDiagnosis: getDiagnosisText,
forCategory: {
JASON: el => {
const result = {};
result.header = "Dringende Benachrichtigung zu Ihrer FRITZ!Box: " + el.message;
if (el.url) {
result.content = html2.p({}, el.message, " ", createMoreLinkForNotify(el.url));
}
return result;
},
},
forEvent: {
NO_CONNECTION: (el, data) => {
const mainConnectionIsMobile = data.internet?.connections?.find(c => c.type === "mobile" && (c.role === "main" || c.role === "single"));
let texts;
if (mainConnectionIsMobile) {
texts = ["Stellen Sie sicher, dass die SIM-Karte korrekt freigeschaltet ist.", "Stellen Sie sicher, dass die Konfiguration für den Internetzugang zur verwendeten SIM-Karte passt.", getDiagnosisText(el)];
} else {
texts = ["Stellen Sie sicher, dass das Kabel für den Internetzugang richtig steckt.", getDiagnosisText(el)];
}
return {
header: "Internetverbindung seit mehr als einer Stunde unterbrochen",
content: html2.fragment(html2.p({}, "Die FRITZ!Box ist seit mehr als einer Stunde nicht mehr mit dem Internet verbunden."), html2.ul({}, texts.map(text => html2.li({}, text))))
};
},
BOTNET_DETECTED: el => {
const result = {};
const txtParts = el.message.split(";");
if (txtParts) {
if (txtParts[3]) {
result.header = jsl.sprintf("Zugriff auf Botnet '%1%botnet%' über Domain '%2%domain%' von Gerät '%3%dev%' erkannt!", txtParts[0], txtParts[1], txtParts[3]);
} else {
result.header = jsl.sprintf("Zugriff auf Botnet '%1%botnet%' über Domain '%2%domain%' von der Box selbst erkannt!", txtParts[0], txtParts[1]);
}
} else {
result.header = el.message;
}
if (el.url) {
result.content = html2.p({}, result.header, " ", createMoreLinkForNotify(el.url, "log"));
}
return result;
},
NOT_REGISTERED: el => {
return {
header: "Telefonie seit mehr als einer Stunde nicht oder nur eingeschränkt nutzbar",
content: html2.fragment(html2.p({}, "Eine Rufnummer ist seit mehr als einer Stunde nicht verfügbar."), html2.ul({}, html2.li({}, "Prüfen Sie die Einstellungen Ihrer eigenen Rufnummern."), html2.li({}, getDiagnosisText(el))))
};
},
ERROR_500_503: el => {
return {
header: "Letzter ausgehender Anruf aufgrund eines Fehlers im Telefonnetz gescheitert",
content: html2.fragment(html2.p({}, "Die Ursache für das Problem kann vorübergehend sein oder länger andauern. Wenden Sie sich bitte an Ihren Telefonanbieter, sofern das Problem über einen längeren Zeitraum und zu verschiedenen Rufnummern auftritt."), html2.ul({}, html2.li({}, getLogText(el))))
};
},
INTERNATIONAL_CALLS_DETECTED: el => {
return {
header: "Untypisch hohe Nutzung von Auslands- bzw. Sonderrufnummern",
content: html2.fragment(html2.p({}, "Innerhalb kürzerer Zeit wurden mehrfach Auslands- bzw. Sonderrufnummern angewählt. Dies kann erhöhte Kosten nach sich ziehen."), html2.ul({}, html2.li({}, "Prüfen Sie in Ihrer Anrufliste, ob es sich um berechtigte Anwahlversuche handelte."), html2.li({}, "Klicken Sie auf die Meldung in der Ereignisliste, um weitere Hinweise zum Vorgehen bei Vorliegen einer mißbräuchlichen Nutzung zu erhalten."), html2.li({}, getLogText(el))))
};
},
USB_FULL: el => {
return {
header: "Kein Empfang von Sprachnachrichten und Faxen möglich",
content: html2.fragment(html2.p({}, "Der USB-Speicher an der FRITZ!Box ist voll. Die FRITZ!Box kann daher keine Sprachnachrichten und Faxe mehr annehmen."), html2.p({}, "Geben Sie Speicherplatz auf dem Speicher frei, um Anrufbeantworter und Faxempfang wieder nutzen zu können."), el.url ? createMoreLinkForNotify(el.url, "funcCheck") : null)
};
},
BATTERY_LOW: el => {
return {
header: "Batteriewarnung für Smart-Home-Gerät",
content: html2.ul({}, html2.li({}, html2.printf("Prüfen Sie unter %1%Linkanfang%Smart Home%/1%Linkende% den Batteriestand Ihrer Smart-Home-Geräte.", createLink(el.url, "sh_dev"))), html2.li({}, "Ersetzen Sie verbrauchte Batterien an den betreffenden Geräten."), )
};
},
}
};
})();
Zitat von: JoWiemann am 07 Februar 2025, 12:41:00"wenn die ursache einer warnungen wegfällt, beendet die fritzbox das senden der notifydaten von selbst." Da würde ich dann das Reading mit dem Hinweis "erledigt" makieren wollen, da Dir ja sonst die Info fehlt.automatisches löschen habe ich noch nicht bemerkt.
Zitat von: Tueftler1983 am 09 Februar 2025, 09:39:41BetateilschenWenn du ihn richtig schreibst, kommt er vielleicht gleich mit einem Zug voll Popcorn...!
attr Unterschrank devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot':'10px-kreis-gruen';; $onl = FW_makeImage($onl);; my $light = FW_makeImage(ReadingsVal($name,'state','off'));; my $temp = ReadingsVal($name,'temperature_tC','-100');; my $ip = ReadingsVal($name,'ip','none');; my $reb = ReadingsVal($name,'sys_restart_required','false') eq 'true'?'<a href="/fhem?cmd.dummy=set '.$name.' x_reboot&XHR=1"> ... Notwendigen Reboot durchf�hren</a>':'';; qq(<a href="http://$ip" target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a>$reb<div>Temp: $temp °C</div>);;Color_devStateIcon(ReadingsVal($name,"HSV","000000"))}
besteht aus zwei Teilen. Der erste:my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot':'10px-kreis-gruen';; $onl = FW_makeImage($onl);; my $light = FW_makeImage(ReadingsVal($name,'state','off'));; my $temp = ReadingsVal($name,'temperature_tC','-100');; my $ip = ReadingsVal($name,'ip','none');; my $reb = ReadingsVal($name,'sys_restart_required','false') eq 'true'?'<a href="/fhem?cmd.dummy=set '.$name.' x_reboot&XHR=1"> ... Notwendigen Reboot durchf�hren</a>':'';; qq(<a href="http://$ip" target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a>$reb<div>Temp: $temp °C</div>)
ist (zumindest zum größten Teil) geklaut und funktioniert. Erzeugt wird ein HTML-String, die geschweiften Klammern um die Variablennamen sind nur ein Mittel, um sich die concatenations einfacher zu machen (bitte Nachlesen, was das ist, wenn es unklar ist!).Color_devStateIcon(ReadingsVal($name,"HSV","000000"))
Wird dann effektiv zurückgegeben - der hat nur mit dem ersten Teil nichts mehr zu tun, was eben genau dieses Warning erzeugt.Zitat von: Tueftler1983 am 09 Februar 2025, 09:05:50Die userReadings werden doch getriggert,Es ist schon klar, dass der Code ausgeführt wird. Nur eben viel zu oft!
Zitat von: sfh am 03 Februar 2025, 22:18:16Wenn man weiß, wo die Information herkommt, dann passt das soIch denke, das "passt" auch, wenn man das nicht weiß...