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>
#!/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