Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues widget: Nur Aktive "Lampen" anzeigen + ausschalten ermöglichen

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

    Neues widget: Nur Aktive "Lampen" anzeigen + ausschalten ermöglichen

    Hallo zusammen!

    Bin begeisterter Benutzer von smartHome.py und smartVISU.
    Das sind zwei echt genial frameworks. Glückwunsch und DANKE an die Entwickler. Echt Gute Arbeit!!!

    Da mir in der smartVISU ein feature gefehlt hat, oder ich zumindest nicht direkt gesehen habe wie ich es mit bestehenden widgets umsetzen kann hab ich mir mal mein eigenes widget geschrieben. Damit ich aber nicht immer nur von eurer Arbeit profitieren kann sondern ihr auch mal was zurück bekommt möchte ich mein Widget hier mit euch teilen. Vielleicht findet ja der eine oder andere auch interresse daran.

    Erst mal eine kurze beschreibung was ich mit meinem widget bezwecken möchte:
    Auf der Startseite meiner Visu möchte ich eine Liste aller Lampen im Haus haben, die momentan an sind. Alle Lampen die derzeit aus sind interresieren mich nicht und sollen auch nicht angezeigt werden. Lampen die derzeit an sind sollen nicht nur angezeigt werden, sondern durch klicken sollte es auch möglich sein diese auszuschalten. Sind sie dann aus, sollten sie aus der Liste verschwinden.

    Dem widget habe ich bis lange den nichts aussagenden Namen "test" gegeben. Mir ist einfach noch kein besserer Name eingefallen.

    Nun zur Umsetzung des Widgets:
    In der basic.html habe ich folgendes hinzugefügt:

    Code:
    /**
    * A switch, build of two pics
    *
    * @param unique id for this widget
    * @param a gad/item
    * @param the text, printed when gad has value val (optional)
    * @param the pic for the 'on' state (optional)
    * @param the pic for the 'off' state (optional)
    * @param value send for the 'on' state (optional, default 1)
    * @param value send for the 'off' state (optional, default 0)
    */
    {% macro test(id, gad, txt, pic_on, pic_off, val_on, val_off) %}
    
        <span id="{{ uid(page, id) }}" data-widget="basic.test" data-item="{{ gad }}"
            data-val-on="{{ val_on|default('1') }}" data-val-off="{{ val_off|default('0') }}"
             data-pic-on="{{ pic_on|default(icon1~'control_on_off.png') }}"  data-pic-off="{{ pic_off|default(icon0~'control_on_off.png') }}"
             class="switch"><a><img class="icon" src="{{  pic_off|default(icon0~'control_on_off.png') }}" /></a>{{ txt}}  <br>   </span>
    
    {% endmacro %}
    In der widget.min.js habe ich folgendes hinzugefügt:

    Code:
    $(document).delegate('span[data-widget="basic.test"]',{
        update:function(d,a){
             $("#"+this.id+"  img").attr("src",a==$(this).attr("data-val-on")?$(this).attr("data-pic-on"):$(this).attr("data-pic-off"));
            if (a == $(this).attr('data-val-on')) {
                $('#' + this.id).show();
            } else {
                $('#' + this.id).hide();
            }
        },
        click:function(d){
             $("#"+this.id+"  img").attr("src")==$(this).attr("data-pic-off")?io.write($(this).attr("data-item"),$(this).attr("data-val-on")):io.write($(this).attr("data-item"),$(this).attr("data-val-off"))
        }
    });
    In der html Seite meiner VISU habe ich dann folgende Einträge benutzt:

    Für Lampen die angezeigt werden sollen wenn sie An sind und die beim Klicken ausgeschaltet werden sollen:

    Code:
    {{ basic.test('OG.Schlafzimmer.Licht.On', 'OG.Schlafzimmer.Licht',  'Schlafzimmer', icon1~'light_light.png', icon0~'light_light.png') }}  
    {{ basic.test('OG.Diele.Licht.On', 'OG.Diele.Licht', 'Diele OG', icon1~'light_light.png', icon0~'light_light.png') }}
    {{ basic.test('OG.Bad.LichtDecke.On', 'OG.Bad.LichtDecke', 'Bad', icon1~'light_light.png', icon0~'light_light.png') }}
    {{ basic.test('OG.Bad.LichtWand.On', 'OG.Bad.LichtWand', 'Bad Wand', icon1~'light_light.png', icon0~'light_light.png') }}
    ...
    Für Steckdosen die angezeigt werden sollen wenn sie aus sind und beim Klicken eingeschlatet werden sollen:

    Code:
    {{ basic.test('OG.Schlafzimmer.Steckdose1.Off',  'OG.Schlafzimmer.Steckdose1', 'Schlafzimmer 1',  icon1~'message_socket.png', icon0~'message_socket.png', '0', '1') }}  
    {{ basic.test('OG.Schlafzimmer.Steckdose2.Off',  'OG.Schlafzimmer.Steckdose2', 'Schlafzimmer 2',  icon1~'message_socket.png', icon0~'message_socket.png', '0', '1') }}  
    {{ basic.test('OG.Arbeitszimmer.Steckdose.Off',  'OG.Arbeitszimmer.Steckdose', 'Arbeitszimmer',  icon1~'message_socket.png', icon0~'message_socket.png', '0', '1') }}  
    ...
    Ich hoffe euch gefällt das Widget, für Namensvorschläge oder gar einen alternativen Lösungsansatz zu meinem Problem bin ich jederzeit offen.

    Danke euch nochmal für eure erstklassige Arbeit an smartHome.py und smartVISU.

    Dominik

    #2
    Wenn das klappt, gibts ein Bienchen mit Sternchen von mir!

    Genau so was habe ich seit Monaten versucht mit CV umzusetzen, mein Raspi mit SmartVisu läuft nur testhalber bei mir, das wäre jetzt endlich ein Anstoss komplett auf SmartVisu zu wechseln.

    Vielen Dank und Grüße
    David

    PS: was hälst du von "switchoff" oder "hideswitch" als Namen?!

    Kommentar


      #3
      Tolle Idee
      Wie wär's mit basic.shutoff

      Gruss Stephan

      Kommentar


        #4
        basic.activelist ? Ist ja eher ne Liste, schalten ist Bonus .
        Umgezogen? Ja! ... Fertig? Nein!
        Baustelle 2.0 !

        Kommentar


          #5
          Gibt es schon etwas neues zum Namen? Oder wann es in den offiziellen Zweig einfließen wird?

          Gruß
          René

          Kommentar


            #6
            Entschuldige bitte die späte Antwort. Ich bin momentan ein "wenig" aus-/übergelastet.

            Der Name "basic.activelist" gefällt mir eigentlich am besten.

            Bezüglich der Frage wann mein widget in den offiziellen Zweig einfliesst kann ich leider nicht beantworten. Das Widget ist meine erste Erweiterung zu smartVisu, die ich hier im Forum veröffentlich habe. Da es bis dato zum widget nicht wirklich negatives feedback gibt, würde ich mich natürlich auch freuen, wenn es in den offiziellen Zweig einfliessen würde.

            Allerdings weiss ich nicht, wie ich das anstellen soll. Vielleicht kann mir ja einer der aktiven Entwickler auf smartVisu hier weiterhelfen.

            Danke schonmal,

            Dominik

            Kommentar


              #7
              Hi Dominik,
              Zitat von drehm Beitrag anzeigen
              Entschuldige bitte die späte Antwort. Ich bin momentan ein "wenig" aus-/übergelastet.
              kein Problem
              Zitat von drehm Beitrag anzeigen
              Der Name "basic.activelist" gefällt mir eigentlich am besten.

              Bezüglich der Frage wann mein widget in den offiziellen Zweig einfliesst kann ich leider nicht beantworten. Das Widget ist meine erste Erweiterung zu smartVisu, die ich hier im Forum veröffentlich habe. Da es bis dato zum widget nicht wirklich negatives feedback gibt, würde ich mich natürlich auch freuen, wenn es in den offiziellen Zweig einfliessen würde.

              Allerdings weiss ich nicht, wie ich das anstellen soll. Vielleicht kann mir ja einer der aktiven Entwickler auf smartVisu hier weiterhelfen.

              Danke schonmal,

              Dominik
              Das wäre prima ;-)

              Gruß
              René

              Kommentar


                #8
                Zitat von drehm Beitrag anzeigen
                Allerdings weiss ich nicht, wie ich das anstellen soll. Vielleicht kann mir ja einer der aktiven Entwickler auf smartVisu hier weiterhelfen.
                Dazu gibt es einen Gepinnten Beitrag hier im Forum:

                https://knx-user-forum.de/showthread.php?t=32885


                Gesendet von meinem GT-I9100 mit Tapatalk

                Kommentar


                  #9
                  Die Idee habe ich aufgegriffen und sie mittels Logik abgebildet.
                  Zu finden ist meine Umsetzung unter https://github.com/mknx/smarthome/wi...mpen-ermitteln
                  Sobald das Plugin im offiziellen GitHub zu finden ist, werde ich es mir dennoch ansehen.

                  Gruß
                  René

                  Kommentar


                    #10
                    Hallo,

                    gibts eine Erklärung dazu, wie man die Logik aus dem Github ans Laufen bekommt?
                    Habe die light.conf ins Verzeichnis usr/smarthome/etc kopiert, das
                    '*.licht.*' in '*.Lampe.*' umbenannt (heißt bei mir so)

                    Die Zentral.conf ins Verzeichnis /usr/local/smarthome/items
                    und die OG.conf ebenfalls ins Verzeichnis /usr/local/smarthome/items
                    ....dann noch die HTML-Seite wie vorgegeben ergänzt und schon läuft's.......nicht ))

                    Grüße
                    Günther

                    Kommentar


                      #11
                      Keine Idee dazu?

                      Grüße
                      Günther

                      Kommentar


                        #12
                        Die Widget-Sache aus dem ersten Beitrag funktioniert sensationell. Vielen Dank dafür, echt ne sehr coole und "einfache" Lösung.

                        SchnickSchnuck - hast du die Variante mal probiert oder brauchst du unbedingt den Ansatz mit der Logik?

                        Kommentar


                          #13
                          Ja, die erste Variante funktioniert bei mir auch einwandfrei. Wollte eigentlich auf die Logik mal wechseln, nur die bekomme ich nicht ans Laufen....

                          Kommentar


                            #14
                            Meines Erachtens nach muss light.conf eigentlich light.py heißen und ins Logic Verzeichnis. In Logic.conf muss dann natürlich noch ein trigger rein.
                            In den Logfiles erkennt man dann auch was ;-)

                            Kommentar


                              #15
                              Widget im PopUp

                              Hallo,

                              auch ich habe das Widget in der Anwendung. Es funktioniert super. Nun möchte ich dieses Widget in ein PopUp "Individual size popup with a close button" integrieren.

                              Leider funktioniert es nicht. Es werden im Popup alle Lampen und nicht nur die aktiven angezeigt.

                              Hier mein Code:

                              Code:
                                      <a href="#popup3" data-rel="popup">
                                          <img class="icon" src="{{ icon1~'control_all_on_off.png' }}">
                                      </a>
                              
                                      <div id="popup3" data-role="popup" style="width:280px; height:200px;">
                                          <a href="#" data-rel="back" data-role="button" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a>
                                              {{ basic.test('Licht.Wohnzimmer.LED.OnOff', 'Licht.Wohnzimmer.LED.OnOff', 'LED an Decke', icon1~'light_led.png', icon0~'light_led.png') }}
                                              {{ basic.test('Licht.Wohnzimmer.Nische.OnOff', 'Licht.Wohnzimmer.Vorsatz_nische.OnOff', 'LED Nische', icon1~'light_led.png', icon0~'light_led.png') }}
                                              {{ basic.test('Licht.Wohnzimmer.Stedo_WZ.OnOff', 'Licht.Wohnzimmer.Stedo_WZ.OnOff', 'Stehleuchte', icon1~'light_floor_lamp.png', icon0~'light_floor_lamp.png') }}
                                      </div>
                              Kann mir jemand helfen?

                              DANKE

                              Kommentar

                              Lädt...
                              X