Hallo Tom,
super !! Besten Dank. Wenn ich heute Abend Zuhause bin, werde ich es gleich testen.
Danke
super !! Besten Dank. Wenn ich heute Abend Zuhause bin, werde ich es gleich testen.
Danke
[helios]
class_name = Helios
class_path = plugins.helios
tty = /dev/ttyUSB0 #hier ggf anderen Port, je nach Adapter
cycle = 60 # default 300 seconds
[ventilation]
[[power_state]]
type = num
helios_var = power_state
visu=rw
visu_acl=rw
[[bypass_disabled]]
type = num
helios_var = bypass_disabled
visu=rw
visu_acl=rw
[[fanspeed]]
type = num
helios_var = fanspeed
visu=rw
visu_acl=rw
[[outside_temp]]
type = num
helios_var = outside_temp
visu=yes
[[incoming_temp]]
type = num
helios_var = incoming_temp
visu=yes
[[inside_temp]]
type = num
helios_var = inside_temp
visu=yes
[[exhaust_temp]]
type = num
helios_var = exhaust_temp
visu=yes
[[bypass_temp]]
type = num
helios_var = bypass_temp
visu=yes
[[max_fanspeed]]
type = num
helios_var = max_fanspeed
visu=yes
[[min_fanspeed]]
type = num
helios_var = min_fanspeed
visu=yes
<div class="block" style="text-align: left;"> <h3>Kontrollierte Wohnraumlüftung <span class="ui-li-aside">{{ basic.symbol('UhrAKTIV', 'Uhr.KWLAktiv', '', icon1~'time_clock.png', 1) }}</span></h3> /** Experimental: Uhr-Icon in Statuszeile an/aus basic.symbol(uhraktiv)**/ /** eventuell muss das Symbol erst hinter dem Icon geschaltet werden **/ /** {{ basic.switch('KWLUhrIndikator', 'Uhr.KWLAktiv', icon1~'time_clock.png', icon0~'time_clock.png') }} **/ /** Hintergrundbild --> ggf. Pfad zum Bild ersetzen, bei mir liegt es im Projektordner unter pages/Rene. **/ /** Die einzelnen Labels werden hinterher mit negativen Positionsangabe darüber gelegt. **/ /** Geht sicher auch anders, aber fürs Basteln reichts erstmal. **/ /** <img src="pages/Rene/luef_neu.png" alt="KWL" height="400px"> **/ <img src="pages/Rene/luef_neu.png" alt="KWL"> /** Temperaturen **/ <div style="position: absolute; margin-top: -310px; margin-left: 200px;">{{ basic.float('helios_aussentemperatur', 'ventilation.outside_temp', '°C') }}</div> <div style="position: absolute; margin-top: -225px; margin-left: 200px;">{{ basic.float('helios_innentemperatur', 'ventilation.inside_temp', '°C') }}</div> <div style="position: absolute; margin-top: -310px; margin-left: 295px;">{{ basic.float('helios_weglufttemperatur','ventilation.exhaust_temp', '°C') }}</div> <div style="position: absolute; margin-top: -225px; margin-left: 295px;">{{ basic.float('helios_zulufttemperatur', 'ventilation.incoming_temp', '°C') }}</div> /** Lüfterstufe und stufenweise Regelung **/ <div style="position: absolute; margin-top: -280px; margin-left: 238px;"> /** Icon mit Zahl für Lüftungsstufe darstellen **/ /** war mal: {{ basic.value('helios_lueftungsstufe', 'ventilation.fanspeed') }} **/ <a href="#popup-kwlstufe" data-rel="popup"> {{ basic.symbol('s1', 'ventilation.fanspeed', '', icon0~'edit_numeric_1.svg', 1) }} {{ basic.symbol('s2', 'ventilation.fanspeed', '', icon0~'edit_numeric_2.svg', 2) }} {{ basic.symbol('s3', 'ventilation.fanspeed', '', icon0~'edit_numeric_3.svg', 3) }} {{ basic.symbol('s4', 'ventilation.fanspeed', '', icon0~'edit_numeric_4.svg', 4) }} {{ basic.symbol('s5', 'ventilation.fanspeed', '', icon0~'edit_numeric_5.svg', 5) }} {{ basic.symbol('s6', 'ventilation.fanspeed', '', icon0~'edit_numeric_6.svg', 6) }} {{ basic.symbol('s7', 'ventilation.fanspeed', '', icon0~'edit_numeric_7.svg', 7) }} {{ basic.symbol('s8', 'ventilation.fanspeed', '', icon0~'edit_numeric_8.svg', 8) }} </a> /** Popup - Einzelne KWL-Stufen: Direktansteuerung über Buttons **/ <div id="popup-kwlstufe" data-role="popup" style="width:250px; height:150px; text-align:center;" data-overlay-theme="c"> <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right";>Close</a> Lüftungsstufe <br/><br/> {{ basic.button('kwl-stufe-1', 'ventilation.fanspeed', '1', '', 1, 'micro') }} {{ basic.button('kwl-stufe-2', 'ventilation.fanspeed', '2', '', 2, 'micro') }} {{ basic.button('kwl-stufe-3', 'ventilation.fanspeed', '3', '', 3, 'micro') }} {{ basic.button('kwl-stufe-4', 'ventilation.fanspeed', '4', '', 4, 'micro') }} <br/> <br/> {{ basic.button('kwl-stufe-5', 'ventilation.fanspeed', '5', '', 5, 'micro') }} {{ basic.button('kwl-stufe-6', 'ventilation.fanspeed', '6', '', 6, 'micro') }} {{ basic.button('kwl-stufe-7', 'ventilation.fanspeed', '7', '', 7, 'micro') }} {{ basic.button('kwl-stufe-8', 'ventilation.fanspeed', '8', '', 8, 'micro') }} </div> </div> /** Anlage Ein/Aus, Wärmerückgewinnung Ein/Aus **/ <div style="position: absolute; margin-top: -120px; margin-left: 15px;"> {{ basic.switch('helios_an_aus', 'ventilation.power_state', icon1~'control_on_off.png', icon0~'control_on_off.png') }} {{ basic.switch('helios_bypass', 'ventilation.bypass_disabled', icon1~'sani_floor_heating.png', icon0~'sani_floor_heating.png') }} {{ uzsu.uzsu_icon('kwl_schaltuhr_id0', 'ventilation.fanspeed.fanspeed_timer', 'KWL Schaltuhr','0','','','num','An','Aus') }} </div> /** Turbo-Schalter und Infos **/ <div style="position: absolute; margin-top: -120px; margin-left: 390px;"> {{ basic.switch('helios_turbo', '', icon0~'control_cancel.png', icon0~'vent_ventilation_level_3.png') }} <a href="#popup-kwlinfo" data-rel="popup"><img src="icons/ws/message_info.png" alt="KWL" class="icon"></a> </div> /** Popup - KWL-Infos **/ <div id="popup-kwlinfo" data-role="popup" style="width:250px; height:150px; text-align:center;"> /** data-overlay-theme="c"> **/ <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right";>Close</a> KWL-Infos <br/><br/> /** Formatierungsdrama, Text links + rechts nicht anders gelöst bekommen, Popup spielt verrueckt **/ <span style="float:left; width:100%; text-align: left;">Stufenbegrenzung<span style="float:right;">{{ basic.value('helios_lueftermin', 'ventilation.min_fanspeed')}}...{{basic.value('helios_lueftermax', 'ventilation.max_fanspeed') }}</span></span> <span style="float:left; width:100%; text-align: left;">WRGΔ> <span style="float:right;">{{ basic.float('helios_bypasstemperatur', 'ventilation.bypass_temp', '°C') }}</span></span> </div> </div>
):
Da kommt später noch mehr, ich bleibe dran - für heute habe ich aber die KWL und mein Gehirn erstmal genug gequält
.#!/usr/bin/env python # smarthome/logics/test.py # Functions for extending the smarthome.py Helios plugin - feel free to use / modify # Rev. 2014-11-14 by René Jahncke aka Tom Bombadil of https://knx-user-forum.de/smarthome-py # Functions: # 1) Made for UZSU: Fan speed change incl level 0 for standby mode. Requires UZSU + dummy variable. # 2) Stoßlüftung mit konfigurierbarer Zeit + automatischer Einstellung des vorherigen Wertes am Ende # (aka "Der Standard-Stoßlüftungsmodus funktioniert schon, ist aber doof") # 3) Sommer-Hitzemodus: Auto-Aus-An ab xx °C und bei Aussentemperatur < oder > Innentemperatur # Optionale Idee: Luftaustausch (Stoßlüftung) nachts um 0x Uhr, aber noch kein Plan dafür # Umsetzung noch nicht bis zum Ende durchdacht import time trigger_source = trigger['source'] trigger_value = trigger['value'] if trigger_source == "ventilation.fanspeed_dummy": ########### 1) Fan speed change ############ if sh.ventilation.power_state() == 1: ## Ventilation is currently ON if trigger_value == 0: # Received fan speed 0 -> switch to standby sh.ventilation.power_state(0) logger.debug("Ventilation switched OFF") else: if trigger_value > 0 and trigger_value < 9: # Received fan speed 1-8 -> set level sh.ventilation.fanspeed(trigger_value) logger.debug("Ventilation speed switched to " + str(trigger['value'])) else: ## Ventilation is on standby ("OFF") sh.ventilation.power_state(1) logger.debug("Ventilation switched ON") time.sleep(10) # Wait for ventilators to start sh.ventilation.fanspeed(trigger_value) logger.debug("Ventilation speed switched to " + str(trigger['value'])) # Known issues and limitations: # 1) Currently there is no documentation on how to switch on the remote control after standby. # So, when the ventilation is started by any bus member, the RC will remain OFF. When the RC # is switched on manually afterwards, it will automatically adjust fan speed to default value. # As the default value is usually not the same as the current fan speed, this behavior *will* # break the logic until the next fan speed adjustment takes place (by RC, UZSU, SV, whatever). # This problem is not related to this logic, but a general issue of ANY Helios plugin I found # for the various home automation systems like sh, Lox, oh and others.
). CONST_MAP_VARIABLES_TO_ID = {
"outside_temp" : {"varid" : 0x32, 'type': 'temperature', 'bitposition': -1, 'read': True, 'write': False },
"exhaust_temp" : {"varid" : 0x33, 'type': 'temperature', 'bitposition': -1, 'read': True, 'write': False },
"inside_temp" : {"varid" : 0x34, 'type': 'temperature', 'bitposition': -1, 'read': True, 'write': False },
"incoming_temp" : {"varid" : 0x35, 'type': 'temperature', 'bitposition': -1, 'read': True, 'write': False },
"bypass_temp" : {"varid" : 0xAF, 'type': 'temperature', 'bitposition': -1, 'read': True, 'write': True },
"fanspeed" : {"varid" : 0x29, 'type': 'fanspeed', 'bitposition': -1, 'read': True, 'write': True },
"max_fanspeed" : {"varid" : 0xA5, 'type': 'fanspeed', 'bitposition': -1, 'read': True, 'write': True },
"min_fanspeed" : {"varid" : 0xA9, 'type': 'fanspeed', 'bitposition': -1, 'read': True, 'write': True },
"power_state" : {"varid" : 0xA3, 'type': 'bit', 'bitposition': 0, 'read': True, 'write': True },
"bypass_disabled" : {"varid" : 0xA3, 'type': 'bit', 'bitposition': 3, 'read': True, 'write': True }[COLOR=red],
"boost_active" : {"varid" : 0x71, 'type': 'bit', 'bitposition': 5, 'read': True, 'write': True }[/COLOR]
}
[ventilation]
...
[COLOR=red] [[booster_mode]]
type = bool
helios_var = boost_active
visu_acl = rw[/COLOR]
[COLOR=red][FONT=Courier New]{{ basic.switch('helios_boost1', 'ventilation.booster_mode', icon1~'control_x.png', icon0~'vent_ventilation_level_3.png') }}[/FONT][/COLOR]
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.


Kommentar