HTML-parce to SQL Flow optimization

Hello there,

I have a flow to read values from my Heating-Systems Web-UI an puts the data into an SQL-DB. The Flow is working quite well, but it looks somehow complex and not easy to maintain or extend.

The current Flow looks like:

[
    {
        "id": "7e55d0324dd88ad2",
        "type": "tab",
        "label": "LWZ8_demo",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "c42ac73334295e3e",
        "type": "http request",
        "z": "7e55d0324dd88ad2",
        "name": "LWZ",
        "method": "GET",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "1.2.3.5/?s=1,0",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 130,
        "y": 140,
        "wires": [
            [
                "98a4e947e9cb0deb"
            ]
        ]
    },
    {
        "id": "19f75c83a6346f27",
        "type": "inject",
        "z": "7e55d0324dd88ad2",
        "name": "60 sec",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "60",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 110,
        "y": 80,
        "wires": [
            [
                "c42ac73334295e3e"
            ]
        ]
    },
    {
        "id": "8a2baf53a4617165",
        "type": "debug",
        "z": "7e55d0324dd88ad2",
        "name": "debug 3",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 340,
        "y": 260,
        "wires": []
    },
    {
        "id": "98a4e947e9cb0deb",
        "type": "html",
        "z": "7e55d0324dd88ad2",
        "name": "",
        "property": "payload",
        "outproperty": "payload",
        "tag": "form",
        "ret": "html",
        "as": "multi",
        "x": 130,
        "y": 200,
        "wires": [
            [
                "a7b95e20be8a62bb"
            ]
        ]
    },
    {
        "id": "a7b95e20be8a62bb",
        "type": "html",
        "z": "7e55d0324dd88ad2",
        "name": "",
        "property": "payload",
        "outproperty": "payload",
        "tag": "tr td",
        "ret": "text",
        "as": "single",
        "x": 130,
        "y": 260,
        "wires": [
            [
                "8a2baf53a4617165",
                "fa7e6986e291772e"
            ]
        ]
    },
    {
        "id": "f89b766ced76cebf",
        "type": "debug",
        "z": "7e55d0324dd88ad2",
        "name": "debug 4",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 540,
        "y": 80,
        "wires": []
    },
    {
        "id": "fa7e6986e291772e",
        "type": "function",
        "z": "7e55d0324dd88ad2",
        "name": "parse http",
        "func": "\n\nvar raumIstTempHK1 = parseInt(msg.payload[1].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar raumSollTempHK1 = parseInt(msg.payload[3].replace(/([^A-Z0-9]+)/gi, '')) / 10;\nvar raumHumHK1 = parseInt(msg.payload[5].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar raumIstTempHK2 = parseInt(msg.payload[7].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar raumSollTempHK2 = parseInt(msg.payload[9].replace(/([^A-Z0-9]+)/gi, '')) / 10;\nvar raumHumHK2 = parseInt(msg.payload[11].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar aussenTemp = parseInt(msg.payload[13].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar istWertHK1 = parseInt(msg.payload[15].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar sollWertHK1 = parseInt(msg.payload[17].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar vorlaufTemp = parseInt(msg.payload[23].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar ruecklaufTemp = parseInt(msg.payload[25].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar druckHK = parseInt(msg.payload[27].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar volumenHK = parseInt(msg.payload[29].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar warmWasserIstTemp = parseInt(msg.payload[31].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar warmWasserSollTemp = parseInt(msg.payload[33].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar zuLuftIst = parseInt(msg.payload[35].replace(/([^a-z0-9]+)/gi, ''));\nvar zuLuftSoll = parseInt(msg.payload[37].replace(/([^a-z0-9]+)/gi, ''));\nvar abLuftIst = parseInt(msg.payload[39].replace(/([^a-z0-9]+)/gi, ''));\nvar abLuftSoll = parseInt(msg.payload[41].replace(/([^a-z0-9]+)/gi, ''));\nvar abLuftHum = parseInt(msg.payload[43].replace(/([^a-z0-9]+)/gi, ''));\nvar abLuftTemp = parseInt(msg.payload[45].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar abLuftDew = parseInt(msg.payload[47].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar diffDruck = parseInt(msg.payload[49].replace(/([^a-z0-9]+)/gi, ''));\nvar dewPointHK1 = parseInt(msg.payload[51].replace(/([^a-z0-9]+)/gi, '')) / 10;\nvar heizStufe = parseInt(msg.payload[55].replace(/([^a-z0-9]+)/gi, ''));\n\n\nif (Number.isNaN(raumIstTempHK1) === true) {\n    raumIstTempHK1 = 0;\n}\nif (Number.isNaN(raumSollTempHK1) === true) {\n    raumSollTempHK1 = 0;\n}\nif (Number.isNaN(raumHumHK1) === true) {\n    raumHumHK1 = 0;\n}\nif (Number.isNaN(raumIstTempHK2) === true) {\n    raumIstTempHK2 = 0;\n}\nif (Number.isNaN(raumSollTempHK2) === true) {\n    raumSollTempHK2 = 0;\n}\nif (Number.isNaN(raumHumHK2) === true) {\n    raumHumHK2 = 0;\n}\nif (Number.isNaN(aussenTemp) === true) {\n    aussenTemp = 0;\n}\nif (Number.isNaN(istWertHK1) === true) {\n    istWertHK1 = 0;\n}\nif (Number.isNaN(sollWertHK1) === true) {\n    sollWertHK1 = 0;\n}\nif (Number.isNaN(vorlaufTemp) === true) {\n    vorlaufTemp = 0;\n}\nif (Number.isNaN(ruecklaufTemp) === true) {\n    ruecklaufTemp = 0;\n}\nif (Number.isNaN(druckHK) === true) {\n    druckHK = 0;\n}\nif (Number.isNaN(volumenHK) === true) {\n    volumenHK = 0;\n}\nif (Number.isNaN(warmWasserIstTemp) === true) {\n    warmWasserIstTemp = 0;\n}\nif (Number.isNaN(warmWasserSollTemp) === true) {\n    warmWasserSollTemp = 0;\n}\nif (Number.isNaN(zuLuftIst) === true) {\n    zuLuftIst = 0;\n}\nif (Number.isNaN(zuLuftSoll) === true) {\n    zuLuftSoll = 0;\n}\nif (Number.isNaN(abLuftIst) === true) {\n    abLuftIst = 0;\n}\nif (Number.isNaN(abLuftHum) === true) {\n    abLuftHum = 0;\n}\nif (Number.isNaN(abLuftTemp) === true) {\n    abLuftTemp = 0;\n}\nif (Number.isNaN(diffDruck) === true) {\n    diffDruck = 0;\n}\nif (Number.isNaN(dewPointHK1) === true) {\n    dewPointHK1 = 0;\n}\nif (Number.isNaN(heizStufe) === true) {\n    heizStufe = 0;\n}\n\n\nmsg.payload = {\n    \"raumIstTempHK1\": raumIstTempHK1,\n    \"raumSollTempHK1\": raumSollTempHK1,\n    \"raumHumHK1\": raumHumHK1,\n    \"raumIstTempHK2\": raumIstTempHK2,\n    \"raumSollTempHK2\": raumSollTempHK2,\n    \"raumHumHK2\": raumHumHK2,\n    \"aussenTemp\": aussenTemp,\n    \"istWertHK1\": istWertHK1,\n    \"sollWertHK1\": sollWertHK1,\n    \"vorlaufTemp\": vorlaufTemp,\n    \"ruecklaufTemp\": ruecklaufTemp,\n    \"druckHK\": druckHK,\n    \"volumenHK\": volumenHK,\n    \"warmWasserIstTemp\": warmWasserIstTemp,\n    \"warmWasserSollTemp\": warmWasserSollTemp,\n    \"zuLuftIst\": zuLuftIst,\n    \"zuLuftSoll\": zuLuftSoll,\n    \"abLuftIst\": abLuftIst,\n    \"abLuftSoll\": abLuftSoll,\n    \"abLuftHum\": abLuftHum,\n    \"abLuftTemp\": abLuftTemp,\n    \"diffDruck\": diffDruck,\n    \"dewPointHK1\": dewPointHK1,\n    \"heizStufe\": heizStufe\n}\n\nglobal.set(\"LWZ8\", msg.payload);\n\n//msg.topic = \"INSERT INTO \";\n//msg.topic += \"LWZ8data (`raumIstTempHK1`, `raumSollTempHK1`) \";\n//msg.topic += \"VALUES (:raumIstTempHK1, :raumSollTempHK1) ;\";\n\nreturn msg;\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 340,
        "y": 80,
        "wires": [
            [
                "f89b766ced76cebf",
                "a907ae44178c34b5"
            ]
        ]
    },
    {
        "id": "754cfb58fe23aa95",
        "type": "mysql",
        "z": "7e55d0324dd88ad2",
        "mydb": "bad9129a2fbd0408",
        "name": "",
        "x": 370,
        "y": 200,
        "wires": [
            [
                "c50df9b4bb49c229"
            ]
        ]
    },
    {
        "id": "c50df9b4bb49c229",
        "type": "debug",
        "z": "7e55d0324dd88ad2",
        "name": "debug 7",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 540,
        "y": 200,
        "wires": []
    },
    {
        "id": "a907ae44178c34b5",
        "type": "function",
        "z": "7e55d0324dd88ad2",
        "name": "Add SQL-Query",
        "func": "\n/* msg.payload = {\n    \"raumIstTempHK1\": raumIstTempHK1,\n    \"raumSollTempHK1\": raumSollTempHK1,\n    \"raumHumHK1\": raumHumHK1,\n    \"raumIstTempHK2\": raumIstTempHK2,\n    \"raumSollTempHK2\": raumSollTempHK2,\n    \"raumHumHK2\": raumHumHK2,\n    \"aussenTemp\": aussenTemp,\n    \"istWertHK1\": istWertHK1,\n    \"sollWertHK1\": sollWertHK1,\n    \"vorlaufTemp\": vorlaufTemp,\n    \"ruecklaufTemp\": ruecklaufTemp,\n    \"druckHK\": druckHK,\n    \"volumenHK\": volumenHK,\n    \"warmWasserIstTemp\": warmWasserIstTemp,\n    \"warmWasserSollTemp\": warmWasserSollTemp,\n    \"zuLuftIst\": zuLuftIst,\n    \"zuLuftSoll\": zuLuftSoll,\n    \"abLuftIst\": abLuftIst,\n    \"abLuftSoll\": abLuftSoll,\n    \"abLuftHum\": abLuftHum,\n    \"abLuftTemp\": abLuftTemp,\n    \"diffDruck\": diffDruck,\n    \"dewPointHK1\": dewPointHK1,\n    \"heizStufe\": heizStufe\n}*/\n\nmsg.topic = \"INSERT INTO \";\nmsg.topic += \"LWZ8data (`raumIstTempHK1`, `raumSollTempHK1`, `raumHumHK1`, `raumIstTempHK2`, `raumSollTempHK2`, `raumHumHK2`, `aussenTemp`, `istWertHK1`, `sollWertHK1`, `vorlaufTemp`, `ruecklaufTemp`, `druckHK`, `volumenHK`, `warmWasserIstTemp`, `warmWasserSollTemp`, `zuLuftIst`, `zuLuftSoll`, `abLuftIst`, `abLuftSoll`, `abLuftHum`, `abLuftTemp`, `diffDruck`, `dewPointHK1`, `heizStufe`) \";\nmsg.topic += \"VALUES (:raumIstTempHK1, :raumSollTempHK1, :raumHumHK1, :raumIstTempHK2, :raumSollTempHK2, :raumHumHK2, :aussenTemp, :istWertHK1, :sollWertHK1, :vorlaufTemp, :ruecklaufTemp, :druckHK, :volumenHK, :warmWasserIstTemp, :warmWasserSollTemp, :zuLuftIst, :zuLuftSoll, :abLuftIst, :abLuftSoll, :abLuftHum, :abLuftTemp, :diffDruck, :dewPointHK1, :heizStufe) ;\";\n\nreturn msg;\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 360,
        "y": 140,
        "wires": [
            [
                "754cfb58fe23aa95"
            ]
        ]
    },
    {
        "id": "13541ad04c954189",
        "type": "debug",
        "z": "7e55d0324dd88ad2",
        "name": "debug 26",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1230,
        "y": 740,
        "wires": []
    },
    {
        "id": "bad9129a2fbd0408",
        "type": "MyDB",
        "name": "",
        "host": "1.2.3.4",
        "port": "3306",
        "db": "MyDB",
        "tz": "",
        "charset": "UTF8"
    }
]

What I've implemented so far is mainly the first page of the WEB-UI several more left...
HTML-parcing is not the main issue, but extending the SQL-Query manually is quite annoying, as well as extending the DB.

If someone is willing to help me improve the concept any advice is highly appreciated. :slightly_smiling_face:

Best Regards
Michael

If you can supply the output of the http request node, i will be happy to take a look.

Hi E1cid,

welcome on board.

here is a sample HTML page

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
	<title>STIEBEL ELTRON Reglersteuerung</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="imagetoolbar" content="no" />
	<meta name="content-language" content="de" />
	<meta name="robots" content="noindex,nofollow" />
	<meta name="keywords" content="" />
	<meta name="description" content="" />
  
  <link rel="shortcut icon" href="./pics/brlogo.ico">
  <!-- does not exist link rel="stylesheet" href="./css/netzwerk.css" type="text/css" media="all" /-->
  <link rel="stylesheet" type="text/css" href="./css/slider/ste_slider.css" />	
	<!-- Blueprint CSS framework -->
	<link rel="stylesheet" href="./css/blueprint/screen.css" type="text/css" media="screen, projection" />
	<link rel="stylesheet" href="./css/blueprint/print.css" type="text/css" media="print" />	
	<!--[if lt IE 8]><link rel="stylesheet" href="./css/blueprint/ie.css" type="text/css" media="screen, projection" /><![endif]-->
	
	<link rel="stylesheet" href="./css/layout.css" type="text/css" media="all" />
  	
	<link rel="stylesheet" href="./css/sifr.css" type="text/css" media="all" />
	<link rel="stylesheet" href="./css/thickbox.css" type="text/css" media="all" />
	
	<link rel="stylesheet" type="text/css" href="./css/jquery.jqplot.min.css" />
	
	  
  	
	<script type="text/javascript" src="./js/jquery.min.js"></script>
	<script type="text/javascript" src="./js/thickbox.js"></script>
	<script type="text/javascript" src="./js/sifr.js"></script>
	<script type="text/javascript" src="./js/sifr_sw.js"></script>
	<script type="text/javascript" src="./js/scripts.js"></script>
  <script type="text/javascript" src="./js/json2.js"></script>
  <script type="text/javascript" src="./js/plugins/jquery-ui-1.8.6.custom.min.js"></script>
    <script type="text/javascript" src="./js/setDNS1.js"></script>

	<!-- [if IE] -->
	<script language="javascript" type="text/javascript" src="./js/excanvas.min.js"></script>
	<!-- [endif] -->

	<!-- for dateAxisRenderer.js -->
	<script language="javascript" type="text/javascript" src="./js/plugins/Date.min.js"></script>
	<!-- BEGIN: load jqplot -->
	<script language="javascript" type="text/javascript" src="./js/jquery.jqplot.min.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.dateAxisRenderer.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.barRenderer.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.categoryAxisRenderer.js"></script>
	<!-- END: load jqplot -->
  
  <!-- BEGIN: load slider -->
	<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.core.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.widget.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.mouse.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.slider.js"></script>
	<!-- END: load slider -->
  
    
  <!-- BEGIN: Uhrzeit -->
  <script language="javascript" type="text/javascript">
var timestampunterschied = 1681753922 * 1000 - new Date().getTime();
</script>
<script src="./js/uhrzeit.js" type="text/javascript" language="javascript"></script>
  <!-- END:  Uhrzeit -->
  
</head>
<body>
<div id="header">
	<div class="head curdef">
		<div id="meta">
			<div id="login">
      			</div>
		</div>
    <div class="eingestelle_sprache"><strong><a href="?s=5,3" style="color:white">DEUTSCH</a></strong></div>
    <div id="Uhrzeit"></div>
		<div class="title">
      <a href="." onclick="return checkChanges(this);" title="zur Startseite">
        <img src="./pics/title.png" alt="Servicewelt" />
		
      </a>
            <div style="position: relative; color: #97B765; font-weight: 900; margin: 18px 0px 0px 323px;"></div>
          </div>
		<div class="logo"><a href="." onclick="return checkChanges(this);" title="zur Startseite" class="home_link">&nbsp;</a></div>
	</div>
</div>


<div class="container" id="page">
  <div id="main" >
  <div id="SpacerFirefox"></div>
    <div id="nav">
      <div class="clear"></div>
            <div class="nav left defaultfirst">
        <div class="l left">&nbsp;</div>
        <div class="c left link1">
          <a onclick="return checkChanges(this);" href="?s=0">START</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link2">
          <a >INFO</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=1,0">ANLAGE</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=1,1">WÄRMEPUMPE</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=1,2">LIZENZBESTIMMUNGEN</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=1,3">NUTZUNGS- UND DATENSCHUTZRICHTLINIE</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=1,4">BEDIENUNG UND INSTALLATION</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link3">
          <a >DIAGNOSE</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=2,0">STATUS</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=2,1">INBETRIEBNAHME</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=2,2">FEHLERLISTE</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=2,3">FACHMANN</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link4">
          <a >PROGRAMME</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=3,0">HEIZPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,1">WARMWASSERPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,2">LÜFTERPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,3">PARTYPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,4">FERIENPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,5">KÜHLZEIT</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,6">ANTILEGIONELLENZEIT</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,8">GRUNDEINSTELLUNG</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link5">
          <a >EINSTELLUNGEN</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=4,0">HEIZEN</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,1">WARMWASSER</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,2">LÜFTEN</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,3">KÜHLEN</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,4">SOLAR</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,5">ENERGIEMANAGEMENT</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,6">ZEIT/DATUM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,7">INBETRIEBNAHME</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left defaultlast parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link6">
          <a >Profil</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second last">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=5,0">Netzwerk</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=5,1">Sicherheit</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=5,2">Anlagenbild</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=5,3">SPRACHE</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="clear"></div>
    </div>
        <div id="sub_nav" class="span-24"><div class="left main sifr span-9" style="width: 45%">ANLAGE</div>
<div class="span-15 last">
</div>
<div class="clear"></div></div>
        <form id="werte" action="#" onsubmit="saveValues(this);return false;"><div id="content">
    <div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">RAUMTEMPERATUR</th></tr>  <tr class="even">
    <td class="key">RAUMISTTEMP. HK1</td>
    <td class="value">21,6°C</td>
  </tr>
  <tr class="odd">
    <td class="key">RAUMSOLLTEMP. HK1</td>
    <td class="value">21,5°C</td>
  </tr>
  <tr class="even">
    <td class="key">RAUMFEUCHTE HK1</td>
    <td class="value">42,9%</td>
  </tr>
  <tr class="odd">
    <td class="key">RAUMISTTEMP. HK2</td>
    <td class="value">10,0°C</td>
  </tr>
  <tr class="even">
    <td class="key">RAUMSOLLTEMP. HK2</td>
    <td class="value">10,0°C</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">RAUMFEUCHTE HK2</td>
    <td class="value round-rightbottom">0,0%</td>
  </tr>
</table></div><div class="span-11 prepend-1" style="float:right"><table class="info"><tr><th colspan="2" class="round-top">HEIZEN</th></tr>  <tr class="even">
    <td class="key">AUSSENTEMPERATUR</td>
    <td class="value">11,8°C</td>
  </tr>
  <tr class="odd">
    <td class="key">ISTWERT HK1</td>
    <td class="value">24,0°C</td>
  </tr>
  <tr class="even">
    <td class="key">SOLLWERT HK1</td>
    <td class="value">26,0°C</td>
  </tr>
  <tr class="odd">
    <td class="key">ISTWERT HK2</td>
    <td class="value">24,5°C</td>
  </tr>
  <tr class="even">
    <td class="key">SOLLWERT HK2</td>
    <td class="value">12,2°C</td>
  </tr>
  <tr class="odd">
    <td class="key">VORLAUFTEMP.</td>
    <td class="value">23,7°C</td>
  </tr>
  <tr class="even">
    <td class="key">RÜCKLAUFTEMP.</td>
    <td class="value">24,5°C</td>
  </tr>
  <tr class="odd">
    <td class="key">DRUCK HEIZKREIS</td>
    <td class="value">1,5bar</td>
  </tr>
  <tr class="even">
    <td class="key round-leftbottom">VOLUMENSTROM</td>
    <td class="value round-rightbottom">11,5l/min</td>
  </tr>
</table></div><div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">WARMWASSER</th></tr>  <tr class="even">
    <td class="key">WW-ISTTEMP.</td>
    <td class="value">47,2°C</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">WW-SOLLTEMP.</td>
    <td class="value round-rightbottom">45,0°C</td>
  </tr>
</table></div><div class="span-11 prepend-1" style="float:right"><table class="info"><tr><th colspan="2" class="round-top">LÜFTEN</th></tr>  <tr class="even">
    <td class="key">ZULUFT IST LÜFTERDREHZAHL</td>
    <td class="value">31Hz</td>
  </tr>
  <tr class="odd">
    <td class="key">ZULUFT SOLL VOLUMENSTROM</td>
    <td class="value">245m³/h</td>
  </tr>
  <tr class="even">
    <td class="key">ABLUFT IST LÜFTERDREHZAHL</td>
    <td class="value">34Hz</td>
  </tr>
  <tr class="odd">
    <td class="key">ABLUFT SOLL VOLUMENSTROM</td>
    <td class="value">233m³/h</td>
  </tr>
  <tr class="even">
    <td class="key">ABLUFTFEUCHTE</td>
    <td class="value">42%</td>
  </tr>
  <tr class="odd">
    <td class="key">ABLUFTTEMPERATUR</td>
    <td class="value">23,9°C</td>
  </tr>
  <tr class="even">
    <td class="key">ABLUFTTAUPUNKT</td>
    <td class="value">10,2°C</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">Differenzdruck</td>
    <td class="value round-rightbottom">95Pa</td>
  </tr>
</table></div><div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">KÜHLEN</th></tr>  <tr class="even">
    <td class="key">TAUPUNKTTEMPERATUR HK1</td>
    <td class="value">8,4°C</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">TAUPUNKTTEMPERATUR HK2</td>
    <td class="value round-rightbottom">0,0°C</td>
  </tr>
</table></div><div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">WÄRMEERZEUGER</th></tr>  <tr class="even">
    <td class="key round-leftbottom">HEIZSTUFE</td>
    <td class="value round-rightbottom">1</td>
  </tr>
</table></div><div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">ENERGIEMANAGEMENT</th></tr>  <tr class="even">
    <td class="key">Deaktiviert</td>
    <td class="value"><img height="15" src="./pics/ste-symbol_an-97b765.png" /></td>
  </tr>
</table></div><div class="span-24">&nbsp;</div>
    </div>  </form></div>
</div>
</div>
</div>
<div id="footer">
	<!--[if IE]>
	<style type="text/css">
	#footer
{
		
		height:260px;
}
	#versionsNummer
	{
		position:relative;
		top:-33px;
	}
	</style>

     	<![endif]-->
	<div class="span-24 last footer_middle curdef">
	
		<div class="span-8 prepend-top" style="height:145px">
						<div class="span-3">
			
				<img src="./pics/ste_footer_website.png" />
			</div>
			<div class="span-5 last">
				<p>
				
          					Weitere Informationen zu unserem Produktprogramm und aktuelle Serviceangebote finden Sie unter					<a href="http://www.stiebel-eltron.de" target="_blank" class="extern">www.stiebel-eltron.de</a>
				</p>
			</div>
					</div>
	  
    		<div class="bordered span-1"></div>
		<div class="span-6 prepend-top">
			<div class="span-2">
			  <img src="./pics/footer_tel.png" />
			</div>
			<div class="span-4 last">
				<p>
					Unsere Service-Hotline erreichen Sie unter<br /><span class="big">05531 702-111</span>
				</p>
			</div>
	  </div>
    		<div class="bordered span-1"></div>
		<div class="span-7 prepend-top last">
			<p>
				Das Neueste rund um die Servicewelt				<br /><a href="http://www.stiebel-eltron.de/erneuerbare-energien/kundenservice/servicewelt/isg/" target="_blank" class="extern">servicewelt</a>
			</p>
	  </div>
    
	</div>
  <div class="links span-23 prepend-top append-1 last footer_middle">
    <div class="span-17">
        		<a class="intern" href="?forcepage=dsgvo" onclick="return checkChanges(this);">Datenschutz</a>
				
		<a href="http://www.stiebel-eltron.de/de/info/impressum.html">Impressum</a>
      &nbsp;
      <p style="margin-top:8px" class="right" id="versionsNummer">v12.2.1</p>
    </div>
  	<div class="copyright span-6 last curdef">
  		&copy; STIEBEL ELTRON 2023  	</div>
  </div>
</div>
</body>
</html>

PS: I have to split the post due to character limitation...

Here's another example of the next page

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
	<title>STIEBEL ELTRON Reglersteuerung</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="imagetoolbar" content="no" />
	<meta name="content-language" content="de" />
	<meta name="robots" content="noindex,nofollow" />
	<meta name="keywords" content="" />
	<meta name="description" content="" />
  
  <link rel="shortcut icon" href="./pics/brlogo.ico">
  <!-- does not exist link rel="stylesheet" href="./css/netzwerk.css" type="text/css" media="all" /-->
  <link rel="stylesheet" type="text/css" href="./css/slider/ste_slider.css" />	
	<!-- Blueprint CSS framework -->
	<link rel="stylesheet" href="./css/blueprint/screen.css" type="text/css" media="screen, projection" />
	<link rel="stylesheet" href="./css/blueprint/print.css" type="text/css" media="print" />	
	<!--[if lt IE 8]><link rel="stylesheet" href="./css/blueprint/ie.css" type="text/css" media="screen, projection" /><![endif]-->
	
	<link rel="stylesheet" href="./css/layout.css" type="text/css" media="all" />
  	
	<link rel="stylesheet" href="./css/sifr.css" type="text/css" media="all" />
	<link rel="stylesheet" href="./css/thickbox.css" type="text/css" media="all" />
	
	<link rel="stylesheet" type="text/css" href="./css/jquery.jqplot.min.css" />
	
	  
  	
	<script type="text/javascript" src="./js/jquery.min.js"></script>
	<script type="text/javascript" src="./js/thickbox.js"></script>
	<script type="text/javascript" src="./js/sifr.js"></script>
	<script type="text/javascript" src="./js/sifr_sw.js"></script>
	<script type="text/javascript" src="./js/scripts.js"></script>
  <script type="text/javascript" src="./js/json2.js"></script>
  <script type="text/javascript" src="./js/plugins/jquery-ui-1.8.6.custom.min.js"></script>
    <script type="text/javascript" src="./js/setDNS1.js"></script>

	<!-- [if IE] -->
	<script language="javascript" type="text/javascript" src="./js/excanvas.min.js"></script>
	<!-- [endif] -->

	<!-- for dateAxisRenderer.js -->
	<script language="javascript" type="text/javascript" src="./js/plugins/Date.min.js"></script>
	<!-- BEGIN: load jqplot -->
	<script language="javascript" type="text/javascript" src="./js/jquery.jqplot.min.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.dateAxisRenderer.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.barRenderer.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.categoryAxisRenderer.js"></script>
	<!-- END: load jqplot -->
  
  <!-- BEGIN: load slider -->
	<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.core.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.widget.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.mouse.js"></script>
	<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.slider.js"></script>
	<!-- END: load slider -->
  
    
  <!-- BEGIN: Uhrzeit -->
  <script language="javascript" type="text/javascript">
var timestampunterschied = 1681754008 * 1000 - new Date().getTime();
</script>
<script src="./js/uhrzeit.js" type="text/javascript" language="javascript"></script>
  <!-- END:  Uhrzeit -->
  
</head>
<body>
<div id="header">
	<div class="head curdef">
		<div id="meta">
			<div id="login">
      			</div>
		</div>
    <div class="eingestelle_sprache"><strong><a href="?s=5,3" style="color:white">DEUTSCH</a></strong></div>
    <div id="Uhrzeit"></div>
		<div class="title">
      <a href="." onclick="return checkChanges(this);" title="zur Startseite">
        <img src="./pics/title.png" alt="Servicewelt" />
		
      </a>
            <div style="position: relative; color: #97B765; font-weight: 900; margin: 18px 0px 0px 323px;"></div>
          </div>
		<div class="logo"><a href="." onclick="return checkChanges(this);" title="zur Startseite" class="home_link">&nbsp;</a></div>
	</div>
</div>


<div class="container" id="page">
  <div id="main" >
  <div id="SpacerFirefox"></div>
    <div id="nav">
      <div class="clear"></div>
            <div class="nav left defaultfirst">
        <div class="l left">&nbsp;</div>
        <div class="c left link1">
          <a onclick="return checkChanges(this);" href="?s=0">START</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link2">
          <a >INFO</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=1,0">ANLAGE</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=1,1">WÄRMEPUMPE</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=1,2">LIZENZBESTIMMUNGEN</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=1,3">NUTZUNGS- UND DATENSCHUTZRICHTLINIE</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=1,4">BEDIENUNG UND INSTALLATION</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link3">
          <a >DIAGNOSE</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=2,0">STATUS</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=2,1">INBETRIEBNAHME</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=2,2">FEHLERLISTE</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=2,3">FACHMANN</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link4">
          <a >PROGRAMME</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=3,0">HEIZPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,1">WARMWASSERPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,2">LÜFTERPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,3">PARTYPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,4">FERIENPROGRAMM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,5">KÜHLZEIT</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,6">ANTILEGIONELLENZEIT</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=3,8">GRUNDEINSTELLUNG</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link5">
          <a >EINSTELLUNGEN</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=4,0">HEIZEN</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,1">WARMWASSER</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,2">LÜFTEN</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,3">KÜHLEN</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,4">SOLAR</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,5">ENERGIEMANAGEMENT</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,6">ZEIT/DATUM</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=4,7">INBETRIEBNAHME</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left defaultlast parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link6">
          <a >Profil</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second last">
                        <li>
			  <a onclick="return checkChanges(this);" href="?s=5,0">Netzwerk</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=5,1">Sicherheit</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=5,2">Anlagenbild</a>
    			    
            </li>
                      <li>
			  <a onclick="return checkChanges(this);" href="?s=5,3">SPRACHE</a>
    			    
            </li>
                    </ul>
        </div>
              </div>
            <div class="clear"></div>
    </div>
        <div id="sub_nav" class="span-24"><div class="left main sifr span-9" style="width: 45%">WÄRMEPUMPE</div>
<div class="span-15 last">
</div>
<div class="clear"></div></div>
        <form id="werte" action="#" onsubmit="saveValues(this);return false;"><div id="content">
    <div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">PROZESSWERTE</th></tr>  <tr class="even">
    <td class="key">HEISSGASTEMP.</td>
    <td class="value">24,1°C</td>
  </tr>
  <tr class="odd">
    <td class="key">HOCHDRUCK</td>
    <td class="value">16,17bar</td>
  </tr>
  <tr class="even">
    <td class="key">NIEDERDRUCK</td>
    <td class="value">11,86bar </td>
  </tr>
  <tr class="odd">
    <td class="key">VERDAMPFERTEMP.</td>
    <td class="value">23,8°C</td>
  </tr>
  <tr class="even">
    <td class="key">VERFLÜSSIGERTEMP.</td>
    <td class="value">24,9°C</td>
  </tr>
  <tr class="odd">
    <td class="key">OELSUMPFTEMP</td>
    <td class="value">30,7°C</td>
  </tr>
  <tr class="even">
    <td class="key">FORTLUFT IST LÜFTERDREHZAHL</td>
    <td class="value">0Hz</td>
  </tr>
  <tr class="odd">
    <td class="key">FORTLUFT SOLL VOLUMENSTROM</td>
    <td class="value">0%</td>
  </tr>
  <tr class="even">
    <td class="key">DIFF.-DRUCK VERDAMPF</td>
    <td class="value">1Pa</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">VERDICHTERSTARTS</td>
    <td class="value round-rightbottom">6488</td>
  </tr>
</table></div><div class="span-11 prepend-1" style="float:right"><table class="info"><tr><th colspan="2" class="round-top">WÄRMEMENGE</th></tr>  <tr class="even">
    <td class="key">WM HEIZEN TAG</td>
    <td class="value">15,613kWh</td>
  </tr>
  <tr class="odd">
    <td class="key">WM HEIZEN SUMME</td>
    <td class="value">8,069MWh</td>
  </tr>
  <tr class="even">
    <td class="key">WM WW TAG</td>
    <td class="value">1,940kWh</td>
  </tr>
  <tr class="odd">
    <td class="key">WM WW SUMME</td>
    <td class="value">1,540MWh</td>
  </tr>
  <tr class="even">
    <td class="key">WM NE HEIZEN SUMME</td>
    <td class="value">1,599MWh</td>
  </tr>
  <tr class="odd">
    <td class="key">WM NE WW SUMME</td>
    <td class="value">0,025MWh</td>
  </tr>
  <tr class="even">
    <td class="key">WM WRG TAG</td>
    <td class="value">15,327kWh</td>
  </tr>
  <tr class="odd">
    <td class="key">WM WRG SUMME</td>
    <td class="value">4,764MWh</td>
  </tr>
  <tr class="even">
    <td class="key">WM SOLAR HZ TAG</td>
    <td class="value">0,000kWh</td>
  </tr>
  <tr class="odd">
    <td class="key">WM SOLAR HZ SUMME</td>
    <td class="value">0,000MWh</td>
  </tr>
  <tr class="even">
    <td class="key">WM SOLAR WW TAG</td>
    <td class="value">0,000kWh</td>
  </tr>
  <tr class="odd">
    <td class="key">WM SOLAR WW SUMME</td>
    <td class="value">0,000MWh</td>
  </tr>
  <tr class="even">
    <td class="key round-leftbottom">WM KÜHLEN SUMME</td>
    <td class="value round-rightbottom">0,733MWh</td>
  </tr>
</table></div><div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">LEISTUNGSAUFNAHME</th></tr>  <tr class="even">
    <td class="key">P HEIZUNG TAG</td>
    <td class="value">3,122kWh</td>
  </tr>
  <tr class="odd">
    <td class="key">P HEIZUNG SUMME</td>
    <td class="value">2,040MWh</td>
  </tr>
  <tr class="even">
    <td class="key">P WW TAG</td>
    <td class="value">1,585kWh</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">P WW SUMME</td>
    <td class="value round-rightbottom">0,532MWh</td>
  </tr>
</table></div><div class="span-11 prepend-1" style="float:right"><table class="info"><tr><th colspan="2" class="round-top">LAUFZEITEN</th></tr>  <tr class="even">
    <td class="key">VERDICHTER HEIZEN</td>
    <td class="value">2500h</td>
  </tr>
  <tr class="odd">
    <td class="key">VERDICHTER KÜHLEN</td>
    <td class="value">236h</td>
  </tr>
  <tr class="even">
    <td class="key">VERDICHTER WW</td>
    <td class="value">289h</td>
  </tr>
  <tr class="odd">
    <td class="key">ELEKTR. NE HEIZEN</td>
    <td class="value">363h</td>
  </tr>
  <tr class="even">
    <td class="key round-leftbottom">ELEKTR. NE WW</td>
    <td class="value round-rightbottom">3h</td>
  </tr>
</table></div><div class="span-24">&nbsp;</div>
    </div>  </form></div>
</div>
</div>
</div>
<div id="footer">
	<!--[if IE]>
	<style type="text/css">
	#footer
{
		
		height:260px;
}
	#versionsNummer
	{
		position:relative;
		top:-33px;
	}
	</style>

     	<![endif]-->
	<div class="span-24 last footer_middle curdef">
	
		<div class="span-8 prepend-top" style="height:145px">
						<div class="span-3">
			
				<img src="./pics/ste_footer_website.png" />
			</div>
			<div class="span-5 last">
				<p>
				
          					Weitere Informationen zu unserem Produktprogramm und aktuelle Serviceangebote finden Sie unter					<a href="http://www.stiebel-eltron.de" target="_blank" class="extern">www.stiebel-eltron.de</a>
				</p>
			</div>
					</div>
	  
    		<div class="bordered span-1"></div>
		<div class="span-6 prepend-top">
			<div class="span-2">
			  <img src="./pics/footer_tel.png" />
			</div>
			<div class="span-4 last">
				<p>
					Unsere Service-Hotline erreichen Sie unter<br /><span class="big">05531 702-111</span>
				</p>
			</div>
	  </div>
    		<div class="bordered span-1"></div>
		<div class="span-7 prepend-top last">
			<p>
				Das Neueste rund um die Servicewelt				<br /><a href="http://www.stiebel-eltron.de/erneuerbare-energien/kundenservice/servicewelt/isg/" target="_blank" class="extern">servicewelt</a>
			</p>
	  </div>
    
	</div>
  <div class="links span-23 prepend-top append-1 last footer_middle">
    <div class="span-17">
        		<a class="intern" href="?forcepage=dsgvo" onclick="return checkChanges(this);">Datenschutz</a>
				
		<a href="http://www.stiebel-eltron.de/de/info/impressum.html">Impressum</a>
      &nbsp;
      <p style="margin-top:8px" class="right" id="versionsNummer">v12.2.1</p>
    </div>
  	<div class="copyright span-6 last curdef">
  		&copy; STIEBEL ELTRON 2023  	</div>
  </div>
</div>
</body>
</html>

Maybe this will help

[{"id":"19f75c83a6346f27","type":"inject","z":"7e55d0324dd88ad2","name":"60 sec","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":80,"wires":[["54122d938337af08"]]},{"id":"54122d938337af08","type":"template","z":"7e55d0324dd88ad2","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<?xml version=\"1.0\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"de\">\n<head>\n\t<title>STIEBEL ELTRON Reglersteuerung</title>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\t<meta http-equiv=\"imagetoolbar\" content=\"no\" />\n\t<meta name=\"content-language\" content=\"de\" />\n\t<meta name=\"robots\" content=\"noindex,nofollow\" />\n\t<meta name=\"keywords\" content=\"\" />\n\t<meta name=\"description\" content=\"\" />\n  \n  <link rel=\"shortcut icon\" href=\"./pics/brlogo.ico\">\n  <!-- does not exist link rel=\"stylesheet\" href=\"./css/netzwerk.css\" type=\"text/css\" media=\"all\" /-->\n  <link rel=\"stylesheet\" type=\"text/css\" href=\"./css/slider/ste_slider.css\" />\t\n\t<!-- Blueprint CSS framework -->\n\t<link rel=\"stylesheet\" href=\"./css/blueprint/screen.css\" type=\"text/css\" media=\"screen, projection\" />\n\t<link rel=\"stylesheet\" href=\"./css/blueprint/print.css\" type=\"text/css\" media=\"print\" />\t\n\t<!--[if lt IE 8]><link rel=\"stylesheet\" href=\"./css/blueprint/ie.css\" type=\"text/css\" media=\"screen, projection\" /><![endif]-->\n\t\n\t<link rel=\"stylesheet\" href=\"./css/layout.css\" type=\"text/css\" media=\"all\" />\n  \t\n\t<link rel=\"stylesheet\" href=\"./css/sifr.css\" type=\"text/css\" media=\"all\" />\n\t<link rel=\"stylesheet\" href=\"./css/thickbox.css\" type=\"text/css\" media=\"all\" />\n\t\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"./css/jquery.jqplot.min.css\" />\n\t\n\t  \n  \t\n\t<script type=\"text/javascript\" src=\"./js/jquery.min.js\"></script>\n\t<script type=\"text/javascript\" src=\"./js/thickbox.js\"></script>\n\t<script type=\"text/javascript\" src=\"./js/sifr.js\"></script>\n\t<script type=\"text/javascript\" src=\"./js/sifr_sw.js\"></script>\n\t<script type=\"text/javascript\" src=\"./js/scripts.js\"></script>\n  <script type=\"text/javascript\" src=\"./js/json2.js\"></script>\n  <script type=\"text/javascript\" src=\"./js/plugins/jquery-ui-1.8.6.custom.min.js\"></script>\n    <script type=\"text/javascript\" src=\"./js/setDNS1.js\"></script>\n\n\t<!-- [if IE] -->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/excanvas.min.js\"></script>\n\t<!-- [endif] -->\n\n\t<!-- for dateAxisRenderer.js -->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/plugins/Date.min.js\"></script>\n\t<!-- BEGIN: load jqplot -->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/jquery.jqplot.min.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/plugins/jqplot.dateAxisRenderer.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/plugins/jqplot.barRenderer.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/plugins/jqplot.categoryAxisRenderer.js\"></script>\n\t<!-- END: load jqplot -->\n  \n  <!-- BEGIN: load slider -->\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/plugins/slider/jquery.ui.core.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/plugins/slider/jquery.ui.widget.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/plugins/slider/jquery.ui.mouse.js\"></script>\n\t<script language=\"javascript\" type=\"text/javascript\" src=\"./js/plugins/slider/jquery.ui.slider.js\"></script>\n\t<!-- END: load slider -->\n  \n    \n  <!-- BEGIN: Uhrzeit -->\n  <script language=\"javascript\" type=\"text/javascript\">\nvar timestampunterschied = 1681753922 * 1000 - new Date().getTime();\n</script>\n<script src=\"./js/uhrzeit.js\" type=\"text/javascript\" language=\"javascript\"></script>\n  <!-- END:  Uhrzeit -->\n  \n</head>\n<body>\n<div id=\"header\">\n\t<div class=\"head curdef\">\n\t\t<div id=\"meta\">\n\t\t\t<div id=\"login\">\n      \t\t\t</div>\n\t\t</div>\n    <div class=\"eingestelle_sprache\"><strong><a href=\"?s=5,3\" style=\"color:white\">DEUTSCH</a></strong></div>\n    <div id=\"Uhrzeit\"></div>\n\t\t<div class=\"title\">\n      <a href=\".\" onclick=\"return checkChanges(this);\" title=\"zur Startseite\">\n        <img src=\"./pics/title.png\" alt=\"Servicewelt\" />\n\t\t\n      </a>\n            <div style=\"position: relative; color: #97B765; font-weight: 900; margin: 18px 0px 0px 323px;\"></div>\n          </div>\n\t\t<div class=\"logo\"><a href=\".\" onclick=\"return checkChanges(this);\" title=\"zur Startseite\" class=\"home_link\">&nbsp;</a></div>\n\t</div>\n</div>\n\n\n<div class=\"container\" id=\"page\">\n  <div id=\"main\" >\n  <div id=\"SpacerFirefox\"></div>\n    <div id=\"nav\">\n      <div class=\"clear\"></div>\n            <div class=\"nav left defaultfirst\">\n        <div class=\"l left\">&nbsp;</div>\n        <div class=\"c left link1\">\n          <a onclick=\"return checkChanges(this);\" href=\"?s=0\">START</a>\n        </div>\n        <div class=\"r left\">&nbsp;</div>\n        <div class=\"clear\"></div>\n              </div>\n            <div class=\"nav left default parent\">\n        <div class=\"l left\">&nbsp;</div>\n        <div class=\"c left link2\">\n          <a >INFO</a>\n        </div>\n        <div class=\"r left\">&nbsp;</div>\n        <div class=\"clear\"></div>\n                <div class=\"second\">\n          <ul class=\"second \">\n                        <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=1,0\">ANLAGE</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=1,1\">WÄRMEPUMPE</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=1,2\">LIZENZBESTIMMUNGEN</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=1,3\">NUTZUNGS- UND DATENSCHUTZRICHTLINIE</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=1,4\">BEDIENUNG UND INSTALLATION</a>\n    \t\t\t    \n            </li>\n                    </ul>\n        </div>\n              </div>\n            <div class=\"nav left default parent\">\n        <div class=\"l left\">&nbsp;</div>\n        <div class=\"c left link3\">\n          <a >DIAGNOSE</a>\n        </div>\n        <div class=\"r left\">&nbsp;</div>\n        <div class=\"clear\"></div>\n                <div class=\"second\">\n          <ul class=\"second \">\n                        <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=2,0\">STATUS</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=2,1\">INBETRIEBNAHME</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=2,2\">FEHLERLISTE</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=2,3\">FACHMANN</a>\n    \t\t\t    \n            </li>\n                    </ul>\n        </div>\n              </div>\n            <div class=\"nav left default parent\">\n        <div class=\"l left\">&nbsp;</div>\n        <div class=\"c left link4\">\n          <a >PROGRAMME</a>\n        </div>\n        <div class=\"r left\">&nbsp;</div>\n        <div class=\"clear\"></div>\n                <div class=\"second\">\n          <ul class=\"second \">\n                        <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=3,0\">HEIZPROGRAMM</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=3,1\">WARMWASSERPROGRAMM</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=3,2\">LÜFTERPROGRAMM</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=3,3\">PARTYPROGRAMM</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=3,4\">FERIENPROGRAMM</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=3,5\">KÜHLZEIT</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=3,6\">ANTILEGIONELLENZEIT</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=3,8\">GRUNDEINSTELLUNG</a>\n    \t\t\t    \n            </li>\n                    </ul>\n        </div>\n              </div>\n            <div class=\"nav left default parent\">\n        <div class=\"l left\">&nbsp;</div>\n        <div class=\"c left link5\">\n          <a >EINSTELLUNGEN</a>\n        </div>\n        <div class=\"r left\">&nbsp;</div>\n        <div class=\"clear\"></div>\n                <div class=\"second\">\n          <ul class=\"second \">\n                        <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=4,0\">HEIZEN</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=4,1\">WARMWASSER</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=4,2\">LÜFTEN</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=4,3\">KÜHLEN</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=4,4\">SOLAR</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=4,5\">ENERGIEMANAGEMENT</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=4,6\">ZEIT/DATUM</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=4,7\">INBETRIEBNAHME</a>\n    \t\t\t    \n            </li>\n                    </ul>\n        </div>\n              </div>\n            <div class=\"nav left defaultlast parent\">\n        <div class=\"l left\">&nbsp;</div>\n        <div class=\"c left link6\">\n          <a >Profil</a>\n        </div>\n        <div class=\"r left\">&nbsp;</div>\n        <div class=\"clear\"></div>\n                <div class=\"second\">\n          <ul class=\"second last\">\n                        <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=5,0\">Netzwerk</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=5,1\">Sicherheit</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=5,2\">Anlagenbild</a>\n    \t\t\t    \n            </li>\n                      <li>\n\t\t\t  <a onclick=\"return checkChanges(this);\" href=\"?s=5,3\">SPRACHE</a>\n    \t\t\t    \n            </li>\n                    </ul>\n        </div>\n              </div>\n            <div class=\"clear\"></div>\n    </div>\n        <div id=\"sub_nav\" class=\"span-24\"><div class=\"left main sifr span-9\" style=\"width: 45%\">ANLAGE</div>\n<div class=\"span-15 last\">\n</div>\n<div class=\"clear\"></div></div>\n        <form id=\"werte\" action=\"#\" onsubmit=\"saveValues(this);return false;\"><div id=\"content\">\n    <div class=\"span-11 append-1\" style=\"float:left\"><table class=\"info\"><tr><th colspan=\"2\" class=\"round-top\">RAUMTEMPERATUR</th></tr>  <tr class=\"even\">\n    <td class=\"key\">RAUMISTTEMP. HK1</td>\n    <td class=\"value\">21,6°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">RAUMSOLLTEMP. HK1</td>\n    <td class=\"value\">21,5°C</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key\">RAUMFEUCHTE HK1</td>\n    <td class=\"value\">42,9%</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">RAUMISTTEMP. HK2</td>\n    <td class=\"value\">10,0°C</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key\">RAUMSOLLTEMP. HK2</td>\n    <td class=\"value\">10,0°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key round-leftbottom\">RAUMFEUCHTE HK2</td>\n    <td class=\"value round-rightbottom\">0,0%</td>\n  </tr>\n</table></div><div class=\"span-11 prepend-1\" style=\"float:right\"><table class=\"info\"><tr><th colspan=\"2\" class=\"round-top\">HEIZEN</th></tr>  <tr class=\"even\">\n    <td class=\"key\">AUSSENTEMPERATUR</td>\n    <td class=\"value\">11,8°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">ISTWERT HK1</td>\n    <td class=\"value\">24,0°C</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key\">SOLLWERT HK1</td>\n    <td class=\"value\">26,0°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">ISTWERT HK2</td>\n    <td class=\"value\">24,5°C</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key\">SOLLWERT HK2</td>\n    <td class=\"value\">12,2°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">VORLAUFTEMP.</td>\n    <td class=\"value\">23,7°C</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key\">RÜCKLAUFTEMP.</td>\n    <td class=\"value\">24,5°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">DRUCK HEIZKREIS</td>\n    <td class=\"value\">1,5bar</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key round-leftbottom\">VOLUMENSTROM</td>\n    <td class=\"value round-rightbottom\">11,5l/min</td>\n  </tr>\n</table></div><div class=\"span-11 append-1\" style=\"float:left\"><table class=\"info\"><tr><th colspan=\"2\" class=\"round-top\">WARMWASSER</th></tr>  <tr class=\"even\">\n    <td class=\"key\">WW-ISTTEMP.</td>\n    <td class=\"value\">47,2°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key round-leftbottom\">WW-SOLLTEMP.</td>\n    <td class=\"value round-rightbottom\">45,0°C</td>\n  </tr>\n</table></div><div class=\"span-11 prepend-1\" style=\"float:right\"><table class=\"info\"><tr><th colspan=\"2\" class=\"round-top\">LÜFTEN</th></tr>  <tr class=\"even\">\n    <td class=\"key\">ZULUFT IST LÜFTERDREHZAHL</td>\n    <td class=\"value\">31Hz</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">ZULUFT SOLL VOLUMENSTROM</td>\n    <td class=\"value\">245m³/h</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key\">ABLUFT IST LÜFTERDREHZAHL</td>\n    <td class=\"value\">34Hz</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">ABLUFT SOLL VOLUMENSTROM</td>\n    <td class=\"value\">233m³/h</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key\">ABLUFTFEUCHTE</td>\n    <td class=\"value\">42%</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key\">ABLUFTTEMPERATUR</td>\n    <td class=\"value\">23,9°C</td>\n  </tr>\n  <tr class=\"even\">\n    <td class=\"key\">ABLUFTTAUPUNKT</td>\n    <td class=\"value\">10,2°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key round-leftbottom\">Differenzdruck</td>\n    <td class=\"value round-rightbottom\">95Pa</td>\n  </tr>\n</table></div><div class=\"span-11 append-1\" style=\"float:left\"><table class=\"info\"><tr><th colspan=\"2\" class=\"round-top\">KÜHLEN</th></tr>  <tr class=\"even\">\n    <td class=\"key\">TAUPUNKTTEMPERATUR HK1</td>\n    <td class=\"value\">8,4°C</td>\n  </tr>\n  <tr class=\"odd\">\n    <td class=\"key round-leftbottom\">TAUPUNKTTEMPERATUR HK2</td>\n    <td class=\"value round-rightbottom\">0,0°C</td>\n  </tr>\n</table></div><div class=\"span-11 append-1\" style=\"float:left\"><table class=\"info\"><tr><th colspan=\"2\" class=\"round-top\">WÄRMEERZEUGER</th></tr>  <tr class=\"even\">\n    <td class=\"key round-leftbottom\">HEIZSTUFE</td>\n    <td class=\"value round-rightbottom\">1</td>\n  </tr>\n</table></div><div class=\"span-11 append-1\" style=\"float:left\"><table class=\"info\"><tr><th colspan=\"2\" class=\"round-top\">ENERGIEMANAGEMENT</th></tr>  <tr class=\"even\">\n    <td class=\"key\">Deaktiviert</td>\n    <td class=\"value\"><img height=\"15\" src=\"./pics/ste-symbol_an-97b765.png\" /></td>\n  </tr>\n</table></div><div class=\"span-24\">&nbsp;</div>\n    </div>  </form></div>\n</div>\n</div>\n</div>\n<div id=\"footer\">\n\t<!--[if IE]>\n\t<style type=\"text/css\">\n\t#footer\n{\n\t\t\n\t\theight:260px;\n}\n\t#versionsNummer\n\t{\n\t\tposition:relative;\n\t\ttop:-33px;\n\t}\n\t</style>\n\n     \t<![endif]-->\n\t<div class=\"span-24 last footer_middle curdef\">\n\t\n\t\t<div class=\"span-8 prepend-top\" style=\"height:145px\">\n\t\t\t\t\t\t<div class=\"span-3\">\n\t\t\t\n\t\t\t\t<img src=\"./pics/ste_footer_website.png\" />\n\t\t\t</div>\n\t\t\t<div class=\"span-5 last\">\n\t\t\t\t<p>\n\t\t\t\t\n          \t\t\t\t\tWeitere Informationen zu unserem Produktprogramm und aktuelle Serviceangebote finden Sie unter\t\t\t\t\t<a href=\"http://www.stiebel-eltron.de\" target=\"_blank\" class=\"extern\">www.stiebel-eltron.de</a>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t\t\t\t</div>\n\t  \n    \t\t<div class=\"bordered span-1\"></div>\n\t\t<div class=\"span-6 prepend-top\">\n\t\t\t<div class=\"span-2\">\n\t\t\t  <img src=\"./pics/footer_tel.png\" />\n\t\t\t</div>\n\t\t\t<div class=\"span-4 last\">\n\t\t\t\t<p>\n\t\t\t\t\tUnsere Service-Hotline erreichen Sie unter<br /><span class=\"big\">05531 702-111</span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t  </div>\n    \t\t<div class=\"bordered span-1\"></div>\n\t\t<div class=\"span-7 prepend-top last\">\n\t\t\t<p>\n\t\t\t\tDas Neueste rund um die Servicewelt\t\t\t\t<br /><a href=\"http://www.stiebel-eltron.de/erneuerbare-energien/kundenservice/servicewelt/isg/\" target=\"_blank\" class=\"extern\">servicewelt</a>\n\t\t\t</p>\n\t  </div>\n    \n\t</div>\n  <div class=\"links span-23 prepend-top append-1 last footer_middle\">\n    <div class=\"span-17\">\n        \t\t<a class=\"intern\" href=\"?forcepage=dsgvo\" onclick=\"return checkChanges(this);\">Datenschutz</a>\n\t\t\t\t\n\t\t<a href=\"http://www.stiebel-eltron.de/de/info/impressum.html\">Impressum</a>\n      &nbsp;\n      <p style=\"margin-top:8px\" class=\"right\" id=\"versionsNummer\">v12.2.1</p>\n    </div>\n  \t<div class=\"copyright span-6 last curdef\">\n  \t\t&copy; STIEBEL ELTRON 2023  \t</div>\n  </div>\n</div>\n</body>\n</html>","output":"str","x":240,"y":80,"wires":[["a7b95e20be8a62bb"]]},{"id":"a7b95e20be8a62bb","type":"html","z":"7e55d0324dd88ad2","name":"","property":"payload","outproperty":"payload","tag":"td.value, .key","ret":"text","as":"single","x":390,"y":80,"wires":[["fa7e6986e291772e"]]},{"id":"fa7e6986e291772e","type":"function","z":"7e55d0324dd88ad2","name":"parse http","func":"const output = {};\nfor(let i = 0; i < msg.payload.length; i += 2){\n    let value = parseFloat(msg.payload[i+1].replace(\",\", \".\"))\n    if(isNaN(value)) value = 0;\n    let key = msg.payload[i].replace(/[^A-Za-z0-9]+/g,\" \").trim().replace(/\\s/g, \"_\");\n    output[key] = value\n}\n\n\nmsg.payload = output;\n\n//global.set(\"LWZ8\", msg.payload);\n\n//msg.topic = \"INSERT INTO \";\n//msg.topic += \"LWZ8data (`raumIstTempHK1`, `raumSollTempHK1`) \";\n//msg.topic += \"VALUES (:raumIstTempHK1, :raumSollTempHK1) ;\";\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":80,"wires":[["f89b766ced76cebf"]]},{"id":"f89b766ced76cebf","type":"debug","z":"7e55d0324dd88ad2","name":"debug 4","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":740,"y":80,"wires":[]}]

if you want specific property names you can add an array of 29 names and use them in the loop
e.g.

[{"id":"fa7e6986e291772e","type":"function","z":"7e55d0324dd88ad2","name":"parse http","func":"const output = {};\nconst column_names = [\n \"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"a1\",\"b1\",\"c1\"\n];\nfor(let i = 0; i < msg.payload.length; i++){\n    let value = parseFloat(msg.payload[i].replace(\",\", \".\"))\n    if(isNaN(value)) value = 0;\n    let key = column_names[i]\n    output[key] = value\n}\n\n\nmsg.payload = output;\n\n//global.set(\"LWZ8\", msg.payload);\n\n//msg.topic = \"INSERT INTO \";\n//msg.topic += \"LWZ8data (`raumIstTempHK1`, `raumSollTempHK1`) \";\n//msg.topic += \"VALUES (:raumIstTempHK1, :raumSollTempHK1) ;\";\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":80,"wires":[["f89b766ced76cebf"]]},{"id":"f89b766ced76cebf","type":"debug","z":"7e55d0324dd88ad2","name":"debug 4","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":740,"y":80,"wires":[]},{"id":"a7b95e20be8a62bb","type":"html","z":"7e55d0324dd88ad2","name":"","property":"payload","outproperty":"payload","tag":"td.value","ret":"text","as":"single","x":380,"y":80,"wires":[["fa7e6986e291772e"]]}]

:raised_hands: You leave me speechless. Congrats and thank you very much for your smart solution. This is WAY more smooth to read the values. :sweat_smile: Once more I'm facing how much I still have to learn.

Are you also having a clever solution to transmit the values to the SQL-DB?
I was dreaming of dynamically adding columns to the table if the category for an value is not there jet... but up to now I did not succeed to implement a prove of concept for such.

How you attempted seems fine, just use the column names as value parameters.
e.g.

const output = {};
const column_names = [
 "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","a1","b1","c1"
];
for(let i = 0; i < msg.payload.length; i++){
    let value = parseFloat(msg.payload[i].replace(",", "."))
    if(isNaN(value)) value = 0;
    let key = column_names[i]
    output[key] = value
}
msg.payload = output;

msg.topic = "INSERT INTO ";
msg.topic += "LWZ8data (`raumIstTempHK1`, `raumSollTempHK1`) ";
msg.topic += "VALUES (:a, :b) ;";

return msg;

You could search for store json in database. This would allow for dynamic storing of new columns.

Or even

const output = {};
const column_names = [
 "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","a1","b1","c1"
];
const store_names = [
 "a","g","h","m","n","o","t","u","y","z","c1"
];
for(let i = 0; i < msg.payload.length; i++){
    let value = parseFloat(msg.payload[i].replace(",", "."))
    if(isNaN(value)) value = 0;
    let key = column_names[i];
    output[key] = value;
}
msg.payload = output;
const columns = store_names.join("', '");
const params = ":" + store_names.join(", :");
msg.topic = "INSERT INTO ";
msg.topic += "LWZ8data (`" + columns + "`) ";
msg.topic += "VALUES (" + params + ") ;";

return msg;

So all you would need to edit is the column names and the store_names you wish to save to db.

Thank you, E1cid. :smiley: I'll go and give it a try tomorrow.

But on the first view the creation of SQL-Query looks still a bit bulky if the no. of values rises.
I think about writing a function to scroll trough an array containing "Unit" and "Value" and build the SQL-Query on demand based on the content of the array.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.