Ankündigung

Einklappen
Keine Ankündigung bisher.

Erweiterung Helios / Vallox Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zitat von MotteX Beitrag anzeigen
    Hallo Tom,

    Anbei der LOG mit den Fehlermeldungen, wo muss ich dafür ansetzen ?

    Danke

    Gruß Reinhold
    Hallo Reinhold,

    Uffff, die Fehlermeldung mit dem 'Bool has no timeout' sagt mir nichts.

    Lad Dir am besten nochmal das komplette Package in der letzten 'offiziellen' Fassung (wie es hier verlinkt ist) und installiere alles in die angegebenen Ordner.

    Danach musst Du das Plugin noch "einbinden" (smarthome/etc/plugin.conf) - bei mir sieht's so aus:

    Code:
    [helios]
        class_name = Helios
        class_path = plugins.helios
        tty = /dev/ttyUSB0
        cycle = 60 # default 300 seconds
     
    [uzsu]
       class_name = UZSU
       class_path = plugins.uzsu
    Damit sollte das Plugin in smarthome.py schonmal laufen. Für die Anzeige in der smartVisu an beliebiger Stelle den dazugehörigen Aufruf einbinden, wie in smartVISU/widgets/helios.html beschrieben. Bei mir z.B. direkt in der smartvisu/pages/(Name_des_aktuellen_templates)/index.html:

    Code:
     {% import "helios.html" as helios %}
     {{ helios.show_widget('EC300Pro', true, 'Kontrollierte Wohnraumlüftung') }}
    Hoffe das hilft Dir,
    /tom

    Kommentar


      Hätte nicht jemand Lust das Plugin in SmarthomeNG zu integrieren? Mir fehlen die Kenntnisse.

      Kommentar


        Ich hab keinen Plan, wie das geht, aber wenn die shNG-Entwickler das einbinden wollen (ich nehme mal an, viel mehr als copy-paste ist nicht notwendig) - Feuer frei von meiner Seite, der Download zu den letzten Sourcen ist in #132 nochmal verlinkt.

        marsellus : ich geh mal davon aus, dass Du als Entwickler des ursprünglichen Plugins auch nichts dagegen hast?

        Wenn's draussen wieder kälter wird, wird es vermutlich ein größeres Update und eine Doku für den sh.py-Teil geben, in dem das neue Items-File voll eingebettet und funktionsfähig ist, siehe #132. Die Weiterentwicklung der Visualisierung innerhalb der smartVisu (das war der deutlich aufwendigere Teil von beidem) klemm ich mir vorerst ...

        /tom

        Kommentar


          Von meiner Seite spricht nichts dagegen. Lizenz ist GPLv3, von daher gern...ich komme nur aktuell nicht dazu. Aber der nächste Winter kommt mit Sicherheit!

          /Marcel

          Kommentar


            Hallo Tom,

            danke für deine Beschreibung, ich habe deine verlinkten Daten nochmals runtergeladen und direkt auf den Raspberry ersetzt / eingebunden. Auch die Plugin.conf habe ich so wie du eingebunden, beim Code bin ich mir nicht sicher ob dieser an der richtigen stelle ist.

            Aber leider bekomme ich beim smarthome.log schon wieder eine menge an Fehlern, auch wenn es diesmal andere sind.

            Angehängte Dateien

            Kommentar


              Hallo Reinhold,

              das sieht schon eher nach 'meinen' Fehlermeldungen aus. ;-) Sie sind aber nicht elementar - das Plugin scheint zu laufen.

              Kurze Erklärung: Ich hab damals einen universellen Errorhandler gebaut, den ich auch für weitere Geräte nutzen kann, und in der Lernphase viel 'gebastelt' - mit Child-Objekten, Stringketten in Listen und Durchreichen von Strings in Arrays. Vermutlich lief in der Version aus dem zip-File noch irgendwas schief. Der Errorhandler wird aber in dieser Version noch gar nicht verwendet, zumindest nicht außerhalb des Debug-Modus. Somit alles im grünen Bereich.

              Um die Fehlermeldungen wegzubekommen:
              Bist Du sicher, dass Du auch die items/helios.conf überschrieben hast (nimm bitte nicht die 'neue', sondern die aus dem Paket)?
              Bekommst Du ein Bild in der Visu wie in #132 gezeigt (das Design war damals noch etwas anders)?

              Alternativ das gesamte Item ventilation.errorhandler mit # auskommentieren (inklusive aller sub-items). Dann ist Ruhe. Werte kommen wohl schon jetzt von Deiner Anlage, sonst wären da mehr Fehler.

              /tom

              Kommentar


                Hallo Tom,

                danke für deine Erklärung, in der VISU bekomme ich mittlerweile ein Bild, aber leider keine Werte....
                Den ventilation.errorhandler habe ich rauskommentiert, aber leider sind nun wieder die Fehler wie im Beitrag 133 von mir. Ich weiß aktuell nicht was ich hier noch machen kann, der RS485 läuft 100% da ich diesen unter Windows mit Valloxserial nutzen und die Anlage steuern kann.


                Gruss Reinhold
                Zuletzt geändert von MotteX; 16.08.2016, 19:41. Grund: Email entfernt

                Kommentar


                  Hallo Reinhold,

                  TeamViewer wird heute und morgen leider nix - aber siehe anderen Thread (lass uns da weiterdiskutieren). Für mich scheint es eher ein Installationsproblem des Raspis bzw. ein Rechteproblem zu sein. Hast Du in der Visu in den Einstellungen auf den sh.py-Treiber geschaltet?

                  /tom

                  Kommentar


                    Halo Tom,

                    Zitat von Tom Bombadil Beitrag anzeigen
                    Ich hab keinen Plan, wie das geht, aber wenn die shNG-Entwickler das einbinden wollen (ich nehme mal an, viel mehr als copy-paste ist nicht notwendig) - Feuer frei von meiner Seite, der Download zu den letzten Sourcen ist in #132 nochmal verlinkt.

                    marsellus : ich geh mal davon aus, dass Du als Entwickler des ursprünglichen Plugins auch nichts dagegen hast?
                    Am sinnvollsten ist es, wenn marsellus die Änderungen in sein Plugin integriert und dann einen Pull Request stellt. Sonst geistern verschiedene Varianten rum.

                    Übrigens: Ich habe im Post #132 keinen Link zu den Sourcen entdecken können.
                    Viele Grüße
                    Martin

                    There is no cloud. It's only someone else's computer.

                    Kommentar


                      Zitat von Msinn Beitrag anzeigen
                      Übrigens: Ich habe im Post #132 keinen Link zu den Sourcen entdecken können.
                      Hallo Martin,
                      Pardon, hätte #136 heißen müssen, mein Fehler.
                      /tom

                      Kommentar


                        Hi,

                        ich würde gerne meine Helios KWL EC 500 W L hiermit nutzen. Hat das schon jemand erfolgreich zum Laufen bekommen?
                        Wenn ich es richtig im Handbuch gelesen habe müsste es der RJ10 Digital Port (Pin 2 für BUS A, Pin 3 für BUS B und Pin 4 für GND). Außerdem muss der Jumper JP1 entfernt werden...
                        Bevor ich bastle, wäre es gut jemand zu haben, der das bestätigen könnte.

                        Danke vorab!

                        Grüße,
                        jes

                        Kommentar


                          Hallo Jes,

                          wenn ich mich richtig erinnere, wurde bei den neuen W-Modellen das Protokoll geändert (längere Protokollzeilen). Das Plugin wird somit ohne Umprogrammierung nicht funktionieren.

                          /tom

                          Kommentar


                            Hallo Tom,

                            ich hätte noch ein paar Fragen zu deinen Plugin.

                            - Warum wird bei mir dieses rote Dreieck angezeigt ? Ist das normal ?
                            - Kannst du mir kurz die Buttom unten erklären ? Hellios und Easy
                            - Im Interactive Button ist die Stoßlüftung mit integriert, aber wie löse ich diese aus ?
                            - Ist es im Infomenü normal das bei Zuluft- und Abluftventilator 0 steht ?

                            Danke für deine Mühen

                            Gruß Reinhold
                            Angehängte Dateien

                            Kommentar


                              Hallo Reinhold,

                              das Dreieck zeigt einen notwendigen Filterwechsel an. Die Rückstellung geht in der Dir vorliegenden Version nur am Bedienteil (kommt mit der nächsten Version).

                              Der 'Interactive boost' ist ebenfalls noch nicht fertig. Bitte vorerst den in der Anlage fest eingebauten Modus verwenden. Dazu den Debugmodus des Widgets unter /var/WWW/smartvisu/widgets/Helios.html wie folgt ändern:

                              Code:
                               {% set debug_mode = [I][COLOR=#FF0000]false[/COLOR][/I] %}                           /** additional output (debugging) **/
                               {% set documentation_mode = [I][COLOR=#FF0000]false[/COLOR][/I] %}                  /** for screenshots only **/
                               {% set boost_mode = '[COLOR=#FF0000][I]1[/I][/COLOR]' %}                                 /** 1=Helios, 2=Logic fixed, 3=Logic interactive **/
                              Die Ventilatoren sind wie von Vallox dokumentiert abgebildet. Wir haben später erst herausgefunden, dass die Register invertiert sind (0=an, 1=aus), und die Doku an dieser Stelle schlichtweg falsch ist. Ist in der neuen Version schon gefixed.

                              /tom

                              Edit: Nur der Vollständigkeit halber - boost mode = Stosslüftung bzw. Kaminlüftung.
                              Zuletzt geändert von Tom Bombadil; 18.08.2016, 21:22.

                              Kommentar


                                Hm ok, aber meine Helios.html sieht einwenig anders aus:

                                Code:
                                /**
                                 * -------------------------------------------------------------------------------------------------
                                 *
                                 * Functions:   Visualization of a Helios controlled air system (Helios ECxxxPro)
                                 *              Also works for various Vallox devices
                                 *
                                 * Requires:    Ready-to-use smarthome.py with up-and-running Helios plugin (see there)
                                 *                - Updated helios.conf in smarthome/items (items config)
                                 *                 - Updated logic.conf in smarthome/etc (logics config)
                                 *                - Updated helios_logics.py in smarthome/logics (contains related logics)
                                 *                Ready-to-use smartVISU with UZSU widget
                                 *
                                 * Install:     Copy this file to helios_base_dir (default: smartVISU/widgets/)
                                 *              Copy images to helios_pic_dir (default: smartVISU/pics/helios/)
                                 *
                                 * Usage:        Add the following lines your smartVISU's html:
                                 *
                                 *                {% import "helios.html" as helios %}
                                 *                {{ helios.show_widget(id, use_uzsu, title) }}
                                 *
                                 *                Parameters:
                                 *                 id       - Unique device id (device name recommended - no spaces!)
                                 *                use_uzsu - true / false (installing UZSU first is highly recommended)
                                 *                title    - Optional title above the image
                                 *
                                 *                Example:
                                 *                {% import "helios.html" as helios %}
                                 *                {{ helios.show_widget('EC300Pro', true, 'Kontrollierte Wohnraumlüftung') }}
                                 *
                                 * -------------------------------------------------------------------------------------------------
                                 **/
                                
                                {% macro show_widget(id, use_uzsu, title) %} /** ---------- The main widget -------------------- **/
                                
                                    /** Preparations **/
                                    {% import "basic.html" as basic %}                                   /** don't touch these 3 **/
                                    {% import "widget_uzsu.html" as uzsu %}
                                    {% set uid = uid(page, id) %}
                                    
                                    {% set debug_mode = false %}                               /** additional output (debugging) **/
                                    {% set helios_base_dir = 'widgets' %}                     /** directory of this and css file **/
                                    {% set helios_pic_dir  = 'pics/helios' %}                          /** directory of own pics **/
                                
                                    
                                    /** Your own strings, translations and outputs, as you deem necessary: **/
                                    {% set level_popup_title =     'Lüftungsstufe einstellen  - aktuell: ' %}
                                    {% set uzsu_popup_title =      'KWL Schaltuhr' %}
                                    {% set uzsu_tester_title =     '[Vent][[Fan]][[[FanUZSU]]]-->' %}
                                    {% set booster_popup_title =   'KWL Stoßlüftung' %}
                                    {% set info_popup_title =      'Info / Status' %}
                                    {% set error_popup_title =     'Anlagenfehler ' %}
                                    
                                    /** Items for the Info Popup **/
                                    {% set info_popup_items = {
                                        'Lüfterstufe<sub>min</sub>':        'min_fanspeed',
                                        'Lüfterstufe<sub>max</sub>':        'max_fanspeed',
                                        'WRGΔ':                                'bypass_temp',
                                        'Filterreinigung in':                'clean_filter',
                                        'Letzter Fehler':                    'device_error',
                                        'Zuluftventilator (?)':                'fan_in_on_off',
                                        'Zuluftmotor %':                    'fan_in_percent',
                                        'Abluftventilator (?)':                'fan_out_on_off',
                                        'Abluftmotor %':                    'fan_out_percent',
                                        'Stoß-/Kaminlüftung':                'booster.built_in.mode',
                                        'Luftdurchsatz':                    'airflow',
                                        'Luftaustauschrate':                'air_exchange_rate',
                                        'Wärmeverlust (W)':                    'energy_loss',
                                        'Wärmegewinn (W)':                    'energy_saving',
                                        'Wirkungsgrad Æž<sub>therm</sub>':    'efficiency',
                                        'Stromverbrauch Ventilatoren':        'consumption_ventilators',
                                    } %}
                                    
                                    /** Error codes ---> muss in einem item stehen **/
                                    {% set error_popup_codes = {  
                                         0:    '0x00 Kein Fehler',
                                         1:    '0x01 reserviert',
                                         2:    '0x02 reserviert',    
                                         3:    '0x03 reserviert',    
                                         4:    '0x04 reserviert',    
                                         5:    '0x05 Zuluftsensor',
                                         6:    '0x06 CO2-Alarm',
                                         7:    '0x07 Frischluftsensor',
                                         8:    '0x08 Abluftsensor',
                                         9:    '0x09 Frostwarnung Wärmetauscher',
                                        10:    '0x0A Fortluftsensor'
                                    } %}
                                    
                                    /** Error descriptions ---> muss in einem item stehen **/
                                    {% set error_popup_descriptions = {  
                                         0:    '0x00 Keine Fehlerbeschreibung',
                                         1:    '0x01 reserviert',
                                         2:    '0x02 reserviert',    
                                         3:    '0x03 reserviert',    
                                         4:    '0x04 reserviert',    
                                         5:    'Fühler lose, Kurzschluss oder Temperatur >90°C gemessen.',
                                         6:    'CO2 > 5000 ppm seit 3 Minuten - Brandwarnung!',
                                         7:    'Fühler lose, Kurzschluss oder Temperatur >90°C gemessen.',
                                         8:    'Fühler lose, Kurzschluss oder Temperatur >90°C gemessen.',
                                         9:    'Außenluft <0°C / Zuluft <8°C - Frostgefahr Wasserheizregister!',
                                        10:    'Fühler lose, Kurzschluss oder Temperatur >90°C gemessen.'
                                    } %}
                                
                                    /** Error codes ---> muss in einem item stehen **/
                                    {% set error_popup_solutions = {  
                                         0:    '0x00 Kein Fehler',
                                         1:    '0x01 reserviert',
                                         2:    '0x02 reserviert',    
                                         3:    '0x03 reserviert',    
                                         4:    '0x04 reserviert',    
                                         5:    'Gerät ausschalten (Stecker ziehen), kurz warten und wieder einstecken.',
                                         6:    'Bitte Ursache für CO2-Alarm ermitteln oder ggf. Sensor überprüfen.',
                                         7:    'Gerät ausschalten (Stecker ziehen), kurz warten und wieder einstecken.',
                                         8:    'Gerät ausschalten (Stecker ziehen), kurz warten und wieder einstecken.',
                                         9:    'Der Alarm verschwindet automatisch bei normalisierten Temperaturen.',
                                        10:    'Gerät ausschalten (Stecker ziehen), kurz warten und wieder einstecken.'
                                    } %}
                                
                                
                                    
                                        
                                    /**    Bleibt der Fehler bestehen, verständigen Sie die Wartungsfirma für Überprüfung/Austausch des Fühlers. **/
                                        
                                
                                    
                                
                                    /** The style sheet **/
                                    <link type="text/css" rel="stylesheet" href="{{helios_base_dir}}/helios.css"/>
                                
                                    
                                    /** Let's go **/
                                    <div id='{{uid}}-main' class='block' style='text-align:left;'>
                                
                                    
                                        /** Title (if not left empty) **/
                                        {% if title %} <h2>{{ title }}</h2> {% endif %}
                                
                                        
                                        /** Display picture - not the smart way, but works **/
                                        <img id='{{uid}}-main-image' src="{{helios_pic_dir}}/controlled_air.png" alt="Ventilation System">
                                
                                        
                                        /** Place temperatures on top the picture **/
                                        <div class="helios_outside_temp"> {{ basic.float(id~'_outside_temp', 'ventilation.outside_temp', '°C') }}</div>
                                        <div class="helios_inside_temp">  {{ basic.float(id~'_inside_temp',  'ventilation.inside_temp',  '°C') }}</div>
                                        <div class="helios_exhaust_temp"> {{ basic.float(id~'_exhaust_temp', 'ventilation.exhaust_temp', '°C') }}</div>
                                        <div class="helios_incoming_temp">{{ basic.float(id~'_incoming_temp','ventilation.incoming_temp','°C') }}</div>
                                
                                        
                                        /** Place the level icon that triggers popup for level change (simulate a switch by using <a href>) **/
                                        /** basic.symbol will only place the 'active' icon from the loop - let's find out which is the right one: **/
                                        <div class="helios_level_icon">
                                            <a href="#popup_helios_level" data-rel="popup">
                                                {% for level in 1..8 %}
                                                    {% set itemid = id~'_display_level_'~level %}
                                                    {% set symbol = icon0~'edit_numeric_'~level~'.svg' %}
                                                    {{ basic.symbol(itemid, 'ventilation.fanspeed', '', symbol, level) }}
                                                {% endfor %}
                                            </a>
                                            /** Here's the corresponding popup for switching the level **/        
                                            <div id="popup_helios_level" class="helios_popup_levelswitch" data-role="popup" data-overlay-theme="c">
                                                <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right";>Close</a>
                                                <span class="ui-btn-up-c helios_popup_header">
                                                    {{ level_popup_title }} {{ basic.value(id~'_display_current_level', 'ventilation.fanspeed') }}
                                                </span>
                                                <br/>
                                                /** -----------> Todo: Aktuelle Stufe farbig einfärben ------------------------- **/
                                                {% for level in 1..8 %}
                                                    {% set itemid = id~'_set_level_'~level %}
                                                    {{ basic.button(itemid, 'ventilation.fanspeed', level, '', level, 'mini') }} &nbsp; &nbsp;
                                                    {% if level == 4 %} <br/><br/> {% endif %}
                                                {% endfor %}
                                            </div>
                                        </div>
                                        
                                
                                        /** Icon for error message (placed left of level switch whenever an error is up) --> noch auf 'ventilation.device_error' setzen**/
                                        <div class="helios_error_icon">
                                            {{ _self.symbol_notzero(id~'_error', 'ventilation.booster.logics.boost_duration', helios_pic_dir~'/message_attention.png', 'ERROR!', '#popup_helios_error') }}
                                            /** Here's the corresponding popup with the detailed error description **/        
                                            <div id="popup_helios_error" class="helios_popup_error" data-role="popup" data-overlay-theme="c">
                                                <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right";>Close</a>
                                                <span class="ui-btn-up-c helios_popup_header">
                                                    {{ error_popup_title }} {{ basic.value(id~'_error_level', 'ventilation.boost_remaining_a') }}
                                                </span>
                                                <br/>
                                                /** -----------> Todo: Fehlermeldung ------------------------- **/
                                                <red>Die KWL hat einen Fehler gemeldet:</red>
                                                {{ basic.value('abcdefa', 'ventilation.error_handler.error_string.code') }}<br/>
                                                Beschreibung:<br/>
                                                {{ basic.value('abcdefg', 'ventilation.error_handler.error_string.description') }}
                                                <br/><br/>
                                                Mögliche Ursachen:<br/>
                                                {{ basic.value('abcdefh', 'ventilation.error_handler.error_string.cause') }}
                                                <br/><br/>
                                                Fehlerbehebung:<br/>
                                                {{ basic.value('abcdefi', 'ventilation.error_handler.error_string.solution') }}
                                                
                                            </div>
                                        </div>        
                                
                                        
                                        /** Icon for filter cleaning (placed right of level switch whenever cleaning is due) **/
                                        <div class="helios_filterchange_icon">        
                                            {{ basic.symbol(id~'_clean_filter', 'ventilation.clean_filter', '', helios_pic_dir~'/message_service.png', 0) }}
                                            /** -----------> Todo: Rücksetzen des Wertex auf xx Monate ------------------------- **/
                                        </div>
                                        
                                        
                                        /** Icons in the lower level next **/
                                
                                        /** Power on/off **/
                                        <div class="helios_power_switch">
                                            {{ basic.switch(id~'_power_state', 'ventilation.power_state', icon1~'control_on_off.png', icon0~'control_on_off.png') }} &nbsp; &nbsp;
                                        </div>
                                        
                                        
                                        /** Bypass on/off **/
                                        <div class="helios_bypass_switch">
                                            {{ basic.switch(id~'_bypass_state', 'ventilation.bypass_disabled', icon1~'sani_floor_heating.png', icon0~'sani_floor_heating.png') }} &nbsp; &nbsp;
                                        </div>
                                        
                                        
                                        /** Timer popup (UZSU) **/
                                        {% if use_uzsu %}
                                            <div class="helios_uzsu_switch">
                                                {{ uzsu.uzsu_icon(id~'_fanspeed_timer', 'ventilation.fanspeed.uzsu_timer', ' ','0','','','num','An','Aus') }}
                                            </div>        
                                        {% endif %}
                                
                                        
                                        /** Original Helios booster switch - use with care, cannot be deactivated once started - "helios mode" **/
                                        <div class="helios_booster_switch_helios">
                                            {{ basic.switch(id~'helios_boost_builtin', 'ventilation.booster.built_in.on_switch','', icon0~'vent_ventilation_level_3.png') }}
                                            </br><small>&nbsp;&nbsp;Helios</small>
                                            /** -----------> Todo: Bei Restzeit > 0 hier statt des Icons die verbleibende Zeit mittels basic.value einblenden ------------------- **/
                                        </div>
                                
                                        
                                        /** Use this one for logic-triggered booster mode - "easy mode" **/
                                        <div class="helios_booster_switch_easy">
                                            {{ basic.switch(id~'helios_boost_logic1', 'ventilation.booster.logics.switch', icon1~'control_x.png', icon0~'vent_ventilation_level_3.png') }}        
                                            </br><small>&nbsp;&nbsp;&nbsp;&nbsp;Easy</small>
                                            /** -----------> Todo: Restzeit einblenden ------------------- **/
                                        </div>
                                        
                                        
                                        /** Use this one for logic-triggered booster mode - "interactive mode" with popup **/
                                        <div class="helios_booster_switch_interactive">        
                                            <a href="#popup_interactive_booster" data-rel="popup"><img src="icons/ws/vent_ventilation_level_3.png" class="icon" /** onload="set_duration(2700) **/"></a>
                                            </br><small>Interactive</small>
                                            /** -----------> Todo: Popup fertigstellen, Restzeit einblenden **/
                                        </div>
                                
                                        
                                        /** Info popup **/
                                        <div class="helios_info_button">
                                            <a href="#popup_helios_info" data-rel="popup"><img src="icons/ws/message_info.png" class="icon"></a>
                                        </div>
                                        <div id="popup_helios_info" data-role="popup" class="helios_popup_info" data-overlay-theme="c">
                                            <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right";>Close</a>
                                            <span class="ui-btn-up-c helios_popup_header"> {{ info_popup_title }} </span>
                                            {% autoescape false %}
                                                {% for title,item in info_popup_items %}
                                                    <span class="helios_infotable">{{ title }}<span style="float:right;">{{ basic.value(id~'_info_'~item, 'ventilation.'~item ) }}</span></span>
                                                {% endfor %}
                                            {% endautoescape %}
                                        </div>
                                        
                                        
                                        /** Quick 'n dirty UZSU logic testing tool: Simulate function of timer by triggering corresponding variable by hand **/
                                        /** Important - variable currently not yet initialized properly, only works after 1st trigger! **/
                                        {% if debug_mode %}
                                            <div class="helios_uzsutest_button"><a href="#popup-test-uzsu" data-rel="popup">UZSU Test</a></div>
                                            /** The popup **/
                                            <div id="popup-test-uzsu" class="helios_popup_uzsutest" data-role="popup" data-overlay-theme="c">
                                                <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right";>Close</a>
                                                <span style="float:center;" class="ui-btn-up-c">{{ uzsu_tester_title }} {{ basic.value('helios_uzsu_tool', 'ventilation.fanspeed.fanspeed_uzsu') }}</span>
                                                <br/>
                                                {% for level in 0..8 %}
                                                    {% set itemid = id~'_test_level_'~level %}
                                                    {{ basic.button(itemid, 'ventilation.fanspeed.fanspeed_uzsu', level, '', level, 'mini') }} &nbsp; &nbsp;
                                                    {% if level == 0 or level == 4 %} <br/><br/> {% endif %}
                                                {% endfor %}
                                                <br/>
                                            </div>
                                        {% endif %}        
                                
                                
                                        
                                        /** ---------> aktuelle Arbeiten -------------------------------------------------------------------------------------------------------- **/
                                
                                        /** Here's the popup for the interactive booster mode **/
                                        <div id="popup_interactive_booster" data-role="popup" class="helios_popup_booster_interactive" data-overlay-theme="c">
                                            <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right";>Close</a>
                                            <span style="float:center;" class="ui-btn-up-c">{{ booster_popup_title }}</span>
                                            <br/>
                                
                                            <table><colgroup><col width=20% float="left"><col width=79% float="right"></colgroup>
                                                <tr>
                                                    <td>
                                                        Dauer:{% if debug_mode %}<br/>{{ basic.value(id~'_boost_duration_debug', 'ventilation.booster.logics.boost_duration') }}{% endif %}
                                                    </td>
                                                    <td>
                                                        {{ _self.radiogroup(id~'_boost_duration', 'ventilation.booster.logics.boost_duration', ['15\'','30\'','45\'','1h','90\'','2h'], [900,1800,2700,3600,5400,7200]) }}
                                                    </td>
                                                </tr>
                                
                                                <tr>
                                                    <td>
                                                        Anheizen:
                                                        {% if debug_mode %}<br/><small><i>{{ basic.value(id~'_fireplace_duration_debug', 'ventilation.booster.logics.fireplace_duration') }}</i></small>{% endif %}
                                                    </td>
                                                    <td>
                                                        {{ _self.radiogroup(id~'_fireplace_duration', 'ventilation.booster.logics.fireplace_duration', ['Aus','15\'','30\''], [0,900,1800]) }}
                                                        <br/>
                                                        {{ _self.value_notzero('ein_Test', 'ventilation.booster.logics.boost_duration', '\'','') }}
                                                        /** {{ _self.symbol_notzero('noch_ein_Test', 'ventilation.boost_remaining_a', helios_pic_dir~'/message_attention.png', 'MY ERROR TEXT!', 'http://www.google.de') }} **/
                                                    </td>
                                                </tr>
                                            </table>
                                            
                                            <br/><br/>
                                            
                                            <div class="helios_infotable">
                                                Stufe:
                                                {{ basic.slider(id~'_boost_level_slider', 'ventilation.booster.logics.level', 1, 8, 1) }}
                                            </div>
                                                
                                            <br/><br/>
                                
                                            Kamin: Abbluft-Motor herunterregeln auf xx%.
                                            <br/>
                                            <br/>
                                            [Start-Button]<br/>
                                            <br/>
                                        </div>
                                
                                    </div>
                                
                                {% endmacro %}
                                
                                {% macro radiogroup(id, gad, labels, vals) %} /** ---------- Radio button macro ---------------- **/
                                    {% set rid=uid(page,id) %}
                                    <span data-role="controlgroup" data-type="horizontal">
                                        {% for nr in 0..labels|length-1 %}
                                            <span id="{{rid}}-button-{{nr}}" btn-id="{{rid}}_radio_{{nr}}" data-widget="helios.radiobutton" data-item="{{gad}}" data-val="{{vals[nr]}}">
                                                <input type='radio' id='{{rid}}_radio_{{nr}}' name='{{rid}}_radio' value="{{labels[nr]}}" onclick="set_helios_value_{{id}}({{vals[nr]}})" data-mini="true">
                                                /** <input data-mini="true" type='radio' id='{{rid}}_radio_{{nr}}' name='{{rid}}_radio' value="{{labels[nr]}}" onclick="io.write({{gad}}, {{vals[nr]}})"> **/
                                                <label for='{{rid}}_radio_{{nr}}'>{{labels[nr]}}</label>
                                            </span>
                                        {% endfor %}
                                    </span>
                                    <script type="text/javascript">
                                        function set_helios_value_{{id}}(newval) {
                                            io.write('{{gad}}', newval);
                                //            // alert('{{gad}}' + ' -> ' + newval);
                                        }
                                        $(document).delegate('span[data-widget="helios.radiobutton"]', {
                                            'update': function(event, response) {
                                                if (response == $(this).attr('data-val')) {
                                                    var targetbtn = $(this).attr('btn-id');
                                                    $("input[name='{{rid}}_radio']:checked").removeProp("checked");
                                                    $('#' + targetbtn).prop("checked",true);
                                                    $('#' + targetbtn).click();
                                                }
                                            },
                                        });
                                    </script>
                                {% endmacro %}
                                 
                                
                                 
                                /**
                                * Displays an item value if not 0 or empty
                                * Useful for device alarm codes, count downs, timers (and probably more ...)
                                * Optionally displays a specific string in case item is 0 or empty
                                *
                                * @param id        a unique id for this widget
                                * @param gad       the gad/item
                                * @param unit      optional unit, like '\'' for remaining ' (minutes) in a count down
                                * @param zerostr   optional string if item is 0 or empty (like ---). by default a white space &nbsp;
                                */
                                {% macro value_notzero(id, gad, unit, zerostr) %}
                                    <span id="{{ uid(page, id) }}" data-widget="helios.value_notzero" data-item="{{ gad }}" data-unit="{{ unit }}" data-zero-val="{{ zerostr|default('&#160;') }}">[text]</span>
                                    <script type="text/javascript">
                                        $(document).delegate('span[data-widget="helios.value_notzero"]', {
                                            'update': function(event, response) {
                                                if (response !=0 && response !="") {
                                                    $('#' + this.id).html(response + $(this).attr('data-unit'));
                                                } else {
                                                    $('#' + this.id).html($(this).attr('data-zero-val'));
                                                }
                                            },
                                        });
                                    </script>
                                {% endmacro %}
                                
                                
                                /**
                                * Displays an icon if an item is not 0 or empty
                                * Useful for device alarm codes, count downs, timers (and probably more ...)
                                * Optionally displays a specific string as hint
                                * Optionally links to a URL or Popup window on click
                                *
                                * @param id        a unique id for this widget
                                * @param gad       the gad/item
                                * @param img       the icon
                                * @param hint      optional string for hint text
                                * @param link      optional link on click (use e.g. #mypopupname or http://www.mywebsite.com?args)
                                */
                                {% macro symbol_notzero(id, gad, img, hint, link) %}
                                    <span id="{{ uid(page, id) }}" data-widget="helios.symbol_notzero" data-item="{{ gad }}">[symbol]</span>
                                    <script type="text/javascript">
                                        $(document).delegate('span[data-widget="helios.symbol_notzero"]', {
                                            'update': function(event, response) {
                                                head = ''; tail = '';
                                                {% if link %} head = '<a class="ui-link" data-rel="popup" href="{{ link }}">'; tail = '</a>'; {% endif %}
                                                img = '<img class="icon" src="{{ img }}" title="{{ hint }}">';
                                                invis_img = '<img class="icon" src="{{ img }}" style="opacity:0">';
                                                if (response !=0 && response !="") {
                                                    $('#' + this.id).html(head + img + tail);
                                                } else {
                                                    $('#' + this.id).html(invis_img);
                                                }        
                                            },
                                        });
                                    </script>
                                {% endmacro %}

                                Den Debug Mode Wert finde ich noch die anderen aber leider nicht.
                                Zuletzt geändert von MotteX; 18.08.2016, 21:26.

                                Kommentar

                                Lädt...
                                X