Re: Mögliche "STATUS PENDING" Anzeige in WebUI. Feedback erbeten.
Verfasst: 11.07.2022, 21:09
Heimautomation mit ELV HomeMatic und FHZ Funk-Hauszentralen
https://homematic-forum.de/forum/
Code: Alles auswählen
--- /www/rega/pages/tabs/control/hdevichannels.htm.orig
+++ /www/rega/pages/tabs/control/hdevichannels.htm
@@ -246,10 +246,29 @@
Write("<table style='width:100%;'>");
Write("<tr><td class='CLASS03502'><span id='tmc"#chn.ID()#"' name='timeStamp'>");
+ integer dpSeconds = -1;
+ string tmp = "";
+ foreach(tmp, chn.DPs()) {
+ object oDP = dom.GetObject(tmp);
+ if(oDP) {
+ dpSeconds = oDP.TimestampSeconds();
+ if(dpSeconds == 0) {
+ break;
+ }
+ }
+ }
integer cId = chn.ID();
string sLastTime = "";
+ string iSeconds = -1;
Call("/esp/system.fn::getLastTime()");
- Write(sLastTime);
+ if((iSeconds == 0) && (dpSeconds == 0)) {
+ string cType = chn.HssType();
+ if((cType != "VIRTUAL_KEY") && (cType != "KEY_TRANSCEIVER") && (cType != "KEY") && (cType != "SYSTEM")) {
+ Write('<span style="background-color: #FFFF00;">STATUS PENDING</span>');
+ }
+ } else {
+ Write(sLastTime);
+ }
Write("</span></td></tr>");
Write( '<tr><td style="text-align:center;" class="CLASS03502">' );
Beim erneuten Aufrufen des Gerätes, Browser reload oder wenn sich was ändert.
Hatte ich auch so wahrgenommen, aber dann ist dieser Status im Grund nur rein informativ wie die RSSI-Info, die man eben auch bewerten muss und dessen "Berechnungsgrundlagen" vielen Nachfragern eben nicht geläufig sind. Ich hatte noch diesen Post mit einem diesbezüglichen Wunsch aus diesem Thread im Hinterkopf. Und ich denke mal, das wäre der eigentliche Nutzen einer solchen Information. Nur wenn der "gespeicherte und angezeigte" Status valide ist (und eben nicht der gesetzte Default-Wert), dann soll ein Programm drauf triggern.
"Zeig her deine Kleider, zeig her deine Schuh..." D.h. Quellcode(änderungen) zeigen ist aussagekräftiger als irgendwelche Screenshots und beschreibungen der ÄnderungenBaxxy hat geschrieben: ↑11.07.2022, 22:59Ok, ich habe das erstmal etwas abgespeckt und die Pending Anzeige auf die Statuskanäle beschränkt.
Dazu die Bedingung "LastDPAction Time vom Kanal" = 0 rausgeschmissen. Ist eh 0 beim Start und allgemein nicht aussagekräftig zumindest bei Schaltaktoren.
Beim erneuten Aufrufen des Gerätes, Browser reload oder wenn sich was ändert.
Klappt jetzt erstmal ganz gut.
Code: Alles auswählen
integer dpSeconds = -1;
string tmp = "";
foreach(tmp, chn.DPs()) {
object oDP = dom.GetObject(tmp);
if(oDP) {
dpSeconds = oDP.TimestampSeconds();
if(dpSeconds == 0) {
break;
}
}
}
integer cId = chn.ID();
string sLastTime = "";
string iSeconds = -1;
Call("/esp/system.fn::getLastTime()");
if(dpSeconds == 0) {
string cType = chn.HssType();
if(cType == "SWITCH_TRANSMITTER") {
Write('<span style="background-color: #FFFF00;">STATUS PENDING</span>');
}
} else {
Write(sLastTime);
}
Ja, so wäre das auch meiner Sicht auch am sinnvollsten. Würde dann aber definitiv zu einer Diskrepanz zur CCU3-Firmware führen.
Die habe ich bei mir "rausgepatcht", weil es das (vollständige Hintergrund-)Laden der Geräteliste bei mir unnötig verzögert.