core icon indicating copy to clipboard operation
core copied to clipboard

SolarLog 500 and 2024.10.2: "timeout for http connection"

Open toyota-axel opened this issue 1 year ago • 15 comments

The problem

After jumping from 2024.9.3 to 2024.10.2, SolarLog integration runs into a timeout error for the http connection.

What version of Home Assistant Core has the issue?

2024.10.2

What was the last working version of Home Assistant Core?

2024.9.3

What type of installation are you running?

Home Assistant OS

Integration causing the issue

SolarLog

Link to integration documentation on our website

https://www.home-assistant.io/integrations/solarlog/

Diagnostics information

Describe the issue you are experiencing

After jumping from 2024.9.3 to 2024.10.2, SolarLog integration runs into a timeout error for the http connection. Describe the behavior you expected

No timeout, clear connection to pull sensor data from SolarLog 500. Worked fine with 9.3. Steps to reproduce the issue

Update from 9.3 to 10.4
Voilá!
SL 500 has no password set for accessing the data (JSON, afair). Worked seamlessly with 9.3
even setting up SL-integration new didn't work (password request which is new was left aside as, no password is set)

What version of Home Assistant Core has the issue?

2024.10.2 What was the last working version of Home Assistant Core?

2024.9.3 In which browser are you experiencing the issue with?

Firefox (multiple, this is not a browser problem) Which operating system are you using to run this browser?

Ubuntu 22.04 State of relevant entities

No response Problem-relevant frontend configuration

No response Javascript errors shown in your browser console/inspector

timeout connecting to http://solarlog.lan timeout connecting to http://192.168.10.50

Additional information

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

toyota-axel avatar Oct 12 '24 09:10 toyota-axel

Hey there @ernst79, @dontinelli, mind taking a look at this issue as it has been labeled with an integration (solarlog) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of solarlog can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign solarlog Removes the current integration label and assignees on the issue, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


solarlog documentation solarlog source (message by IssueLinks)

home-assistant[bot] avatar Oct 12 '24 09:10 home-assistant[bot]

Could you please provide debug log?

dontinelli avatar Oct 12 '24 09:10 dontinelli

@home-assistant add-label needs-more-information

dontinelli avatar Oct 12 '24 10:10 dontinelli

Hi, I have a similar issue and can provide logs for 24.10.2. Interestingly, I have two solar-logs, and one works just fine. This is the error log from the other since updating to 24.10.x:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 1022, in start
    message, payload = await protocol.read()  # type: ignore[union-attr]
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/streams.py", line 643, in read
    await self._waiter
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/solarlog_cli/solarlog_client.py", line 104, in execute_http_request
    response = await self.session.post(
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 686, in _request
    await resp.start(conn)
  File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 1017, in start
    with self._timer:
  File "/usr/local/lib/python3.12/site-packages/aiohttp/helpers.py", line 736, in __exit__
    raise asyncio.TimeoutError from exc_val
TimeoutError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/solarlog/coordinator.py", line 70, in _async_update_data
    data = await self.solarlog.update_data()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/solarlog_cli/solarlog_connector.py", line 90, in update_data
    data = await self.client.get_energy(data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/solarlog_cli/solarlog_client.py", line 211, in get_energy
    await self.execute_http_request('{ "878": null }')
  File "/usr/local/lib/python3.12/site-packages/solarlog_cli/solarlog_client.py", line 111, in execute_http_request
    raise SolarLogConnectionError(msg) from exception
solarlog_cli.solarlog_exceptions.SolarLogConnectionError: Timeout occurred while connecting to Solar-Log at http://192.168.102.94

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 354, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/solarlog/coordinator.py", line 75, in _async_update_data
    raise ConfigEntryNotReady(ex) from ex
homeassistant.exceptions.ConfigEntryNotReady: Timeout occurred while connecting to Solar-Log at http://192.168.102.94

The solar-log is reachable, connection is unsecured and I already tried rebooting, resetting the local monitoring option and re-adding it to HA.

Your help is much appreciated! Thanks in advance!

lwag-s avatar Oct 12 '24 12:10 lwag-s

Thanks, very helpful. Seems that again the 878-call causes the timeout, similar to https://github.com/home-assistant/core/issues/127380. Could you try if curl works and post the response? curl -X POST -H "Content-Type: application/json" http://yoursolarlogip -d '{ "878": null }'

dontinelli avatar Oct 12 '24 12:10 dontinelli

It responds with the following html:

Code
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<title>Solar-Log™</title>
<link rel="SHORTCUT ICON" href="favicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style> /* content of reset.css */
			html, body, div, span, applet, object, iframe,
			h1, h2, h3, h4, h5, h6, p, blockquote, pre,
			a, abbr, acronym, address, big, cite, code,
			del, dfn, em, font, img, ins, kbd, q, s, samp,
			small, strike, strong, sub, sup, tt, var,
			dl, dt, dd, ol, ul, li,
			fieldset, form, label, legend,
			table, caption, tbody, tfoot, thead, tr, th, td
			{
				margin: 0;
				padding: 0;
				border: 0;
				outline: 0;
				font-weight: inherit;
				font-style: inherit;
				font-size: 100%;
				font-family: inherit;
				vertical-align: baseline;
			}
			:focus { outline: 0; }
			body { line-height: 16px; color: black; background: white; }
			ol, ul { list-style: none; }
			table { border-collapse: separate; border-spacing: 0; }
			caption, th, td { text-align: left; font-weight: normal; }
			blockquote:before, blockquote:after,
			q:before, q:after { content: ""; }
			blockquote, q { quotes: "" ""; }
			sup { vertical-align: super; }
		</style>
<style> /* important content of main.css so frontend looks nice before main.css is loaded */
			.c_toggleHeaderViewport { float:right !important; margin:11px 0px 0px 0px !important; }

			html
			{
				display: block;
				width: 100%;
				min-height: 100%;
				height: 100%;
			}

			body
			{
				display: block;
				width: 100%;
				min-height: 100%;
				height: 100%; /* this causes a vertical scrolling even if not necessary??? */
				margin: 0;
				padding: 0;
				font-family: "Lucida Sans", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Corbel, Arial, sans-serif;
				font-size: 16px;
				position: relative;
				background-color: #FFFFFF;
			}

			#header_body
			{
				background: #fff url(0/images/mainnav_header_bg.gif) repeat-x 0 0px;
			}

			/* Header */
			#header_container
			{
				position: relative;
				z-index: 5;
				width: 100%;
				height: 203px;
				padding: 0;
			}

			#header
			{
				height: 100%;
				width: 1074px;
				margin: 0 auto;
				padding: 0;
				position: relative;
				z-index: 3;
			}

			#logo_header_text_container
			{
				position: relative;
				height: 157px;
				float: left;
				z-index: 6;
			}
				  
			/* Header text */
			#header_text_container
			{
				width: 620px;
				height: 100%;
				margin: 0 0 0 270px;
				position: relative;
				z-index: 6;
				display: table;
			}

			#header_text
			{
				padding: 0;
				display: table-cell;
				vertical-align: middle;
			}

			#header_text .headline
			{
				text-align: center;
				color: #1a1a1a;
				font-weight: bold;
				font-size: 29px;
				line-height: 1.325em;
				margin: 0 0 0 0;
			}

			/* the navigations in top of page including main + metanav */
			#nav_container
			{
				height: 41px;
				width: 100%;
				position: relative;
				z-index: 20;
				margin-bottom: 4px;
			}

			#nav { padding: 0; }
			#nav ul { float: left; }
			#nav ul li.level1
			{
				float: left;
				padding-top: 5px;
				padding: 5px 3px 0 1px;
			}
			#nav ul li.level1 a { cursor: pointer; }

			/* Small logo */
			.small_logo
			{
				padding: 5px 15px 5px 2px;
				margin-top: 6px;
				float: left;
			}
					
					
			/* all navs */
			#nav li { font-size: 13px; }
			#nav li a
			{
				text-decoration: none;
				color: #333;
				display: block;
			}
			#nav li a span
			{
				display: block;
				float: left;
				padding: 5px 12px 12px 10px;
			}
			/* Level 1 */
			#nav li.level1
			{
				float: left;
				text-transform: uppercase;
				font-weight: bold;
				position: relative;
			}
			#nav li.level1 a.level1
			{
				float: left;
				margin: 2px 1px 0 2px;
				position: relative;
			}

			/* Language-Nav */
			#nav #language_nav
			{
				position: relative;
				z-index: 10;
			}
			#nav #language_nav li.level1
			{
				text-transform: none;
				font-weight: normal;
				padding-bottom: 4px;
			}
			#nav #language_nav li.level1 a.level1
			{
				margin: 0;
			}
			#nav #language_nav li.level1 a.level1 span
			{
				padding: 8px 13px 7px 4px;
			}
			#nav #language_nav li.level1 a.level1 span.short
			{
				background: transparent url(0/images/language_nav_arrow.gif) no-repeat right 6px;
				padding: 0 14px 0 0;
				float: none;
				display: inline;
			}
			#nav #language_nav .sub_level { left: 0; }

			/* Level 2 */
			#nav .sub_level
			{
				position: absolute;
				display: none;
				z-index: 9;
				top: 40px;
				left: -3px;
				width: 194px;
			}

			/* Logo */
			#logo_container
			{
				position: relative;
				float: left;
				display: table;
				vertical-align: middle;
				text-align: center;
				top: 0px;
				left: 0px;
				z-index: 10;
				height: 157px;
				width: 220px;
			}
			#logo_container_right
			{
				height: 60px;
				position: absolute;
				right: 0;
				top: 100px;
				width: 200px;
				z-index: 10;
			}
			#logo,
			#logo_container .product_image
			{
				display: table-cell;
				vertical-align: middle;
				text-align: center;
				height: 100%;
				width: 220px;
			}
			#logo_container .product_image
			{
				padding-top: 14px;
			}
			#logo a,
			#logo_container .product_image a
			{
				display: inline-block;
				vertical-align: middle;
				text-align: center;
				width: 100%;
				text-decoration: none;
			}

			/* Body */
			#body_container
			{
				height: auto !important;
				min-height: 100%;
				position: relative;
				z-index: 4;
				background-color: #FFFFFF;
				padding: 6px 0 0 0;
				width: 100%;
			}

			#body
			{
				padding: 6px 0 0px 0;
				margin: 0 auto 0 auto;
				position: relative;
				background: #ffffff url(0/images/body_bg.png) repeat-x scroll 0 0;
				background-color: #FFFFFF;
				min-height: 100%;
				height: auto !important;
				height: 150px;
				width: 100%;
				z-index: 2;
			}

			/* Multi function container on the left side of content, i.e. for subnav */
			#multi_function_container
			{
				width: 212px;
				float: left;
				box-shadow: 0 0 5px rgba(0,0,0,0.5);
				border-radius: 5px;
				background: #fff;
			}

			/* Main container */
			#main_container
			{
				margin: 0;
				z-index: 1;
				position: relative;
				width: 100%;
				min-height: 584px;
			}

			#main
			{
				margin: 0 auto 0 auto;
				padding: 29px 6px 40px 6px;
				color: #333;
				width: 1062px;
			}

			#content_container
			{
				width: 820px;
				padding: 0;
				float: right;
				margin: 0;
				padding: 1px 0 0 0;
				position: relative;
				background: #fff;
				box-shadow: 0 0 5px rgba(0,0,0,0.5);
				border-radius: 5px;
			}

			#content
			{
				padding: 0px 25px 25px 25px;
				position: relative;
				z-index: 2;
			}

			#footer_container
			{
				bottom: 0;
				height: 42px;
				position: fixed;
				width: 100%;
				z-index: 100000;
				background: #003A6F;
				border-top: 5px solid #ebebeb;
			}

			#footer
			{
				z-index: 2;
				position: relative;
				max-width: 1082px;
				min-width: 540px;
				width: 100%;
				height: 31px;
				margin: 0 auto;
			}
			#servicenav_container { padding: 0 20px; }
			#copyright
			{
				float: left;
				font-size: 11px;
				color: #fff;
				padding: 11px 0 0 0;
			}
			#copyright a { color: #fff; }
			#buildrev,#footer_serial
			{
				float: right;
				font-size: 11px;
				color: #fff;
				padding-top: 11px;
			}
			#footer_serial { margin-right: 10px; }

			li { list-style-type: none; }
		</style>
<style> /* important content of content.css so frontend looks nice before main.css is loaded */
			.standard_form fieldset,
			.standard_form .fieldset
			{
				margin: 0px 0 0 0;
				padding: 18px 13px 23px 13px;
				border-bottom: 1px solid #ccc;
			}

			.edit_form_tab_content,
			.record_item_edit_form .edit_form_tab_content,
			.standard_form .edit_form_tab_content
			{
				background: linear-gradient(#e3e4e6, white 333px, white);
				border: 1px solid #ccc;
				border-bottom: none;
				display: none;
				top: -4px;
				position: relative;
				z-index: 2;
			}

			.edit_form_tab_content_container .active,
			.record_item_edit_form .active,
			.standard_form .active
			{
				display: block;
			}

			#content.pageview{ margin-top: 21px; }

			.save_layer_container
			{
				height: 100%;
				width: 100%;
				position: absolute;
				top: 0;
				left: 0;
				z-index: 200;
				vertical-align: middle;
			}

			.save_layer
			{
				vertical-align: middle;
				height: 100%;
				width: 100%;
			}

			.save_layer .transparent_background
			{
				-moz-opacity: 0.50;
				opacity: 0.50;
				filter: alpha(opacity=50);
				background: #033e7b;
				height: 100%;
				width: 100%;
				position: absolute;
				top: 0;
				left: 0;
				z-index: 1;
			}

			.loadingIcon
			{
				background: url("0/images/spinner_white.gif") no-repeat center center / 128px 128px rgba(0, 0, 0, 0);
				width: 128px;
				height: 128px;
			}
			.loadingIconFullsize
			{
				background: url("0/images/spinner_blue.gif") no-repeat center center / 200px 200px rgba(0, 0, 0, 0);
				width: 100%;
				height: 100%;
				z-index: 2;
				position: relative;
				margin: auto;
			}
		</style>
<meta name="viewport" content="width=device-width, initial-scale=0.5, maximum-scale=2, minimum-scale=0.5">
<script>var SLTyp="",SLHW=0,SLCF=0,SLDF=0,SLSerial="00000000",OEMType=0,SubOEMType=0;var lbl_collector=[],rb=[],active_language="DE";var CurrencySign="DM";var DateFormat="dd.mm.yy",TimeFormat="HH:MM:ss",TimeNosecFormat="HH:MM";var tabs_to_hide=0;var lok=true;var EasyDone=false,EasyRunning=false;var diagramDate=new Date();var FormIsModified=false,FormOrigData={},FormHasErrors=false,FormHasErrorsManual=false;var FormPreVal="none",FormPostVal="none";var WelcomeTimer=0,WelcomeLang=0;var mpagecallback;var tab_control={constr:undefined,dest:undefined};var async_counter=0;var sollMonth=[],curAnlagenKWP,sollYearKWP;var indate=new Date();var loggedin=0,login_level=0,access_level=0,SubmitHaddFields;var DaysInMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);var _pw_warning_displayed=false;var sl_task_active=0;function lcdcallback(lcddat){if(lcddat[794]===undefined){return}for(var i=0;i<16;i++){LCDState[i][0]=lcddat[794][0][i][0];LCDState[i][1]=lcddat[794][0][i][1]}$("#timeshort").html(lcddat[701])};</script>
</head>
<body id="top">
<div id="full_page_loader">
<div id="fullsize_loader" class="save_layer_container">
<div class="save_layer">
<div class="transparent_background"></div>
<div class="loadingIconFullsize"></div>
</div>
</div>
</div>
<div id="page_container" style="display: none;">
<div id="page" class="default">
<div id="header_body_container">
<div id="header_body">
<div id="header_container" style="display: none;">
<div class="item_tools c_toggleHeaderViewport">
<div class="notification_bar" id="notificationBar"></div>
<a id="toggle_banner_icon" class="icon icon_header_off" onclick="toggleHeaderViewport()" href="#"></a>
</div>
<div id="header">
<div id="nav_container">
<div id="nav">
<a class="small_logo" title="Zur Herstellerseite" href="http://www.solar-log.com/"><img src="0/images/small_logo.png" alt="Solar-Log™"></a>

<ul id="language_nav" class="level1">
<li class="level1 hasSub language"><a class="level1" href="#"><span><span class="SDSI18N short" name="L_OLANG">Deutsch</span></span></a>
<div class="sub_level">
<div>
<ul class="level2">
<li class="level2"><a class="level2 SDSI18N L_OEM preventlink" l_oem_nr="1" name="L_OLANG_GERMAN" href="#" lang="DE">Deutsch - Deutsch</a></li>
<li class="level2"><a class="level2 SDSI18N L_OEM preventlink" l_oem_nr="2" name="L_OLANG_ENGLISH" href="#" lang="EN">Englisch - English</a></li>
<li class="level2"><a class="level2 SDSI18N L_OEM preventlink" l_oem_nr="5" name="L_OLANG_SPANISH" href="#" lang="ES">Spanisch - Español</a></li>
<li class="level2"><a class="level2 SDSI18N L_OEM preventlink" l_oem_nr="6" name="L_OLANG_FRENCH" href="#" lang="FR">Französisch - Français</a></li>
<li class="level2"><a class="level2 SDSI18N L_OEM preventlink" l_oem_nr="3" name="L_OLANG_ITALIAN" href="#" lang="IT">Italienisch - Italiano</a></li>
<li class="level2"><a class="level2 SDSI18N L_OEM preventlink" l_oem_nr="4" name="L_OLANG_DUTCH" href="#" lang="NL">Niederländisch - Nederlands</a></li>
<li class="level2"><a class="level2 SDSI18N L_OEM preventlink" l_oem_nr="9" name="L_OLANG_TURKISH" href="#" lang="TR">Türkisch - Türkçe</a></li>
<li class="level2"><a class="level2 SDSI18N L_OEM preventlink" l_oem_nr="10" name="L_OLANG_CHINESE" href="#" lang="ZH">Chinesisch - 中国的</a></li>
</ul>
</div>
</div>
</li>
</ul>

<ul id="mainnav" class="level1" style="display:none">
<li class="level1 nav mainnav_active production" data="p">
<a class="level1" href="#">
<span class="SDSI18N" name="L_YIELDDATA">Ertragsdaten</span>
</a>
</li>
<li class="level1 nav diagnostics" data="d">
<a class="level1" href="#">
<span class="SDSI18N" name="L_DIAGNOSIS">Diagnose</span>
</a>
</li>
<li class="level1 nav configuration" data="c">
<a class="level1" href="#">
<span class="SDSI18N" name="L_CONFIGURATION">Konfiguration</span>
</a>
</li>
<li class="level1" id="usermenu">
<a class="level1 preventlink" href="#">
<icon class="icon stdicon icon_user"></icon>
</a>
<ul>
<li id="li_login_inf" class="border"></li>
<li id="li_login" class="border" onclick="show_login_dialog();">
<icon class="icon stdicon icon_user"></icon>
<span class="SDSI18N" name="L_LOGIN">Anmelden</span>
</li>
<li id="li_logout" class="border" onclick="doLogout();" style="display: none;">
<icon class="icon stdicon icon_user"></icon>
<span class="SDSI18N" name="L_LOGOUT">Abmelden</span>
</li>
<li id="li_config_assist" class="border" onclick="config_assist.start_config_assist(false);" style="display: none;">
<icon class="icon stdicon icon_config"></icon>
<span class="SDSI18N" name="L_ASSISTANT">Assistent</span>
</li>
<li id="li_systeminfo" class="border" onclick='nav.jump_to_tab("g_system");' style="display: none;">
<icon class="icon stdicon icon_info"></icon>
<span class="SDSI18N" name="L_SYSINFO">Systeminfo</span>
</li>
<li id="li_infocenter" class="border" style="display: none;">
<a id="infocenter_link" href="https://qrsl.de/1350810269/fADEAH/" target="_blank">
<icon class="icon stdicon icon_info"></icon>
<span class="SDSI18N" name="L_INFOCENTER">Infocenter</span>
</a>
</li>
<li id="li_legal_notices" class="border" style="display: none;" onclick="show_legal_notices();">
<icon class="icon stdicon icon_file_text"></icon>
<span class="SDSI18N" name="L_LEGAL_NOTICES">Rechtliche Hinweise</span>
</li>
<li id="li_reboot" class="border" onclick="trigger_reboot();" style="display: none;">
<icon class="icon std_icon std_icon_reload"></icon>
<span class="SDSI18N" name="L_REBOOT">Neu starten</span>
</li>
</ul>
</li>
</ul>
<div class="CLEAR"></div>
</div>
</div>
<div id="logo_container_right">
<p id="logo"><a title="Zur Herstellerseite" href="http://www.solar-log.com/"><img src="0/images/logo.png" alt="Solar-Log™"></a></p>
</div>
<div id="logo_header_text_container">
<div id="product_image_container">
<div id="logo_container">
<a id="homebutton" class="product_image" title="Zur Startseite" href="http://solar-log/"><img alt="Device Image" src="img?i=images/devimage.png" height="170"></a>
</div>
</div>
<div id="header_text_container">
<div id="header_text">
<h1 class="headline"><span class="SDSI18N" name="L_WELCOMEMAIN">Willkommen im Hauptmenü <br>des Solar-Log <span id="HWTYP"></span> <span id="HWTEXT"></span></span></h1>
</div>
</div>
<div class="CLEAR"></div>
</div>
</div>
</div>
<div id="body_container">
<div id="body" class="custom_style">
<div id="main_container">
<div id="main">
<div id="multi_function_container">
<input id="current_page" name="current_page" value="1" type="hidden">
<div id="multi_function">
<div id="subnav_container">
<div id="subnav">
<div id="lcddiv" class="c_lcddiv">
<canvas height="60" width="100" class="round_box_shadow c_lcdcanvas" id="jh_lcd_display3"></canvas>
<p id="timeshort" style="font-size:8px;width:100px;text-align:center;"></p>
</div>
<div id="lcdline" class="c_lcdline"></div>
<ul class="level1" id="menucontainer"></ul>
</div>
</div>
</div>
</div>
<div id="content_container">
<div id="content" class="pageview">
<div id="tabloading">
<form class="record_item_edit_form standard_form" id="loading_form">
<div class="edit_form_tab_content_container">
<div class="edit_form_tab_content tab1 active">
<fieldset><div class="loadingIcon" style="width: 100%;"></div></fieldset>
</div>
</div>
</form>
</div>
<div id="tabtarget"></div>
</div>
</div>
<div class="CLEAR"></div>
</div>
</div>
<div class="CLEAR"></div>
</div>
</div>
</div>
<div id="footer_container" style="display: none;">
<div id="footer">
<div id="servicenav_container">
<p id="copyright">
© 2018 <a href="http://www.solar-log.com/">Solare Datensysteme GmbH</a> &nbsp;|&nbsp; <a href="mailto:[email protected]">[email protected]</a>
</p>
<p id="buildrev">Build Revision: <span id="build_revision"></span></p>
<p id="footer_serial" style="display: none;">SN: <span>-</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
<script>function loadScript(file_path,options,callback){function _dom_eval(code){if(code!==undefined&&code.length>0){var _script=document.createElement("script");_script.innerHTML=code;document.head.appendChild(_script).parentNode.removeChild(_script)}if(typeof(callback)==="function"){callback()}}loadFile(file_path,_dom_eval,options)}function loadCSS(file_path,options,callback){function _dom_eval(code){if(code!==undefined&&code.length>0){var _style=document.createElement("style");if(typeof(options)==="object"&&typeof(options.id)==="string"){_style.id=options.id}_style.innerHTML=code;document.head.appendChild(_style)}if(typeof(callback)==="function"){callback()}}loadFile(file_path,_dom_eval,options)}function loadFile(file_path,callback,options){if(typeof(file_path)!=="string"){return}if(typeof(options)!=="object"){options={}}options.data={};if(options.type!=="GET"){options.type="GET"}if(typeof(options.async)!=="boolean"){options.async=true}if(options.cache==="revision"||typeof(options.cache)!=="boolean"){var _regexp=new RegExp(/\?/);file_path+=(_regexp.test(file_path)?"&":"?")+"_="+svn_revision;options.cache=true}options.url=file_path;options.callback=callback;if(window.$===undefined||window.$.ajax===undefined){try{query_via_XHR(options)}catch(e){console.error("error from query_via_XHR: "+e);if(typeof(callback)==="function"){callback()}}}else{options.error=function(){window.clearTimeout(query_timeout);console.error("error loading file "+file_path);if(typeof(options.error)==="boolean"&&options.error){alert('Error loading file "'+options.url+"\"\n\nThe Solar-Log™ doesn't seem to answer\n\n\n\nPlease reload the page.\nIt may also help to clear the browser cache.\nIf the error persists, please contact the support.\nA detailed error description is necessary. This includes:\n* the firmware version of the Solar-Log™\n* the user browser\n* a screenshot of this dialog")}if((typeof(options.stop==="boolean")&&options.stop)){hide_fullsize_loader();document.querySelector(".loadingIcon").remove();document.querySelector(".tab1 fieldset").innerHTML='Error loading file "'+options.url+"\"<br>The Solar-Log™ doesn't seem to answer<br><br>Please reload the page.<br>It may also help to clear the browser cache.<br>If the error persists, please contact the support.<br>A detailed error description is necessary. This includes:<br>* the firmware version of the Solar-Log™<br>* the user browser<br>* a screenshot of this dialog"}else{if(typeof(options.callback)==="function"){options.callback()}}};options.success=function(data){window.clearTimeout(query_timeout);if(typeof(callback)==="function"){callback(data)}};var query_timeout=window.setTimeout(show_timeout_msg,30000);$.ajax(options)}}var _origin_hide;var _origin_show;function query_via_XHR(options){if(typeof(options)!=="object"){throw"invalid options object given"}if(options.method===undefined){options.method="GET"}else{if(typeof(options.method)!=="string"||options.method!=="GET"){throw"invalid method given"}}if(typeof(options.url)!=="string"){throw"invalid url given"}if(typeof(options.async)!=="boolean"){options.async=true}var _regexp=new RegExp(/\?/);if(options.cache===false){options.url+=(_regexp.test(options.url)?"&":"?")+"_="+Date.now()}else{if(options.cache==="revision"){options.url+=(_regexp.test(options.url)?"&":"?")+"_="+svn_revision}}var _contenttype="";if(options.url.search(".html")!==-1){_contenttype="text/html"}else{if(options.url.search(".css")!==-1){_contenttype="text/css"}else{if(options.url.search(".js")!==-1){_contenttype="application/javascript"}else{if(options.url.search(".json")!==-1){_contenttype="application/json"}else{throw"unsupported content-type given ("+options.url+")"}}}}var xmlhttp=new XMLHttpRequest();xmlhttp.open(options.method,options.url,options.async);if(typeof(options.timeout)==="number"){xmlhttp.timeout=options.timeout}xmlhttp.setRequestHeader("Content-Type",_contenttype);xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState===4){window.clearTimeout(query_timeout);if(xmlhttp.status>=200&&xmlhttp.status<400){if(typeof(options.callback)==="function"){options.callback(xmlhttp.responseText)}}else{if(options.method==="GET"){console.error("response error received ("+xmlhttp.status+" - "+options.url+")");if(typeof(options.error)==="boolean"&&options.error){alert('Error loading file "'+options.url+"\"\nThe Solar-Log™ doesn't seem to answer\n\nPlease reload the page.\nIt may also help to clear the browser cache.\nIf the error persists, please contact the support.\nA detailed error description is necessary. This includes:\n* the firmware version of the Solar-Log™\n* the user browser\n* a screenshot of this dialog")}if((typeof(options.stop==="boolean")&&options.stop)){hide_fullsize_loader();document.querySelector(".loadingIcon").remove();document.querySelector(".tab1 fieldset").innerHTML='Error loading file "'+options.url+"\"<br>The Solar-Log™ doesn't seem to answer<br><br>Please reload the page.<br>It may also help to clear the browser cache.<br>If the error persists, please contact the support.<br>A detailed error description is necessary. This includes:<br>* the firmware version of the Solar-Log™<br>* the user browser<br>* a screenshot of this dialog"}else{if(typeof(options.callback)==="function"){options.callback()}}}else{console.error("response error received ("+xmlhttp.status+")");if(typeof(options.error)==="boolean"&&options.error){alert('Error loading file "'+options.url+"\"\nThe Solar-Log™ doesn't seem to answer\n\nPlease reload the page.\nIt may also help to clear the browser cache.\nIf the error persists, please contact the support.\nA detailed error description is necessary. This includes:\n* the firmware version of the Solar-Log™\n* the user browser\n* a screenshot of this dialog")}if((typeof(options.stop==="boolean")&&options.stop)){hide_fullsize_loader();document.querySelector(".loadingIcon").remove();document.querySelector(".tab1 fieldset").innerHTML='Error loading file "'+options.url+"\"<br>The Solar-Log™ doesn't seem to answer<br><br>Please reload the page.<br>It may also help to clear the browser cache.<br>If the error persists, please contact the support.<br>A detailed error description is necessary. This includes:<br>* the firmware version of the Solar-Log™<br>* the user browser<br>* a screenshot of this dialog"}else{if(typeof(options.callback)==="function"){options.callback()}}}}}};var query_timeout=window.setTimeout(show_timeout_msg,30000);xmlhttp.send()}function show_timeout_msg(){if(typeof(SLdialogManager)!=="undefined"){var _txt="";if(typeof(getText)==="function"&&is_lang_initialized()){SLdialogManager.addDialog("js_error",{text:getText("T_SLOW_RESPOND"),important:true,buttons:[{id:"ok",name:getText("L_OK")}]},true).show("js_error")}else{_txt="The Solar-Log™ responds exceptionally slow.<br>Please check the connection to your device.<br><br>This could be normal if you use a bad mobile connection.<br>In this case, you can acknowledge this message and wait until the web interface is completely loaded.";SLdialogManager.addDialog("js_error",{text:_txt,important:true,buttons:[{id:"ok",name:"OK"}]},true).show("js_error")}}else{if(typeof(getText)==="function"&&is_lang_initialized()){alert(getText("T_SLOW_RESPOND").replace(/<br>/g,"\n"))}else{alert("The Solar-Log™ responds exceptionally slow.\nPlease check the connection to your device.\n\nThis could be normal if you use a bad mobile connection.\nIn this case, you can acknowledge this message and wait until the web interface is completely loaded.")}}return false}var svn_revision=Date.now()+"";var files_to_load=[{file:"0/main.css",options:{cache:"revision"}},{file:"_sdsWebIntegrationBeforeJQuery.js",options:{cache:"revision",filter:"web"}},{file:"jquery.jqplot.css",options:{cache:"revision"}},{file:"0/content.css",options:{cache:"revision"}},{file:"icons.css",options:{cache:"revision"}},{file:"compressed.js",options:{cache:"revision",disp_error:true,stop:true}},{file:"jquery-ui.css",options:{cache:"revision"}},{file:"jquery.timepicker.css",options:{cache:"revision"}},{file:"0/web_integration.css",options:{cache:"revision",filter:"web"}},{file:"_sdsWebIntegration.js",options:{cache:"revision",filter:"web"}}];function load_next_file_from_queue(finished_callback){if(files_to_load.length>0){var _next_file=files_to_load.splice(0,1)[0];if(_next_file.options.filter==="web"&&!isPortalMode()){load_next_file_from_queue(finished_callback)}else{if(_next_file.file.search(".css")!==-1){loadCSS(_next_file.file,_next_file.options,load_next_file_from_queue.bind(null,finished_callback))}else{if(_next_file.file.search(".js")!==-1){loadScript(_next_file.file,_next_file.options,load_next_file_from_queue.bind(null,finished_callback))}else{console.error("undefined filetype in files_to_load: "+_next_file.file);load_next_file_from_queue(finished_callback)}}}}else{finished_callback()}}window.onload=function(){checkPortalMode();loadFile("revision.html",function(data){var _rev_elem;if(typeof(data)==="string"){svn_revision=data.split(" ")[0];_rev_elem=document.getElementById("build_revision");if(_rev_elem!==null){_rev_elem.innerHTML=data}}else{_rev_elem=document.getElementById("build_revision");if(_rev_elem!==null){_rev_elem.innerHTML="Error"}}load_next_file_from_queue(function(){if(!isPortalMode()){load_legal_notices(initialize_page)}else{initialize_page()}})},{cache:false})};function initialize_page(){hide_fullsize_loader();install_loginbtn_handler();install_nav_click_handler();install_lang_click_handler();if(getCookie("banner_hidden")==="true"){hideBanner()}else{showBanner()}_origin_hide=$.fn.hide;_origin_show=$.fn.show;$.fn.hide=function(){if($(this).prop("tagName")==="OPTION"){$(this).prop("disabled",true)}return _origin_hide.apply($(this),arguments)};$.fn.show=function(){if($(this).prop("tagName")==="OPTION"){$(this).prop("disabled",false)}return _origin_show.apply($(this),arguments)};TheDisplay=$("#jh_lcd_display3").lcdisplay({background:"rgb(230,230,230)",inactiveColor:"rgb(190,190,190)",activeColor:"rgb(10,10,10)",width:100,item:{easy:false,gprs:false,wifi:false,bat:false,bat1:false,bat2:false,bat3:false,bat4:false,sig:0,t1:false,t2:false,t3:false,t4:false,t5:false,t6:false,t7:false,t8:false,t9:false,t10:false,t11:false,aa:false,ab:false,ac:false,ad:false,ae:false,af:false,ag:false,ah:false,ai:false,aj:false,ak:false,al:false,am:false,an:false,ba:false,bb:false,bc:false,bd:false,be:false,bf:false,bg:false,bh:false,bi:false,bj:false,bk:false,bl:false,bm:false,bn:false}});quManager.add_qu("lcdstate",{parameter:"794:0;701",callback:lcdcallback,global:true,active:false});var params=getURLParameters(this.document.URL);if(params.ilang!==undefined){sdsSetLanguage(params.ilang,updateHWOption.bind(null,continue_initialize_page))}else{updateHWOption(continue_initialize_page)}}function continue_initialize_page(){var params=getURLParameters(this.document.URL);quManager.activate_qu("lcdstate");if(config_assist.is_config_assist_dialog(params.b)){config_assist.continue_config_assist(params.b)}else{if(!EasyDone){nav.jump_to_tab("e_lang")}else{if(EasyRunning){config_assist.continue_config_assist("ca_devices")}else{queryData(true,"801:781;",function(data){if(data!==undefined&&data[801][781]===1){sl_task_active=data[801][781];nav.jump_to_tab("c_system_firmware")}else{if(data!==undefined&&data[801][781]===2){sl_task_active=data[801][781];nav.jump_to_tab("c_devicedetect_detect")}else{if(params.tth!==undefined){tabs_to_hide=params.tth}if(params.b!==undefined){nav.find_alias(params.b,function(result){if(result!==undefined){nav.jump_to_tab(params.b)}else{nav.jump_to_tab("p_live_cockpit")}})}else{nav.jump_to_tab("p_live_cockpit")}}}})}}}lcdtimefunc();window.setTimeout(function(){if(epoch_manager.getState()==="NOT_INITIALIZED"){epoch_manager.loadEpochs()}},20000)}function show_fullsize_loader(){var _elem=document.getElementById("fullsize_loader");if(_elem===null||_elem===undefined){var _container=document.createElement("div");_container.id="fullsize_loader";_container.classList.add("save_layer_container");var _save_layer=document.createElement("div");_save_layer.classList.add("save_layer");_container.appendChild(_save_layer);var _transparent_back=document.createElement("div");_transparent_back.classList.add("transparent_background");_save_layer.appendChild(_transparent_back);var _loading_icon=document.createElement("div");_loading_icon.classList.add("loadingIconFullsize");_save_layer.appendChild(_loading_icon);var _ctx=document.getElementById("full_page_loader");_ctx.appendChild(_container)}}function hide_fullsize_loader(){var _elem=document.getElementById("fullsize_loader");_elem.parentElement.removeChild(_elem)}function isPortalMode(){var params=getURLParameters(this.document.URL);return(params.m==="portal"||window.location!==window.parent.location)}function isPortalSimulationMode(){var params=getURLParameters(this.document.URL);return(params.m==="portal"&&window.location===window.parent.location)}function checkPortalMode(){var item;if(isPortalMode()){item=document.getElementById("body_container");if(item){item.style.padding="0"}item=document.getElementById("body");if(item){item.style.padding="0"}item=document.getElementById("header_body_container");if(item){item.id="header_body_container_web"}item=document.getElementById("lcddiv");if(item){item.classList.remove("c_lcddiv")}item=document.getElementById("jh_lcd_display3");if(item){item.classList.remove("c_lcdcanvas")}}else{item=document.getElementById("page_container");if(item){item.style.display="block"}item=document.getElementById("header_container");if(item){item.style.display="block"}item=document.getElementById("footer_container");if(item){item.style.display="block"}}}function getURLParameters(url){var result={};var searchIndex=url.indexOf("#");if(searchIndex===-1){return result}var sPageURL=url.substring(searchIndex+1);var sURLVariables=sPageURL.split("&");for(var i=0;i<sURLVariables.length;i++){var sParameterName=sURLVariables[i].split("=");result[sParameterName[0]]=sParameterName[1]}return result}function setURLParameter(key,value){var params=getURLParameters(window.location.hash);params[key]=value;var new_hash="";for(var _key in params){new_hash+=new_hash===""?"#":"&";new_hash+=_key+"="+params[_key]}window.location.hash=new_hash}window.onerror=function(msg){if(typeof(SLdialogManager)!=="undefined"&&typeof(getText)==="function"){var _txt=getText("T_JS_ERROR");_txt+="<br><br>"+getText("L_ORIG_ERRDESCR")+":<br>"+msg;SLdialogManager.addDialog("js_error",{title:getText("L_ERROR"),text:_txt,important:true,buttons:[{id:"ok",name:getText("L_OK")}]},true).show("js_error")}else{if(typeof(getText)==="function"){alert(getText("L_ERROR")+":\n\n"+getText("T_JS_ERROR").replace(/<br>/g,"\n")+"\n\n"+getText("L_ORIG_ERRDESCR")+":\n"+msg)}else{alert("Error:\n\nAn error has occurred.\nPlease reload the page.\nIt may also help to clear the browser cache.\nIf the error persists, please contact the support.\nA detailed error description is necessary. This includes:\n* the firmware version of the Solar-Log™\n* the used browser\n* the action, which leads to this issue (was a particular page or function called?)\n* a screenshot of this dialog\n\nOriginal error description:\n"+msg)}}return false};</script>
</body>
</html>

lwag-s avatar Oct 12 '24 12:10 lwag-s

Sorry, I think there was a mistake in the curl-command I copied. Could you please use the below one. curl --header "Content-Type: application/json" --request POST --data '{ "878": None }' http://yoursolarlogip/getjp

dontinelli avatar Oct 12 '24 12:10 dontinelli

Here is the response

{"878":[["01.01.18",33931259,0,0,0,0,0],["01.01.19",42088079,0,0,0,0,0],["01.01.20",563419,0,0,0,0,0],["01.01.21",38392210,0,0,0,0,0],["01.01.22",60447,0,0,0,0,0],["01.01.24",18667387,0,0,0,0,0]]}%

lwag-s avatar Oct 12 '24 12:10 lwag-s

Here is the response

{"878":[["01.01.18",33931259,0,0,0,0,0],["01.01.19",42088079,0,0,0,0,0],["01.01.20",563419,0,0,0,0,0],["01.01.21",38392210,0,0,0,0,0],["01.01.22",60447,0,0,0,0,0],["01.01.24",18667387,0,0,0,0,0]]}%

Ok, seems that the request works but takes longer than expected. Can you indicate how long the request took approx. so that I can increase the timeout accordingly (of course with a bit margin).

dontinelli avatar Oct 12 '24 13:10 dontinelli

I tried it several times, the timeout was between 10-15 seconds. Probabaly my SD card is degraded a bit, the response in the UI is still fine however.

lwag-s avatar Oct 12 '24 15:10 lwag-s

Could you please provide debug log?

Sorry, not possible, as I had to instantly revert back to 9.3 to get my house back into running order...

toyota-axel avatar Oct 12 '24 15:10 toyota-axel

Could you please provide debug log?

Sorry, not possible, as I had to instantly revert back to 9.3 to get my house back into running order...

Understood. Could you also try the curl-command and confirm it works for you as well and indicate the (approximate) time to the response?

dontinelli avatar Oct 12 '24 18:10 dontinelli

I tried it several times, the timeout was between 10-15 seconds. Probabaly my SD card is degraded a bit, the response in the UI is still fine however.

Currently the timeout is set to 10 seconds. Unless @toyota-axel would suggest otherwise, I would increase it to 30 seconds for the time being.

dontinelli avatar Oct 12 '24 19:10 dontinelli

Sorry, I think there was a mistake in the curl-command I copied. Could you please use the below one. curl --header "Content-Type: application/json" --request POST --data '{ "878": None }' http://yoursolarlogip/getjp

Here is the response: {"878":"QUERY IMPOSSIBLE 000"}

As the SolarLOG integration did and still does work in 9.3, what was changed and on top of that - why?

toyota-axel avatar Oct 13 '24 08:10 toyota-axel

As the SolarLOG integration did and still does work in 9.3, what was changed and on top of that - why?

In the update several additional features were included, in particular the possibility to authenticate with password (so that you do not have to enable the open JSON API anymore), additional data points from the SolarLog (in particular self consumption) and finally new devices for inverters and other devices connected to your SolarLog (currently there is one entity for power and energy for each additional device (see for more details the documentation ). I for example have my heatpump attached to the SolarLog and can now add this as separate device in the energy dashboard. As the SolarLog provides additional data points, it may be extended in the future (e.g. to get status/last error of attached devices).

dontinelli avatar Oct 13 '24 12:10 dontinelli

Ok, thank you. Let's see if 10.3 will work here! Apart from that I'm trying to get rif of the SolarLOG entirely and manage the units directly but, that's a different story...

toyota-axel avatar Oct 13 '24 14:10 toyota-axel

@toyota-axel: can you confirm if the issue has been resolved as expected?

dontinelli avatar Oct 21 '24 15:10 dontinelli