Ankündigung

Einklappen
Keine Ankündigung bisher.

Auswertung Fensterkontakte darstellen

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

    [Codebeispiel] Auswertung Fensterkontakte darstellen

    Nachdem ich nix fertiges gefunden habe, habe ich ein wenig rumprobiert und ein Beispiel für die Visualisierung meiner Fensterzustände gemacht.

    Falls sonst auch sowas sucht, hier ein kleines Beispiel für eine Testseite, bei der man die Kontakte mit Checkboxen simulieren kann.

    items/smartvisu.conf
    Code:
    [Test]
        [[window3]]
            name = Window 3
            type = num
            visu_acl = rw
            eval    = sh.Test.window3.side1_locked()*4+sh.Test.window3.side1_tilt()*2+sh.Test.window3.side2_closed()
            eval_trigger = Test.window3.side1_locked | Test.window3.side1_tilt | Test.window3.side2_closed
            [[[side1_locked]]]
                name = Window 3 Side1 locked
                type = bool
                visu_acl = rw
            [[[side1_tilt]]]
                name = Window 3 Side1 tilt
                type = bool
                visu_acl = rw
            [[[side2_closed]]]
                name = Window 3 Side2 closed
                type = bool
                visu_acl = rw
    Und der zugehörige Teil der Seite

    Code:
    {{ basic.checkbox('cbW3S1locked',     'Test.window3.side1_locked', 'Flügel 1 verriegelt') }} 
    {{ basic.checkbox('cbW3S1unlocked', 'Test.window3.side1_tilt', 'Flügel 1 gekippt') }} 
    {{ basic.checkbox('cbW3S2closed',     'Test.window3.side2_closed', 'Flügel 2 geschlossen') }} 
    <br>
    ({{ basic.value('Test.window3', 'Test.window3') }}) 
    {{ basic.symbol('Window3_closed', 'Test.window3', 'Verriegelt', icon1~'fts_window_2w.png', 5) }} 
    {{ basic.symbol('Window3_s1open', 'Test.window3', 'Flügel 1 offen', icon1~'fts_window_2w_open_l.png', 1) }} 
    {{ basic.symbol('Window3_s1tilt', 'Test.window3', 'Flügel 1 gekippt', icon1~'fts_window_2w_tilt_l.png', 3) }} 
    {{ basic.symbol('Window3_s2open', 'Test.window3', 'Flügel 2 offen', icon1~'fts_window_2w_open_r.png', 4) }} 
    {{ basic.symbol('Window3_open', 'Test.window3', 'beide offen', icon1~'fts_window_2w_open_lr.png', 0) }} 
    {{ basic.symbol('Window3_s1tilts2open', 'Test.window3', 'Flügel 1 gekippt / Flügel 2 0ffen', icon1~'fts_window_2w_tilt_l_open_r.png', 2) }}
    Das Beispiel simuliert meine 3 Reed-Kontakte im Fenster, und rechnet diese in eine Zahl 0-7 um, die Seite stellt dann die entsprechenden Zustände als Icons dar.

    Oder hätte es eine einfachere Lösung dafür gegeben?

    lg, chris

    #2
    Es geht auch einfacher:

    smartVISU Documentation v2.7

    und einfach mehrere Items angeben:

    {{ basic.symbol('s7', ['bath_light_switch', 'bath_rtr_state']) }}

    Gruss
    Join smartVISU on facebook. Web: smartvisu.de.
    Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

    Kommentar


      #3
      ja, aber damit kann ich doch nur AND und ODER verknüpfungen machen, oder?

      Hatte ich erst auch probiert, aber nachdem ich nicht rausgefunden habe wie ein NOT geht, habe ich das gleich ins SH verlagert

      Kommentar


        #4
        Ja stimmt.

        Gruss
        Join smartVISU on facebook. Web: smartvisu.de.
        Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

        Kommentar


          #5
          Ich habe mir ein eigenes Widget für Fenster / Tür bzgl Rolladensteuerung und Anzeige des Geöffnet Status gebaut. Bei Bedarf kann ich auch gerne mal ein Bild und den Code bereitstellen.

          Gesendet von meinem GT-I9100 mit Tapatalk

          Kommentar


            #6
            Zitat von TCr82 Beitrag anzeigen
            Ich habe mir ein eigenes Widget für Fenster / Tür bzgl Rolladensteuerung und Anzeige des Geöffnet Status gebaut. Bei Bedarf kann ich auch gerne mal ein Bild und den Code bereitstellen.

            Gesendet von meinem GT-I9100 mit Tapatalk

            Das wäre super!

            Kommentar


              #7
              Würde mich auch interessieren, bitte - danke

              Kommentar


                #8
                Bild kommt hier :
                uploadfromtaptalk1390418218487.jpg

                Also das hier habe ich in meiner my_widgets.html eingetragen:
                Code:
                {% macro rolladen(id, txt, gad_move, gad_stop, gad_pos, gad_lock, gad_saved, gad_open, open_txt, min, max, step) %}
                    {% import "basic.html" as basic %}
                    {% set uid = uid(page, id) %}
                
                    <div class="myblind">
                        <table align="center" cellpadding="0">
                {% if txt %}
                        <tr>
                            <td colspan="3" align="center">&nbsp;{{ txt }}&nbsp;</td>
                        </tr>
                {% endif %}
                        <tr>
                            <td valign="top">
                                <div class="set">{{ basic.button(id~'_up', gad_move, '', 'arrow-u', 0) }}</div></td>
                            <td rowspan="3" align="center" class="pos">
                                {{ basic.slider(id, gad_pos, min, max, step, 'vertical') }}</td>
                            <td valign="top">
                                {% if gad_saved %} <div>{{ basic.button(id~'_saved1', gad_saved, 'Pos1', 'grid', 0) }} </div>{% endif %}
                            </td>
                        </tr>
                        <tr>
                            <td valign="center">
                                {% if gad_stop %} <div class="set">{{ basic.button(id~'_stop', gad_stop, '', 'delete', 1) }}</div> {% endif %}</td>
                            <td valign="center">
                                {% if gad_lock %} <div>{{ basic.switch(id~'_lock1', gad_lock, icon1~'secur_locked.png', icon0~'secur_open.png') }}</div> {% endif %}</td>
                        </tr>
                        <tr>          
                            <td valign="bottom">
                                <div class="set">{{ basic.button(id~'_down', gad_move, '', 'arrow-d', 1) }}</div></td>
                            <td valign="bottom">
                                {% if gad_saved %} <div>{{ basic.button(id~'_saved2', gad_saved, 'Pos2', 'grid', 1) }} </div>{% endif %}</td>
                        </tr>
                        <tr>
                            <td colspan="3" align="center">&nbsp;{% if gad_open %}
                                {{ basic.symbol(id~'_symbol1', gad_open, open_txt~' offen', icon1~'fts_window_1w_open.png') }}
                                {{ basic.symbol(id~'_symbol2', gad_open, open_txt~' geschlossen', icon0~'fts_window_1w.png', 0) }}
                                {% endif %}&nbsp;</td>
                        </tr>
                        </table>
                    </div>
                
                {% endmacro %}
                damit das geladen wird habe ich das in der rooms.html über dem extends "base.html"
                Code:
                {% import "my_widgets.html" as my_widgets %}
                und hier noch die visu.css
                Code:
                table.myStyle {
                    width: 100%;
                    margin: 0;
                }
                td.myStyle {
                    padding-left: 4px;
                    text-align: left;
                    vertical-align: top;
                }
                h1.myStyle {
                    font-size: 10pt;
                }
                div.myStyle {
                    padding-left: 8px;
                    height: 35px;
                }
                div.myvCenter {
                    display: table-cell;
                    vertical-align: middle;
                }
                td.myvCenter {
                    vertical-align: middle;
                }
                .myblind .pos {
                    width: 50px;
                }
                .myblind .pos input.ui-input-text.ui-slider-input {
                   margin-bottom: 10px;
                }
                .myblind .pos div.ui-slider-vertical { 
                    margin: 0 2% 0 10px;
                }
                .myblind .pos div.ui-slider-track-vertical {
                    margin: 0;
                    height: 95px;
                }
                Und Benutz habe ich es dann so:

                Code:
                        [[[rolladentuer]]]
                            name = Küche Tür
                            sv_widget = {{ my_widgets.rolladen('item', '', 'item.move', 'item.stop', 'item.pos', 'item.lock', '', 'item.open', 'Tür') }}
                            sv_item_type = rollos
                
                            [[[[move]]]]
                                type = bool
                                visu_acl = rw
                                enforce_updates = yes
                                knx_dpt = 1
                                knx_send = 3/0/130
                            [[[[stop]]]]
                                type = bool
                                visu_acl = rw
                                enforce_updates = yes
                                knx_dpt = 1
                                knx_send = 3/1/130
                            [[[[pos]]]]
                                type = num
                                visu_acl = rw
                                enforce_updates = yes
                                knx_dpt = 5
                                knx_listen = 3/3/130 | 1/3/1 | 1/3/2
                                knx_send = 3/2/130
                                knx_init = 3/3/130
                            [[[[referenz]]]]
                                type = bool
                                visu_acl = rw
                                knx_dpt = 1
                                knx_send = 3/4/130
                            [[[[lock]]]]
                                type = bool
                                visu_acl = rw
                                enforce_updates = yes
                                knx_dpt = 5
                                knx_listen = 3/5/130 | 1/3/3 | 1/3/7
                                knx_send = 3/5/130
                                knx_init = 3/5/130
                            [[[[open]]]]
                                name = Tür
                                type = bool
                                visu_acl = ro
                                sqlite = true
                                knx_dpt = 1
                                knx_listen = 0/0/130
                                knx_init = 0/0/130

                Kommentar

                Lädt...
                X