Werte auf Website über Rule setzen

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
Hannes
Beiträge: 14
Registriert: 3. Aug 2023 12:25
Answers: 0

Werte auf Website über Rule setzen

Beitrag von Hannes »

Guten Tag,
ich habe eine Stiebel Wärmepumpe und kann über das ISG-Modul - separates "Kastl" am LAN mit der Option, Werte der Wärmepumpe über Browser oder Modubus auszulesen/zu beinflussen - darauf zugreifen. Ich nutze hierfür Rules und das Modbus-Binding in openHAB, um z.B. die Heizung - bei PV-Überschuss - in den forcierten Betrieb zu schalten (SG Ready), etc.
Leider habe ich aber nicht alle im Browser verfügbaren Einstellungen auch über Modbus im Zugriff.
Gibt es über openHAB eine Möglichkeit, eine URL aufzurufen, den Wert eines Eingabefelds zu ändern und einen "Button Klick" auf einen Button (Speichern) auszuführen?
Konkret möchte ich die Reststillstandszeit der Wärmepumpe über eine Rule in openHAB dynamisch anpassen, indem:
1. der Wert im Eingabefeld gesetzt
2. der Button "Speichern" ausgelöst wird
...siehe Screenshot.

Falls relevant: Ich verwende das openHAB Release 4.1 (stable) auf bullseye.

EDIT: Ich habe noch den Seitenquelltext hinzugefügt.

Danke,
Hannes

Code: Alles auswählen


<?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 -->
    <!-- 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">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">ANALYSE</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=2,2">BUSTEILNEHMER</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=2,3">FEHLERLISTE</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">PARTYPROGRAMM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=3,3">FERIENPROGRAMM</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">ENERGIEMANAGEMENT</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,3">ZEIT/DATUM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,4">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%">INBETRIEBNAHME</div>
<div class="span-15 last">
  <div class="nav default right" style="padding-right: 24px;">
    <a href="?s=4,4,1" onclick="return checkChanges(this);">
      ISG    </a>
  </div>
  <div class="nav active right">
    <div class="l"></div>
    <div class="c">
      <a id="subnavactivename"></a>
    </div>
    <div class="r"></div>
    <div class="clear"></div>
  </div>
  <script type="text/javascript">
    $("#subnavactivename").html('WÄRMEPUMPE');
    $("#subsubnavicon").css( 'width', function(){ 
      return parseInt( $("#subsubnav").css('width')); 
    }).click(function(e){
      $("#subsubnav").slideToggle('fast');
      e.stopPropagation();
    });
    $("#subsubnav").click(function(e){
      e.stopPropagation();
    });
    $('body').bind('click', function(e) {
      $("#subsubnav").slideUp('fast');
    });
  </script>
</div>
<div class="clear"></div></div>
        <form id="werte" action="#" onsubmit="saveValues(this);return false;"><div id="content">
    <script type="text/javascript">
  var valSettings = new Array();
  var jsvalues = new Array();
  var jsobj;
</script>
<div class="focusguard" id="focusguard-1" tabindex="0"></div>
 <div class="calibration round span-24 last" id="calval109">
  <div class="span-7 ialigned">
    <h3 class="title">STILLSTANDZEIT</h3>
  </div>
  <div class="values span-7">
    <div class="editors">
      <a onmousedown="change('val109','+',1,120,'1',true);return false;" href="javascript://">
        <img src="./pics/button_higher.png">
      </a>
      <a id="editorslower" onmousedown="change('val109','-',1,120,'1',true);return false;" href="javascript://" style="clear:left;">
        <img src="./pics/button_lower.png">
      </a>
    </div> 
    <input type="text" tabindex="1" value="" name="val109" id="val109" class="edit upndown firstElement" style="width:3.6em">
	
    <script language="javascript" type="text/javascript">
      valSettings['val109'] = new Array();
      valSettings['val109']['type'] = 'int';       valSettings['val109']['min'] = '1';
      valSettings['val109']['max'] = '120';
      
            
      jsvalues['109'] = new Array();
      jsvalues['109']['id']='val109';
      jsvalues['109']['val']='120';
    </script>
   </div>
  <div class="values span-1 append-1">min</div>
  <div class="green round-right span-8 last">
    <p>Gültige Werte: Eingabe zwischen<br />1 min und 120 min</p>
  </div>
  </div>  

<div class="calibration round span-24 last" id="calval129">
  <div class="span-7 ialigned">
    <h3 class="title">RESET WÄRMEPUMPE</h3>
  </div>
  <div class="values span-7">
    <div class="dropdown" style="width:7.56em">	<!-- Chrome-Bug: div zu schmal, daher feste Breite. Sorgt ausserdem fuer Platz fuer Radio-Buttons in div.black -->
      <input id="aval129" value="AUS" readonly="readonly" class="dropdown dropdown_wert" style="width:3.6em">
      <img src="./pics/icon_edit_dropdown.png" class="dropdown">
      <div class="black">
                  <input id="radioval1290" type="radio" alt="AUS" name="val129" value="0" checked="checked">
          <label for="radioval1290">AUS</label>
          <br>
                  <input id="radioval1291" type="radio" alt="EIN" name="val129" value="1">
          <label for="radioval1291">EIN</label>
          <br>
              </div>
    </div>
    
    <script language="javascript" type="text/javascript">
    $(":input[name=val129]").click( function() {
    if ($("input[name=val129]:checked").val()==$(this).val()) {
      $("#val129").val($(this).val());
      $("#aval129").val(this.alt);
      valueChanged = true;
      closeAllBoxes();
    }});
    </script>

  </div>
  <div class="values span-1 append-1"></div>
  <div class="green round-right span-8 last">
    <p>Optionale Auswahl</p>
  </div>
  </div> <div class="focusguard" id="focusguard-2" tabindex="2"></div>
<div class="span-24 last">
  <div class="span-4 right">
    <div class="button left"  onclick="document.forms['werte'].onsubmit();"><div class="bg_r">&nbsp;</div><a>Speichern</a></div>  </div>
</div>
<div class="span-24 last"><p></p></div>

<script type="text/javascript">
$( document ).ready(function() {
  $('#focusguard-1').focus( function() {
	// "last" focus guard got focus: set focus to the first field
	$('.lastElement').focus();
	$('.lastElement').select();
	
  });

  $('#focusguard-2').focus( function() {
   // "first" focus guard got focus: set focus to the last field
   $('.firstElement').focus();
   $('.firstElement').select();
  });
}); 
</script>

    </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="?s=1,2&arch=datenschutzerklaerung" onclick="return checkChanges(this);">Datenschutz</a>
      &nbsp;
      <p style="margin-top:8px" class="right" id="versionsNummer">v10.1.0</p>
    </div>
  	<div class="copyright span-6 last curdef">
  		&copy; STIEBEL ELTRON 2019
  	</div>
  </div>
</div>

</body>
</html>
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 13985
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Werte auf Website über Rule setzen

Beitrag von udo1toni »

Der Parameter ist Teil der Inbetriebnahme. Ich bin mir ziemlich sicher, dass es keine gute Idee ist, diesen Wert ständig zu ändern.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Hannes
Beiträge: 14
Registriert: 3. Aug 2023 12:25
Answers: 0

Re: Werte auf Website über Rule setzen

Beitrag von Hannes »

Standardmäßig ist die Stillstandszeit auf 20 min gesetzt, d.h. der Verdichter darf - nachdem er ausgeschaltet wurde - erst nach dieser Zeit wieder aktiv werden. Da meine WP aber mit dieser Einstellung alle 20 min für ca. 5 min zu laufen beginnt und mir die Einschalthäufigkeit zu hoch und die Laufzeit zu niedrig ist, habe ich dem Wert auf 120 min (max) gesetzt.

Für die Nutzung von überschüssigem PV-Strom (ich darf aufgrund begrenzten Netzkapazitäten nur 4 kW einspeisen) möchte ich die Wärmepumpe in den forcierten Betrieb setzen, sodass höhere Sollwerte für Raumtemperatur und WW angesteuert werden.

Ist natürlich blöd, wenn die WP zu dem Zeitpunkt, wo PV-Strom Überschuss besteht, nicht starten kann, weil die Reststillstandszeit noch nicht abgelaufen ist...

Ich würde deshalb gerne den Parameter max. 1x am Tag herunter und wenn nicht mehr genug PV-Strom mehr geliefert wird, wieder auf 120 min hinauf setzen.

Danke!

Benutzeravatar
udo1toni
Beiträge: 13985
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Werte auf Website über Rule setzen

Beitrag von udo1toni »

Ja, durchaus verständlich :)

Eventuell gibt es ja eine andere Möglichkeit, das gleiche Verhalten zu erreichen (mit den Parametern, die für die Steuerung vorhanden sind), z.B. indem Du nach dem Abschalten die Solltemperatur für zwei Stunden absenkst und nach Ablauf der Zeit wieder anhebst.
Das hätte dann auch den Vorteil, dass Du, sollte die Temperatur dann zu sehr fallen, zusätzlich eingreifen kannst.

Eventuell kannst Du auch die Hysterese höher einstellen, darüber wird die erlaubte Abweichung vom Sollwert beschrieben, also z.B. Solltemperatur 21 °C und Hysterese 0,5 °C -> bei 21,25 °C Isttemperatur wird die Wärmelieferung beendet, bei 20,75 °C wird die Wärmelieferung wieder gestartet. Häufiges Takten kann also an einer zu geringen Hysterese liegen.
Eine andere Möglichkeit wäre die Modulation (je nach Modell...), womit die abgegebene Leistung der Anlage reduziert werden kann, aber nicht, indem die Anlage taktet, sondern indem z.B. der Motor bei geringem Wärmebedarf langsamer läuft.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Hannes
Beiträge: 14
Registriert: 3. Aug 2023 12:25
Answers: 0

Re: Werte auf Website über Rule setzen

Beitrag von Hannes »

Danke für deine Ratschläge, die Erhöhung der Hysterese (Stiebel nennt das Reglerdynamik --> da habe ich eine Weile gesucht, bis ich das gefunden habe ;) ) werde ich jedenfalls umsetzen, um unabhängig von meiner "Umgehungslösung" die Laufzeit der Wärmepumpe zu erhöhen.

Meine Umgehungslösung um den forcierten Betrieb anzusteuern (wenn Reststillstandszeit des Verdichters noch nicht abgelaufen ist):
Bei einer Stromabschaltung heute habe ich beobachtet, dass die Reststillstandszeit vom Verdichter auf 0 gesetzt wird, wenn die Steuerung der Wärmepumpe kurz stromlos gemacht wird. Da ich ohnehin noch einen freien Schaltaktor (Bticino Bussystem) hatte, habe ich die Stromversorgung der Steuerung darüber schaltbar gemacht.

Werde mir jetzt noch eine Rule in openHAB bauen, die wenn genügend PV-Strom Überschuss besteht, der Batteriespeicher voll ist und die Reststillstandszeit vom Verdichter > 0 min ist, die Steuerung kurz stromlos schaltet sodass ich die WP im Anschluss sofort per Modbus-Befehl in den forcierten Betrieb starten kann.

Ist vielleicht nicht die eleganteste Lösung, aber sie funktioniert.

Benutzeravatar
udo1toni
Beiträge: 13985
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Werte auf Website über Rule setzen

Beitrag von udo1toni »

Das mag für den Moment funktionieren, aber langfristig möchte ich dringend davon abraten. Solche Steuersysteme sind nicht darauf ausgelegt, ständig vom Strom getrennt zu werden. Wie gesagt, mein Tipp wäre, das über die Solltemperatur zu erschlagen, wenn die erweiterte Hysterese nicht ausreichend sein sollte.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten