Hallo, gibt es eine Möglichkeit das sich ein beliebiger Browser permanent so alle paar Minuten aktualisiert? Mein Anliegen ist das Dashboard meiner Solaranlage von Growatt mit dem aktuellen Leistungsdaten permanent zu aktualisieren. Möchte jetzt nichts neues erfinden oder Software von Drittanbietern nehmen, da die Anzeige so wie sie ist, gut ist. Es nervt nur das sie sich nach einer gewissen Zeit aus loggt und für den Anwendungsfall einer Anzeige auf dem Tablet an der Wand somit ungünstig ist. Gelegentlich will es dann auch noch Nutzer und PW haben.
:
Bearbeitet durch User
Wenn du zum Beispiel mit dem FF arbeitest, könntest du die Erweiterung "AutoRefreshPage" nutzen. Solche Möglichkeiten gibt es auch bei anderen Browsern... Eine Möglichkeit, die mit ALLEN Browsern funktioniert, ist mir nicht bekannt.
Bei meinem FHEM Server musste ich das beim SVG Generator angeben.
8.2.1.2. Benutzung der lokalen Anlagenüberwachung und Fehlerbehebung Wenn denn Daten lokal überwacht werden, darf das Handy nicht vom W-LAN getrennt werden. Achten Sie darauf, „auto refresh“ auf der Startseite zu aktivieren um aktuelle Daten angezeigt zu bekommen. „
Da haben wohl die "Entwickler" der Firma Growatt die paar Zeilen HTML weggelassen die einen Autorefresh bewirkt haetten. Ein "Dashboard" das sich selbst nicht aktualisiert, ist nichts Wert. Du solltest die Firma zur Nachbesserung auffordern!
Motopick schrieb: > Da haben wohl die "Entwickler" der Firma Growatt die paar Zeilen > HTML weggelassen die einen Autorefresh bewirkt haetten. > Ein "Dashboard" das sich selbst nicht aktualisiert, ist nichts Wert. > > Du solltest die Firma zur Nachbesserung auffordern! es refreshed sich schon nur nach paar Minuten loggt es sich auch aus. Ich muss dann den Explorer aktualisieren.
> nur nach paar Minuten loggt es sich auch aus Solchen "Kram" einstellbar und abschaltbar zu machen ist auch: > Du solltest die Firma zur Nachbesserung auffordern!
●DesIntegrator ●. schrieb: > warum muss man da alle paar Minuten rauf gucken? Das nicht, aber wenn man alle Stunden oder Tage mal draufguckt ist dies ebenso nervig.
Falls du irgendwo einen eigenen Webserver laufen hast (z.B. auf einem NAS), kann man dort eine lokale Webseite aufsetzen, die nur einen iFrame enthält, in dem wiederum das Dashboard deines Systes zu sehen ist. In den Header der eigenen Webseite kommt dann ein Meta-Tag zum automatischen Reload ...
Frank E. schrieb: > Falls du irgendwo einen eigenen Webserver laufen hast (z.B. auf einem > NAS), kann man dort eine lokale Webseite aufsetzen, die nur einen iFrame > enthält, in dem wiederum das Dashboard deines Systes zu sehen ist. > In den Header der eigenen Webseite kommt dann ein Meta-Tag zum > automatischen Reload ... Was mich auf die Idee bringt, dass man auch Proxy Server benutzen kann, um Header zu injizieren.
Frank E. schrieb: > Falls du irgendwo einen eigenen Webserver laufen hast Eine entsprechende HTML-Datei auf der Festplatte reicht auch.
> In den Header der eigenen Webseite kommt dann ein Meta-Tag zum > automatischen Reload ... Was alles nichts gegen das von der Seite erzwungene "Abmelden" nuetzen wird. So wie der TO schrieb, fuehrt die Seite ja durchaus einen Refresh aus. Daher: > Du solltest die Firma zur Nachbesserung auffordern! Edit: Im uebrigen finde ich den Gedanken, solchen herstellergemachten Murks durch eigenen Energieaufwand(!) zu umgehen, mittlerweile ziemlich abwegig.
:
Bearbeitet durch User
Bernd S. schrieb: > Eine Möglichkeit, die mit ALLEN Browsern funktioniert im HTML Code von der Webseite? (wenns denn eine eigene ist) <html> <head> <meta http-equiv="Content-Language" content="de"> <meta http-equiv="refresh" content="5"> <title>Meine selbstaktualisierende Webseite</title> </head> <body> <h1>Diese Webseite aktualisiert sich alle fünf Sekunden selbst!</p> </body> </html>
So ein automatischer Reload ist allerdings super ätzend, wenn die Seite ein Eingabeformular enthält. Habe schon einige gesehen, die während der Eingabe neu laden.
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"> <title>Dashboard</title> <link rel="shortcut icon" type="image/x-icon" hr ef="/v3//images/favicon/favicon.ico"> <link rel="stylesheet" type="text/css" hr ef="/v3/css/odm/odm_en.css?0.6.6" /> <link rel="stylesheet" type="text/css" hr ef="/v3/js/common/mCustomScrollbar/jquery.mCustomScrollbar.css" /><!--滚动条--> <!--轮播--> <link rel="stylesheet" type="text/css" hr ef="/v3/css/index/index.css?0.6.6" /> <link rel="stylesheet" type="text/css" hr ef="/v3/js/common/layui-v2.2.5/css/layui.css" /> <script type="text/javascript" src="/v3/js/common/jquery.min.js"></script> <script type="text/javascript" src="/v3/js/common/cookie.js"></script> <script type="text/javascript" src="/v3/js/common/scrollReveal.js"></script> <script src="/javaScript/xhb/js/langConfig.js" type="text/javascript" charset="utf-8"></script> <script> var BASEPATH = ''; var LANG_MAP = oLangConfig.LANG_MAP; var systemLanguages = ["cn","hk","en","fr","gk","gm","ho","it","ja","pl","pt","sp","tk","vn"," kr","th","jk","lmny"];//["cn","en"]; var ODMPARAM={}; var LANG="en"; var SERVERURL="server.growatt.com"; var SERVERIP="8.211.11.25"; var SERVER_TIME=new Date("2023-03-15 14:59:38");//系统时间,因jsp校验红线,苟且加上parseInt("") var LOCAL_TIME=new Date(); //本地时间,不能修改 var CURR_PATH; //当前页面路径text var CURR_URL={one:null,two:null,three:null}; //当前页面路径 var CURR_CONTENT={one:null,two:null,three:null} var CURR_PLANTID; //当前选中电站id //var PLANTWEATHER;//当前电站天气 var PLANTS; var ACTION={time:null,one:null,two:null,three:null,action:null,run:false}; var USERCOUNTRY = 'Germany'; var ACCOUNTNAME = 'ichselbst'; if(window.scrollReveal) window.scrollReveal = new scrollReveal(); var DEVICENAME={"inv":{name:"Inverter"} ,"storage":{name:"Storage"} ,"mix":{name:"Hybrid Inverter"} ,"max":{name:"MAX/MID/MAC"} ,"conBox":{name:"Convergence"} ,"meter":{name:"Meter"} ,"env":{name:"weather"} ,"pcs":{name:"PCS"} ,"jlInv":{name:"Jlinverter"} ,"jfyInv":{name:"Jfy Inverter"} ,"hps":{name:"HPS"} ,"spa":{name:"Ac Couple"} ,"pbd":{name:"PBD"} ,"tlx":{name:"MIN/MIC/MOD/NEO"} ,"singleBackflow":{name:"Single Exportlimit"}//单项防逆流 ,"multipleBackflow":{name:"Multi-device Exportlimit"}//多机防逆流 ,"eybondInv":{name:"Eybond"} ,"igenInv":{name:"Third Party Device"} ,"ibInv":{name:"Inverter"} ,"spct":{name:"Spct"} ,"pumper":{name:"Pump Inverter"} ,"peaInv":{name:"Inverter"} ,"wit1":{name:"WIT"} ,"wit":{name:"WIT"} ,"wit-A":{name:"WIT"} ,"sph":{name:"Grid-Hybrid Inverter"} }; var i18n_common_click_upload="Click Upload";//点击上传 var i18n_common_please_select_plant_first="Please Select The Plant First";//请先选择电站 var i18n_common_return_data_exception="Return Data Exception";//返回数据异常 var i18n_common_server_has_error="The Server Has A 500 Error";//服务器发生了500错误 var i18n_common_connect_server_error="Temporarily Unable To Connect To The Server, Please Try Again Later.";//暂时无法连接服务器,请稍后重试 var i18n_common_upload_file_size_error="Upload File Size Exceeds Limit";//上传文件大小超出限制 var i18n_common_cancel="Cancel";//取消 var i18n_common_regValue="Value";//值 var i18n_carry_out="Carry Out";//保存 var push_select="Please Choose";//请选择 var i18n_information="Information";//信息 var i18n_oss_Analysis_complete="All";//全部 var i18n_common_The_power_plant="This plant does not exist, please log in again";//电站不存在 //国际化配置 var xhb_oss_spring = { lang:{ mporarily_unavailable:"mporarily_unavailable",//暂不可用 currently_not_supported:"Currently not supported, please select again",//暂不支持,请重新选择 } }; </script> <script type="text/javascript" src="/v3/js/odm/odm.js"></script> <script type="text/javascript" src="/v3/js/odm/odm_en.js?0.6.6"></script> <script> var LANGS; if($.cookie("lang")==undefined){ $.cookie("lang","en") } if(ODMPARAM["dateforeign"]){ LANGS="en"; if($.cookie("lang")!=undefined){ LANGS=$.cookie("lang"); } } var otherPage; </script> <script src="/v3/js/common/mCustomScrollbar/jquery.mCustomScrollbar.min.js"></sc ript> <script src="/v3/js/common/layui-v2.2.5/layui.all.js"></script> <script src="/v3/js/common/highcharts/highcharts.js"></script> <script src="/v3/js/common/common.js?0.6.6"></script> </head> <body id="body" class="black"> <div id="bodyContent" class="retv" style="min-width:1248px"> <style> div.topMenu div.location-path{margin-top: 50px;} div.topMenu .div_location{width:auto;pointer-events: none;} .header{margin-bottom: 15px;} .hiden{display:none;} </style> <!--头部--> <div class="header"> <div class="top"> <a class="logo floatL" hr ef="/login" > <img src="/v3/images/login/logo.png" /> </a> <div class="title"> <div class="top_plant_search" id="top_plant_search"> <span style="display: none" class="odmshow">Plant:</span> <div class="selectTitle"> </div><i></i> <div class="selectCon"> <div class="select_search_cn"><input autocomplete="off" id="select_search" class="allInput" style="width: 180px;"></div> <dl id="header_sel_plantstwo"> </dl> </div> </div> </div> <div class="abRight"> <div class="top-listM"> <div class="logout" id="btn_logout" title="Exit"><div></div></div> <!-- list --> <div class="list"> <div class="collBtn" style="background-image:url(/v3/images/s_shrink.png)"></div> <div class="collList"> <div class="cnshow" style="display:none;background-image:url(/v3/images/note.png)"> <div class="newsBox" style="display: block;"> <span class="close"></span> <h3><span></span>Feedback</h3><!--意见反馈--> <p>In Order To Provide You With Better Service, I Hope That You Can Take A Few Minutes To Tell Us Your Feelings And Suggestions. We Attach Great Importance To The Valuable Opinions Of Each User And Look Forward To Your Participation!<a id="newsLink" hr ef="" target="_bank">Click The Link To Participate In The Survey<span></span></a></p> </div> </div> <div style="background-image:url(/v3/images/s_phone.png);" title="App"> <div style="padding:10px"> <table> <tr> <td> <img src="/images/download_growatt.png" style="width: 100px;"/> <br/> Scan Qr Code Download </td> </tr> </table> </div> </div> <div style="background-image:url(/v3/images/s_download.png)" title="Download" id="btn_header_download"></div> <div style="background-image:url(/v3/images/s_language.png)" title="Language"> <!--{--><div class="leftMenu"> </div><!--}--> </div> </div> </div> </div> <!-- 搜索框 --> <ul class="floatR searchDiv"> <li class="peeling"><i class="icon_peeling"></i>Switch theme</li> <li class="addPlant btn_addPlant right-line" ><i class="ico-addPlant"></i>Add Plant</li> <li class="addDevice btn_addDatalog right-line"><i class="ico-addCollector"></i>Add Data Logger</li> <li class="addTigo right-line"><i class="ico-addTigo"></i>Add Optimizer</li> <li class="btn_SelfInfo"> <i class="ico-user"></i> <span>likeme( Normal User )</span> </li> </ul> </div> </div> <div class="topMenu"> <div class="div_location"> <div class="location-name">---</div> <div class="location-path"><span>Current Location</span>: <span class="txt-location-path"><span class="one"></span><i>></i><span class="two"></span><i>></i><span class="three"></span></span></div> </div> <!-- 天气 --> <div class="div_weat"> <table class="tbl_weat"> <tr class="tr_temp"> <td colspan="3" class="black"> <span class="txt_temp"><span class="txt_plant_weat_tmp">-</span>℃</span> <div> <img class="val_plant_weat_statusImg hide" width="26"><br/> <span class="txt_plant_weat_status">Sunny</span> <span class="txt_plant_weat_city"></span> </div> </td> </tr> </table> <div class="layui-carousel" id="layuiWeat"> <div carousel-item> <div> <dl> <dt>Irradiance</dt> <dd class="txt_plant_weat_radiant">--</dd> </dl> <dl> <dt> Cloud Volume </dt> <dd class="txt_plant_weat_cloud">--</dd> </dl> <dl> <dt>Sunrise-Sunset</dt> <dd class="txt_plant_weat_sunUD">--</dd> </dl> </div> </div> </div> </div> <div class="div_menus showAnim" data-scroll-reveal="enter top and move 30px over 0.8s"> <div class="div_menu_panel" data-url="/panel" data-path="Dashboard" data-action="index_panel_action"><span class="menuImg"> </span><span>Dashboard</span></div> <div class="div_menu_energy" data-url="/energy" data-path="Energy" data-canNoPlant="true" data-action="index_noPanel_action"><span class="menuImg"> </span><span>Energy</span></div> <div class="div_menu_device" data-url="/device" data-path="Device" data-canNoPlant="true" data-action="index_device_action"><span class="menuImg"> </span><span>Device</span></div> <div class="div_menu_layout hiden" data-url="/layout" data-path="Layout" data-action="index_noPanel_action"><span class="menuImg"> </span><span>Layout</span></div> <div class="div_menu_home" style="display:none" data-url="/homeEnergy/getHeaderPage" data-path="Home energy" data-canNoPlant="true" data-action="index_noPanel_action"><span class="menuImg"> </span><span>Home energy</span></div> <div class="div_menu_log" data-url="/log" data-path="Log" data-canNoPlant="true" data-action="index_noPanel_action"><span class="menuImg"> </span><span>Log</span></div> <div class="div_menu_set" data-url="/set" data-path="Setting" data-canNoPlant="true" data-action="index_noPanel_action"><span class="menuImg"> </span><span>Setting</span></div> </div> </div> </div> <div id="myDialogContentBoxTest" style="display: none;"></div> <script> showAllTxt(".showTitle"); var i18n_userInfo_selPlant ="Select Plant"; var i18n_header_noPlant ="No Plant"; var i18n_userInfo_selPlant ="Select Plant"; var i18n_plantOver_addPlant ="Add Plant"; var i18n_device_addDatalog ="Add Data Logger"; var i18n_header_panel = "Dashboard"; var i18n_No_power_station_click_to_add = "Please Fill In The Plant Information"; var i18n_common_positioned_this_plant = "Positioned This Plant"; var i18n_device = "Device"; var i18n_tigo_add = 'Add Optimizer'; checkODMText(window); comm.starAnimation(); let nextBtn = 'Next'; let addDev = 'Add Device'; let ad = 'Add'; let quxiao = 'Close '; let hao ='Data Logger Sn'; let ma ='Check Code'; let devicehao = 'Device Sn'; let device_addDatalog = 'Add Data Logger'; let common_search_new_add_datalog = 'Search New Add Datalogger' let contentPath = '' let success = 'Saved Successfully'; let savaWrong = 'Save Failed...'; </script> <script type="text/javascript" src="/v3/js/index/header.js?0.6.6"></script> <!--以上内容共用--> <div id="div_pageContent" style="min-height:500px"> </div> <div class="footer"> <span class="odmText" data-odm-t="copyRightText" style="display:none"> Copyright©2019 - SHENZHEN GROWATT NEW ENERGY Co., Ltd ShineServer-3.6.0.0 </span> </div> <div id="div_i18n" style="display:none"> <input class="dear_no_data" value="No Data"/> <input class="oss_it_Operation_is_successful" value="Operation Is Successful"/> <input class="oss_it_Operation_failed" value="Operation Failed"/> <input class="common_noticeInfo" value="Message"/> <input class="common_sure" value="Yes"/> <input class="common_cancel" value="Cancel"/> <input class="common_close" value="Close"/> <input class="inv_set_param_error" value="Command Parameter Error."/> <input class="param_not_empty" value="Parameter Cannot Be Empty"/> <input class="common_loading" value="Loading..."/> <input class="device_more" value="More"/> <input class="common_connect" value="Connection"/> <input class="common_wait" value="Wait"/> <input class="common_error" value="Malfunction"/> <input class="common_break" value="Lost"/> <input class="work_day" value="Time"/> <input class="work_month" value="Day"/> <input class="work_year" value="Month"/> <input class="work_total" value="Year"/> <input class="show-more" value="More"/> <input class="no-more" value="No More"/> <input class="common_prePage" value="Previous"/><!-- 上一页 --> <input class="common_nextPage" value="Next"/><!-- 下一页 --> <input class="common_gong" value="Total"/><!-- 共 --> <input class="common_article" value="Item"/><!-- 条 --> <input class="common_to_first" value="To First"/><!-- --> <input class="common_ye" value="Page"/><!-- 页 --> <input class="common_sure" value="Yes"/><!-- 确定 --> <input class="common_suretwo" value="Yes"/><!-- 保存 --> <input class="update_common_sure" value="Confirm"/><!-- 保存 --> <input class="carry_out" value="Carry Out"/><!-- 保存_巴西项目 --> <input class="common_home" value="Home"/><!-- 首页 --> <input class="common_last" value="Last"/><!-- 尾页 --> <input class="full_screen" value="Full Screen View"/><!-- 全屏查看 --> <input class="print_chart" value="Print"/><!-- 打印 --> <input class="download_PNG_image" value="Download Png Image"/><!-- 下载png图片 --> <input class="download_JPEG_image" value="Download Jpeg Image"/><!-- 下载JPEG图片 --> <input class="download_PDF_document" value="Download Pdf File"/><!-- 下载PDF文件 --> <input class="download_SVG_vector_image" value="Download Svg Vector Image"/><!-- 下载SVG矢量图像 --> <input class="lyn_Add_authorization" value="Add authorization"/> <input class="lyn_Authorized_account" value="Authorized account"/> <input class="lyn_Please_enter_an_authorized" value="Please enter an authorized account"/> </div> <div id="div_dialogs"></div> </div> </body> </html> <script src="/v3/js/common/highcharts/exporting.js"></script>
PS: Href wurde ersetzt durch Hr ef.... warum auch immer, das ging so nicht abzuspeichern.
Christian M. schrieb: > [einen Haufen gequirlte Copypasta] Dass man Code besser anhängen sollte, statt Threads damit unlesbar zu machen, ist noch nicht zu dir durchgedrungen? Spätestens, nachdem Probleme mit dem Abspeichern aufgetreten sind, hätte man doch mal nachdenken können? On-Topic: mit einem Userscript dürfte sich das gewünschte Verhalten der Seite recht einfach erzielen lassen.
:
Bearbeitet durch User
Jack V. schrieb: > Dass man Code besser anhängen sollte, statt Threads damit unlesbar zu > machen, ist noch nicht zu dir durchgedrungen? Das ist zu viel erwartet, er ist doch erst seit 9 Jahren dabei.
Steve van de Grens schrieb: > So ein automatischer Reload ist allerdings super ätzend, wenn die Seite > ein Eingabeformular enthält. Habe schon einige gesehen, die während der > Eingabe neu laden. Dann sollte man über AJAX gehen. Diese Methode aktualisiert aus dem Hintergrund heraus und ersetzt oder aktualisiert nur den Programmierten Bereich. Hier mal ein sehr einfaches Beispiel sogar mit sekündlicher Aktualisierung. Sollte man aber hier anders lösen wenn man noch etwas bedienen will. HTML
1 | <label for="t2" id="t2" style="color:#FF0000"></label> |
2 | <div style="color:#FF0000" id="demo"> |
3 | |
4 | <button type="button" |
5 | onclick="loadDoc('aram.html', myFunction)"> |
6 | Change Content |
7 | </button> |
Script
1 | <script type="text/javascript"> |
2 | |
3 | |
4 | function loadDoc(url, cFunction) { |
5 | var xhttp; |
6 | xhttp = new XMLHttpRequest(); |
7 | xhttp.onreadystatechange = function () { |
8 | if (this.readyState == 4 && this.status == 200) { |
9 | cFunction(this); |
10 | } |
11 | }; |
12 | xhttp.open("GET", url, false); |
13 | xhttp.send(); |
14 | setTimeout(loadDoc, 1000, 'aram.html', myFunction); |
15 | } |
16 | function myFunction(xhttp) { |
17 | document.getElementById("t2").innerHTML = |
18 | xhttp.responseText; |
19 | } |
20 | </script> |
Danke! Bin Elektroniker und kein HTMLiker. Das das Viel Kram ist, ist mir klar, aber jetzt ist alles gezeigt.
Christian M. schrieb: > <!DOCTYPE html> bist du verrückt? Wichtige Regeln - erst lesen, dann posten! Groß- und Kleinschreibung verwenden Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang mein armes Mausrad!
Stored B. schrieb: > Dann sollte man über AJAX gehen. Mit fetch statt dem 1990er XMLHttpRequest:
1 | document.getElementById("t2").innerHTML = await (await fetch('aram.html')).text(); |
https://caniuse.com/fetch
:
Bearbeitet durch User
Ist es nicht eher so, dass der Browser ein Neuladen verhindert, wenn er nicht im Vordergrund ist? Und der automatische Logout erfolgt dann wahrscheinlich nach einiger Inaktivität.
Thorsten M. schrieb: > Inaktivität Bei AJAX ist es so. Wüsste keine Konfiguration die das verhindert. Wenn der TO den Dashboard aber auf einem Rechner laufen hat der immer den Browser aktiv im Vordergrund hat, ist das kein Problem.
Christian M. schrieb: > Danke! Bin Elektroniker und kein HTMLiker. Das das Viel Kram ist, ist > mir klar, aber jetzt ist alles gezeigt. Vor allem die chinesischen Texte darin sind ... total klar.
Christian M. schrieb: > Hallo, gibt es eine Möglichkeit das sich ein beliebiger Browser > permanent so alle paar Minuten aktualisiert? Opera kann das seit Ewigkeiten von Haus aus, kann sich selbst wieder einloggen, hat einen ordentlichen Kioskmodus und lässt sich im Zweifel so konfigurieren, dass er nur ein einzelnes Fenster mit einem ganz schmalen Rahmen darstellt. Ggf. ist Opera Mini auch einen Blick wert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.