Ankündigung

Einklappen
Keine Ankündigung bisher.

Fensterkontakte inkl. gekippt (Logik)

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

  • macflei
    antwortet
    Zur Darstellung bei png's brauchst Du diese dann logischer weise in rot.
    Die Auswahl der anzuzeigenden Icons selber machst Du dabei dann im Widegt-Code.
    z.B. 'icons/Name.des.Ordner/status_away_1.png'

    Bei svg's kannst Du das via "stroke" und bei Beadarf "fill" in der css festelegen.

    Ich glaube in der Kurzanleitung wird es bald eine Anleitung zum Thema Einfärben der svg's geben. Icon-Pakete in erweiterter Form und in verschiedenen Farben (png) gibt es dort bereits.
    Ansonsten kannst Du die png auch selber machen. z.B. mit Gimp

    EDIT:
    @Höhlenbär
    Die Frage gehört aber eher in das sV-Forum.
    Vieleicht solltest Du Dir angewöhnen nicht die Thrads zu "kapern".

    Einen Kommentar schreiben:


  • melodoi
    antwortet
    Hi,

    kennt jemand eine solche Lösung für den Gira Homeserver. Die Besonderheit bei mir ist, das alle Fenster drei Kontake haben (gekippt, offen, Stulp offen).

    Danke
    Sylvio

    Einen Kommentar schreiben:


  • Höhlenbär
    antwortet
    Hallo,

    ich hätte da ach mal eine Frage.

    Wie bekomme ich denn die Symbole in Rot dargestellt (wie in Post #9)
    wo wird denn die Farbeinstellung getroffen. Und geht das nur mit den SVG`s ?

    Einen Kommentar schreiben:


  • MichaelBu
    antwortet
    Hallo,
    Schau dir mal das Beispiel aus Post 11 an. So habe ich es auch gemacht.

    Michael

    Einen Kommentar schreiben:


  • snoopy1309
    antwortet
    ...ich meinte natürlich Post #9

    Einen Kommentar schreiben:


  • snoopy1309
    antwortet
    Dynamische Statusanzeige

    Hallo Hendrik,
    vielen Dank für den Code der statischen Statusanzeige.

    Da ich ca. 35 überwachte Fensterflügel habe, hatte ich wegen der Übersicht an die dynamische Statusanzeige der "offenen" Fenster gedacht (siehe auch Bild im Post #8 von Martin).
    Kann mir jemand sagen, wie man dieses anstellt?

    Gruß Sönke

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Code:
    [Fenster]
      [[geschlossen]]
       type=bool
       [[[counter]]]
          type=num
          sqlite=true
    
          
    [eg]
        [[Fenster]]
          [[[geschlossen]]]
           type=bool
           [[[[counter]]]]
              type=num
              sqlite=true
    	   [[[geschlossen_invertiert]]]
           type=bool
           knx_send=10/3/0
           knx_dpt=1
           [[[[[counter]]]]]
              type=num
              sqlite=true
     	  [[Schuppen]]
            [[[Reed]]]
                [[[[Aussentuer]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/1
                        sqlite = true
                [[[[Innentuer]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/0
                        sqlite = true
                [[[[Fenster_links]]]]
                    [[[[[gekippt]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/3
                        sqlite = true
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/2
                        sqlite = true
                [[[[Fenster_rechts]]]]
                    [[[[[gekippt]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/5
                        sqlite = true
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/4
                        sqlite = true
        [[Flur]]
            [[[Reed]]]
                [[[[Hintertuer]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/6
                        sqlite = true
                [[[[Abstellkammer]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/7
                        sqlite = true
        [[Gaestebad]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[gekippt]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/9
                        sqlite = true
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/8
                        sqlite = true
        [[Kueche]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/10
                        sqlite = true
                [[[[Mikrowellenschrank]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/11
                        sqlite = true
        [[Esszimmer]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/15
                        sqlite = true
        [[Wohnzimmer]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/20
                        sqlite = true
        [[Arbeitszimmer]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/25
                        sqlite = true
        [[Gaestezimmer]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/31
                        sqlite = true
                    [[[[[gekippt]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/1/30
                        sqlite = true
    [og]
        [[Fenster]]
          [[[geschlossen]]]
           type=bool
           [[[[counter]]]]
              type=num
              sqlite=true
        [[Lina]]
            [[[Reed]]]  
                [[[[Fenster]]]]
                     type=num
                     eval=sh.og.Lina.Reed.Fenster_links.geschlossen()+2*sh.og.Lina.Reed.Fenster_rechts.geschlossen()
                     eval_trigger=og.Lina.Reed.Fenster_links.geschlossen()|og.Lina.Reed.Fenster_rechts.geschlossen()
                [[[[Fenster_links]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/0
                        sqlite = true
                [[[[Fenster_rechts]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/1
                        sqlite = true
        [[Schlafzimmer]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/11
                        sqlite = true
                    [[[[[gekippt]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/10
                        sqlite = true
        [[Till]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/15
                        sqlite = true
                    [[[[[gekippt]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/16
                        sqlite = true
        [[Kinderbad]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/20
                        sqlite = true
                    [[[[[gekippt]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/21
                        sqlite = true
        [[Dachterrasse]]
            [[[Reed]]]
                [[[[Fenster]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/25
                        sqlite = true
                    [[[[[gekippt]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/26
                        sqlite = true
        [[Elternbad]]
            [[[Reed]]]  
                [[[[Fenster]]]]
                     type=num
                     eval=sh.og.Elternbad.Reed.Fenster_links.geschlossen()+2*sh.og.Elternbad.Reed.Fenster_rechts.geschlossen()
                     eval_trigger=og.Elternbad.Reed.Fenster_links.geschlossen()|og.Elternbad.Reed.Fenster_rechts.geschlossen()
                [[[[Fenster_links]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/5
                        sqlite = true
                [[[[Fenster_rechts]]]]
                    [[[[[geschlossen]]]]]
                        type = bool
                        knx_dpt = 1
                        knx_cache = 8/2/6
                        sqlite = true
    Visu (Smartvisu, Quad-Design):
    Code:
    		<li data-icon="false">
    			<div class="nw_table">
    				<div class="nw_table_cell nw_border">Schuppen</div>
    				<div class="nw_table_cell">
    					<div class="nw_table">
    						<div class="nw_table_cell nw_border">{{
    							basic.symbol('eg.Schuppen.Aussentuerstatus1',
    							'eg.Schuppen.Reed.Aussentuer.geschlossen', '',
    							icon0~'fts_door_locked.svg', 1) }} {{
    							basic.symbol('eg.Schuppen.Aussentuerstatus2',
    							'eg.Schuppen.Reed.Aussentuer.geschlossen', '',
    							icon1~'fts_door_open.png', 0) }}</div>
    						<div class="nw_table_cell nw_border">L{{
    							basic.symbol('eg.Schuppen.Fenster_linksstatus1',
    							['eg.Schuppen.Reed.Fenster_links.geschlossen','eg.Schuppen.Reed.Fenster_links.gekippt'],
    							'', icon1~'fts_window_1w_open.png', 0, 'and') }} {{
    							basic.symbol('eg.Schuppen.Fenster_linksstatus2',
    							'eg.Schuppen.Reed.Fenster_links.geschlossen', '',
    							icon0~'fts_window_1w.svg', 1) }} {{
    							basic.symbol('eg.Schuppen.Fenster_linksstatus3',
    							'eg.Schuppen.Reed.Fenster_links.gekippt', '',
    							icon1~'fts_window_1w_tilt.png', 1) }} R{{
    							basic.symbol('eg.Schuppen.Fenster_rechtsstatus1',
    							['eg.Schuppen.Reed.Fenster_rechts.geschlossen','eg.Schuppen.Reed.Fenster_rechts.gekippt'],
    							'', icon1~'fts_window_1w_open.png', 0, 'and') }} {{
    							basic.symbol('eg.Schuppen.Fenster_rechtsstatus2',
    							'eg.Schuppen.Reed.Fenster_rechts.geschlossen', '',
    							icon0~'fts_window_1w.svg', 1) }} {{
    							basic.symbol('eg.Schuppen.Fenster_rechtsstatus3',
    							'eg.Schuppen.Reed.Fenster_rechts.gekippt', '',
    							icon1~'fts_window_1w_tilt.png', 1) }}</div>
    						<div class="nw_table_cell nw_border nw_min_landscape">
    							Flurtür {{ basic.symbol('eg.Schuppen.Innentuerstatus1',
    							'eg.Schuppen.Reed.Innentuer.geschlossen', '',
    							icon0~'fts_door.png', 1) }} {{
    							basic.symbol('eg.Schuppen.Innentuerstatus2',
    							'eg.Schuppen.Reed.Innentuer.geschlossen', '',
    							icon1~'fts_door_open.png', 0) }}</div>
    					</div>
    				</div>
    			</div>
    		</li> {{ listc.door_symbol('eg.Flur.Hintertuerstatus', 'Hintertür',
    		'eg.Flur.Reed.Hintertuer.geschlossen',
    		icon0~'fts_door_locked.svg',icon1~'fts_door_open.png')}} {{
    		listc.window_symbol('eg.Gaestebad.Fensterstatus', 'Gästebad',
    		'eg.Gaestebad.Reed.Fenster.geschlossen','eg.Gaestebad.Reed.Fenster.gekippt'
    		, icon1~'fts_window_1w_open.png',icon0~'fts_window_1w.svg',
    		icon1~'fts_window_1w_tilt.png')}} {{
    		listc.door_symbol('eg.Kueche.Fensterstatus', 'Küche',
    		'eg.Kueche.Reed.Fenster.geschlossen',
    		icon0~'fts_window_2w.svg',icon1~'fts_window_2w_open_l.png')}} {{
    		listc.door_symbol('eg.Esszimmer.Fensterstatus', 'Esszimmer',
    		'eg.Esszimmer.Reed.Fenster.geschlossen',
    		icon0~'fts_window_2w.svg',icon1~'fts_window_2w_open_l.png')}} {{
    		listc.door_symbol('eg.Wohnzimmer.Fensterstatus', 'Wohnzimmer',
    		'eg.Wohnzimmer.Reed.Fenster.geschlossen',
    		icon0~'fts_door.svg',icon1~'fts_door_open.png')}} {{
    		listc.door_symbol('eg.Arbeitszimmer.Fensterstatus', 'Arbeitszimmer',
    		'eg.Arbeitszimmer.Reed.Fenster.geschlossen',
    		icon0~'fts_door.svg',icon1~'fts_door_open.svg')}} {{
    		listc.window_symbol('eg.Gaestezimmer.Fensterstatus', 'Gästezimmer',
    		'eg.Gaestezimmer.Reed.Fenster.geschlossen','eg.Gaestezimmer.Reed.Fenster.gekippt'
    		, icon1~'fts_window_1w_open.png',icon0~'fts_window_1w.svg',
    		icon1~'fts_window_1w_tilt.png')}}
    		<li data-role="list-divider">Dachgeschoss</li> {{
    		listc.twin_window_symbol('og.Lina.Fensterstatus', 'Lina',
    		'og.Lina.Reed.Fenster' ,
    		icon0~'fts_window_2w.png',icon1~'fts_window_2w_open_lr.png',
    		icon1~'fts_window_2w_open_l.png', icon1~'fts_window_2w_open_r.png')}}
    		{{ listc.twin_window_symbol('og.Elternbad.Fensterstatus', 'Elternbad',
    		'og.Elternbad.Reed.Fenster' ,
    		icon0~'fts_window_2w.png',icon1~'fts_window_2w_open_lr.png',
    		icon1~'fts_window_2w_open_l.png', icon1~'fts_window_2w_open_r.png')}}
    		{{ listc.window_symbol('og.Schlafzimmer.Fensterstatus',
    		'Schlafzimmer',
    		'og.Schlafzimmer.Reed.Fenster.geschlossen','og.Schlafzimmer.Reed.Fenster.gekippt'
    		, icon1~'fts_window_1w_open.png',icon0~'fts_window_1w.svg',
    		icon1~'fts_window_1w_tilt.png')}} {{
    		listc.window_symbol('og.Till.Fensterstatus', 'Till',
    		'og.Till.Reed.Fenster.geschlossen','og.Till.Reed.Fenster.gekippt' ,
    		icon1~'fts_window_1w_open.png',icon0~'fts_window_1w.svg',
    		icon1~'fts_window_1w_tilt.png')}} {{
    		listc.window_symbol('og.Kinderbad.Fensterstatus', 'Kinderbad',
    		'og.Kinderbad.Reed.Fenster.geschlossen','og.Kinderbad.Reed.Fenster.gekippt'
    		, icon1~'fts_window_1w_open.png',icon0~'fts_window_1w.svg',
    		icon1~'fts_window_1w_tilt.png')}} {{
    		listc.window_symbol('og.Dachterrasse.Fensterstatus', 'Dachterrasse',
    		'og.Dachterrasse.Reed.Fenster.geschlossen','og.Dachterrasse.Reed.Fenster.gekippt'
    		, icon1~'fts_window_1w_open.png',icon0~'fts_window_1w.svg',
    		icon1~'fts_window_1w_tilt.png')}}
    
    	</ul>
    Screenshot im Anhang.

    Gruß,
    Hendrik
    Angehängte Dateien

    Einen Kommentar schreiben:


  • snoopy1309
    antwortet
    Beispiel

    Zitat von Sipple Beitrag anzeigen
    Alles was du da machst ist genau das was ich letzte Woche gemacht habe, inkl. der zweiflügligen Fenster, siehe Bild

    Nur hab ich die Hoppe Griffe und ein Enocean Gatweay, da geht das insgesamt einfacher. Dafür hätte ich die komplette Lösung.

    ...
    Gruß, Martin

    Hallo Martin,
    ich möchte auch meine Fensterkontakte (2 je Fenster) mit Smathome.py auswerten und wie Du visualisieren.
    Welche Visu hast Du benutzt?
    Würdest Du mir Deine Konfig von der Griffauswertung und der Visu als Beispielvorlage zukommen lassen.

    Momentan komme ich einfach nicht weiter.
    Ich wäre Dir endlos dankbar!

    Gruß Sönke

    Einen Kommentar schreiben:


  • melodoi
    antwortet
    Hallo Martin,

    genau dies möchte ich auch umsetzen (Gira HS). Ich habe Fenster die nur offen oder gekippt sein können und Fenster mit zusätzlichen Stulp.

    Kannst du bitte mal einen Lösungsansatz zeigen, wie deine Logik dazu aussieht und wie du die Liste der Fenster, die einen kritischen Status haben, erzeugst?

    LG
    Sylvio

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Danke Chris. Funktioniert so jetzt hier.


    Zitat von mknx Beitrag anzeigen
    ja, ich empfinde es als ziemlich kompliziert (da zu beschreiben und zu verwenden)
    Vorschlag (OpenSource heißt ja, dass man sich beteiligen darf):
    Ich schreib die Doku.

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi Hendrik,

    Zitat von henfri Beitrag anzeigen
    @Marcus: Spricht etwas dagegen, den einzubauen? Die Wildcards wären sehr praktisch.
    ja, ich empfinde es als ziemlich kompliziert (da zu beschreiben und zu verwenden).

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • chris5020
    antwortet
    ...

    ich hab vor einiger Zeit genau das in der Smartvisu gemacht, anbei als Test, bei dem man die Kontakte simulieren kann.

    die logik dazu sieht so aus:

    Code:
    [Test]
        [[window1]]
            name = Window 1
            type = bool 
            visu_acl = w 
            knx_dpt = 1
            knx_listen = 4/2/0
        [[window2]]
            name = Window 2
            type = bool         
            visu_acl = w 
            knx_dpt = 1
            knx_listen = 4/2/1
        [[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_unlocked]]]
                name = Window 3 Side1 unlocked
                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
    lg, Chris
    Angehängte Dateien

    Einen Kommentar schreiben:


  • henfri
    antwortet
    :-)

    Naja, für meinen Sonderwunsch brauche ich wohl eine Logik.. Nicht so schlimm.

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Alles was du da machst ist genau das was ich letzte Woche gemacht habe, inkl. der zweiflügligen Fenster, siehe Bild

    Nur hab ich die Hoppe Griffe und ein Enocean Gatweay, da geht das insgesamt einfacher. Dafür hätte ich die komplette Lösung.

    In deinem Fall würde ich aber inzwischen umschwenken auf eine klassische Logik, da ist das imho übersichtlicher und schöner zu lösen. Ich habe auch erst auf Biegen und Brechen versucht alles über eval/eval_trigger zu machen und bin dann davon wieder weg gekommen. Mag sein, dass manches programmiertechnisch smarter zu lösen ist, aber ob es dann leichter zu verstehen und in 5 Jahren zu - sagen wir mal - "warten" ist, bleibt die Frage. Meine Logiken machen exakt was sie sollen und ich denke in ein paar Jahren versteh ich sie immer noch

    Gruß, Martin
    Angehängte Dateien

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    danke für die Idee. Aber da ist noch ein Problem drin:
    Die GA für Geschlossen ist bei Geschlossen 1 und sonst 0 -nicht umgekehrt, wie in deinem Beispiel angenommen.

    Statt "and" bräuchte ich "nand". Dann würde es gehen.
    So geht's aber:
    Code:
    {{ basic.symbol('og.Schlafzimmer.Fensterstatus-Geschlossen', ['og.Schlafzimmer.Reed.Fenster.geschlossen', 'og.Schlafzimmer.Reed.Fenster.gekippt'] , 'Fenster', icon0~'fts_window_1w_open.svg', 0, 'and') }}    
    {{ basic.symbol('og.Schlafzimmer.Fensterstatus-Offen', 'og.Schlafzimmer.Reed.Fenster.geschlossen', 'Fenster', icon1~'fts_window_1w.png', 1) }}
    {{ basic.symbol('og.Schlafzimmer.Fensterstatus-Gekippt', 'og.Schlafzimmer.Reed.Fenster.gekippt', 'Fenster', icon1~'fts_window_1w_tilt.png', 1) }}
    Danke!

    Trotzdem würde ich mich freuen noch etwas über die eval_trigger Fragen zu hören (egal von wem; zum Patch natürlich am liebsten von Marcus :-).

    Jetzt habe ich aber noch eine andere Funktion, für die ich keine Lösung sehe:
    Zweiflügliges Fenster, wobei beide Elemente nur gedreht werden können (nicht gekippt).
    Statii:
    beide zu
    beide auf
    links auf
    rechts auf

    Zugegeben. Spielerei. (die letzten beiden), aber die Information ist da und will dargestellt werden.
    Dafür bräuchte ich eine Verknüpfung bei der die Reihenfolge wichtig ist. Sprich "Fenster links ist auf, aber nicht Fenster rechts"
    Ich wollte mir eigentlich ein XOR hineinpatchen, aber das kann ja nicht unterscheiden, welches Fenster offen ist.

    Ideen?


    Gruß,
    Hendrik

    Einen Kommentar schreiben:

Lädt...
X