Skip to content

Commit

Permalink
Smarthome (#1413)
Browse files Browse the repository at this point in the history
* added config for startup detection

* add developement warning
  • Loading branch information
benderl committed May 28, 2021
1 parent 0ff0bc3 commit d2ccb3f
Show file tree
Hide file tree
Showing 3 changed files with 134 additions and 291 deletions.
30 changes: 30 additions & 0 deletions runs/mqttsub.py
Expand Up @@ -313,6 +313,36 @@ def on_message(client, userdata, msg):
if ( 1 <= int(devicenumb) <= numberOfSupportedDevices and 0 <= int(msg.payload) <= 9000 ):
writetoconfig(shconfigfile,'smarthomedevices','device_acthorpower_'+str(devicenumb), msg.payload.decode("utf-8"))
client.publish("openWB/config/get/SmartHome/Devices/"+str(devicenumb)+"/device_acthorpower", msg.payload.decode("utf-8"), qos=0, retain=True)

if (( "openWB/config/set/SmartHome/Device" in msg.topic) and ("device_finishTime" in msg.topic)):
devicenumb=re.sub(r'\D', '', msg.topic)
if ( 1 <= int(devicenumb) <= numberOfSupportedDevices and re.search(r'^([01]{0,1}\d|2[0-3]):[0-5]\d$', msg.payload.decode("utf-8") ) ):
writetoconfig(shconfigfile,'smarthomedevices','device_finishtime_'+str(devicenumb), msg.payload.decode("utf-8"))
client.publish("openWB/config/get/SmartHome/Devices/"+str(devicenumb)+"/device_finishTime", msg.payload.decode("utf-8"), qos=0, retain=True)
else:
print( "invalid payload for topic '" + msg.topic + "': " + msg.payload.decode("utf-8"))
if (( "openWB/config/set/SmartHome/Device" in msg.topic) and ("device_startupDetection" in msg.topic)):
devicenumb=re.sub(r'\D', '', msg.topic)
if ( 1 <= int(devicenumb) <= numberOfSupportedDevices and 0 <= int(msg.payload) <= 1 ):
writetoconfig(shconfigfile,'smarthomedevices','device_startupdetection_'+str(devicenumb), msg.payload.decode("utf-8"))
client.publish("openWB/config/get/SmartHome/Devices/"+str(devicenumb)+"/device_startupDetection", msg.payload.decode("utf-8"), qos=0, retain=True)
else:
print( "invalid payload for topic '" + msg.topic + "': " + msg.payload.decode("utf-8"))
if (( "openWB/config/set/SmartHome/Device" in msg.topic) and ("device_standbyPower" in msg.topic)):
devicenumb=re.sub(r'\D', '', msg.topic)
if ( 1 <= int(devicenumb) <= numberOfSupportedDevices and 0 <= int(msg.payload) <= 1000 ):
writetoconfig(shconfigfile,'smarthomedevices','device_standbypower_'+str(devicenumb), msg.payload.decode("utf-8"))
client.publish("openWB/config/get/SmartHome/Devices/"+str(devicenumb)+"/device_standbyPower", msg.payload.decode("utf-8"), qos=0, retain=True)
else:
print( "invalid payload for topic '" + msg.topic + "': " + msg.payload.decode("utf-8"))
if (( "openWB/config/set/SmartHome/Device" in msg.topic) and ("device_standbyDuration" in msg.topic)):
devicenumb=re.sub(r'\D', '', msg.topic)
if ( 1 <= int(devicenumb) <= numberOfSupportedDevices and 0 <= int(msg.payload) <= 86400 ):
writetoconfig(shconfigfile,'smarthomedevices','device_standbyduration_'+str(devicenumb), msg.payload.decode("utf-8"))
client.publish("openWB/config/get/SmartHome/Devices/"+str(devicenumb)+"/device_standbyDuration", msg.payload.decode("utf-8"), qos=0, retain=True)
else:
print( "invalid payload for topic '" + msg.topic + "': " + msg.payload.decode("utf-8"))

if (msg.topic == "openWB/config/set/SmartHome/maxBatteryPower"):
if (0 <= int(msg.payload) <= 10000):
f = open('/var/www/html/openWB/ramdisk/smarthomehandlermaxbatterypower', 'w')
Expand Down
72 changes: 69 additions & 3 deletions web/settings/smarthomeconfig.php
Expand Up @@ -87,7 +87,7 @@
<option value="stiebel" data-option="stiebel">Stiebel</option>
<option value="http" data-option="http">Http</option>
<option value="avm" data-option="avm">AVM</option>
<option value="mystrom" data-option="mystrom">MyStrom (in Entwicklung)</option>
<option value="mystrom" data-option="mystrom">MyStrom</option>
<option value="pyt" data-option="pyt">Pyt (veraltet, bitte andere Option wählen)</option>
</select>
<span class="form-text small device<?php echo $devicenum; ?>-option device<?php echo $devicenum; ?>-option-none hide">
Expand Down Expand Up @@ -264,6 +264,53 @@
<span class="form-text small">Parameter in Minuten wie lange das Gerät pro Tag maximal aktiviert sein darf. Der Zähler wird nächtlich zurückgesetzt. 1440 Minuten sind 24 Stunden.</span>
</div>
</div>
<div class="form-row mb-1">
<label for="device_finishTimeDevices<?php echo $devicenum; ?>" class="col-md-4 col-form-label">Spätestens fertig um</label>
<div class="col">
<input id="device_finishTimeDevices<?php echo $devicenum; ?>" name="device_finishTime" class="form-control" type="text" pattern="^([01]{0,1}\d|2[0-3]):[0-5]\d" maxlength="5" required data-default="00:00" value="00:00" data-topicprefix="openWB/config/get/SmartHome/" data-topicsubgroup="Devices/<?php echo $devicenum; ?>/">
<span class="form-text small">Uhrzeit im 24 Stunden-Format. Z.B. "14:45" Der Wert "00:00" schaltet die Funktion ab.</span>
<span class="form-text small text-danger">Das Feature befindet sich noch in der Entwicklung!</span>
</div>
</div>
</div>
<div class="device<?php echo $devicenum; ?>-option device<?php echo $devicenum; ?>-option-shelly device<?php echo $devicenum; ?>-option-tasmota device<?php echo $devicenum; ?>-option-http device<?php echo $devicenum; ?>-option-avm device<?php echo $devicenum; ?>-option-mystrom hide">
<hr class="border-secondary">
<div class="form-group">
<div class="form-row mb-1">
<label class="col-md-4 col-form-label">Anlauferkennung</label>
<div class="col">
<div class="btn-group btn-group-toggle btn-block" id="device_startupDetectionDevices<?php echo $devicenum; ?>" name="device_startupDetection" data-toggle="buttons" data-default="0" value="0" data-topicprefix="openWB/config/get/SmartHome/" data-topicsubgroup="Devices/<?php echo $devicenum; ?>/">
<label class="btn btn-outline-info">
<input type="radio" name="device_startupDetectionDevices<?php echo $devicenum; ?>" id="device_startupDetection<?php echo $devicenum; ?>0" data-option="0" value="0" checked="checked">Nein
</label>
<label class="btn btn-outline-info">
<input type="radio" name="device_startupDetectionDevices<?php echo $devicenum; ?>" id="device_startupDetection<?php echo $devicenum; ?>1" data-option="1" value="1">Ja
</label>
</div>
<span class="form-text small">
Durch diese Option wird das angeschlossene Gerät täglich um 0:01 Uhr eingeschaltet. Wenn erkannt wird, dass das Gerät aktiviert wird (Leistungsaufnahme ist länger als "Zeit im Standby" größer als eingetragener "Verbrauch im Standby"), wird das Gerät direkt ausgeschaltet, falls die einschaltschwelle nicht erreicht ist. Sobald die einschaltschwelle erreicht wird, wird das Gerät erneut aktiviert.<br>
Somit kann z. B. eine Waschmaschine am Morgen im Standby befüllt und eingeschaltet werden. Sie läuft aber erst richtig an, wenn genügend Überschuss vorhanden ist.
</span>
<span class="form-text small text-danger">Das Feature befindet sich noch in der Entwicklung!</span>
</div>
</div>
<div class="device<?php echo $devicenum; ?>startupDetection hide">
<div class="form-row mb-1">
<label for="device_standbyPowerDevices<?php echo $devicenum; ?>" class="col-md-4 col-form-label">Verbrauch im Standby</label>
<div class="col">
<input id="device_standbyPowerDevices<?php echo $devicenum; ?>" name="device_standbyPower" class="form-control naturalNumber" type="number" inputmode="decimal" required min="0" max="1000" data-default="0" value="0" data-topicprefix="openWB/config/get/SmartHome/" data-topicsubgroup="Devices/<?php echo $devicenum; ?>/">
<span class="form-text small">Leistungsaufnahme in Watt, wenn das Gerät nicht läuft.</span>
</div>
</div>
<div class="form-row mb-1">
<label for="device_standbyDurationDevices<?php echo $devicenum; ?>" class="col-md-4 col-form-label">Zeit im Standby</label>
<div class="col">
<input id="device_standbyDurationDevices<?php echo $devicenum; ?>" name="device_standbyDuration" class="form-control naturalNumber" type="number" inputmode="decimal" required min="0" max="86400" data-default="0" value="0" data-topicprefix="openWB/config/get/SmartHome/" data-topicsubgroup="Devices/<?php echo $devicenum; ?>/">
<span class="form-text small">Dauer in Sekunden.</span>
</div>
</div>
</div>
</div>
</div>
<hr class="border-secondary">
<div class="form-group">
Expand Down Expand Up @@ -419,8 +466,8 @@
<option value ="" data-option="" disabled="disabled" selected="selected">-- Bitte auswählen --</option>
<option value="fronius" data-option="fronius">Fronius (in Entwicklung)</option>
<option value="http" data-option="http">Http</option>
<option value="json" data-option="json">Json (in Entwicklung)</option>
<option value="mystrom" data-option="mystrom">MyStrom (in Entwicklung)</option>
<option value="json" data-option="json">Json</option>
<option value="mystrom" data-option="mystrom">MyStrom</option>
<option value="sdm630" data-option="sdm630">SDM630</option>
<option value="shelly" data-option="shelly">Shelly</option>
<option value="we514" data-option="we514">WE514 (in Entwicklung)</option>
Expand Down Expand Up @@ -670,6 +717,17 @@ function visibility_device_canSwitchDevices<?php echo $devicenum; ?>( data ){
}
}

function visibility_device_startupDetectionDevices<?php echo $devicenum; ?>( data ){
if( typeof data == 'undefined' ){
data = $('input[name=device_startupDetectionDevices<?php echo $devicenum; ?>]:checked').attr("data-option");
}
if( data == 0 ){
hideSection('.device<?php echo $devicenum; ?>startupDetection');
} else {
showSection('.device<?php echo $devicenum; ?>startupDetection');
}
}

function visibility_device_nameDevices<?php echo $devicenum; ?>( data ){
if( typeof data =='undefined' ){
data = $('#device_nameDevices<?php echo $devicenum; ?>').val();
Expand Down Expand Up @@ -712,6 +770,10 @@ function visibiltycheck(elementId, mqttpayload) {
visibility_device_canSwitchDevices<?php echo $devicenum; ?>( mqttpayload );
}

if ( elementId == 'device_startupDetectionDevices<?php echo $devicenum; ?>') {
visibility_device_startupDetectionDevices<?php echo $devicenum; ?>( mqttpayload );
}

if ( elementId == 'device_nameDevices<?php echo $devicenum; ?>') {
visibility_device_nameDevices<?php echo $devicenum; ?>( mqttpayload );
}
Expand Down Expand Up @@ -744,6 +806,10 @@ function visibiltycheck(elementId, mqttpayload) {
visibility_device_canSwitchDevices<?php echo $devicenum; ?>();
});

$('#device_startupDetectionDevices<?php echo $devicenum; ?>').change(function(){
visibility_device_startupDetectionDevices<?php echo $devicenum; ?>();
});

$('#device_nameDevices<?php echo $devicenum; ?>').change(function(){
visibility_device_nameDevices<?php echo $devicenum; ?>( $(this).val() );
})
Expand Down

0 comments on commit d2ccb3f

Please sign in to comment.