Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Wildcards in logic.conf

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

  • 2ndsky
    antwortet
    Zitat von TCr82 Beitrag anzeigen
    Dazu muss allerdings auch vorher eine evt gesetzte blockarde entfernt werden
    Habs im anderen Thread bereits erwähnt, der Vollständigkeit halber (für andere Mitleser) aber hier nochmal... Sowas gehört direkt im Bus abgebildet über die Sicherheitsobjekte eines Aktors. Nur so kann man sich sicher sein, dass es im Notfall auch funktioniert. Außerdem sind die Sicherheitsobjekte genau dafür da und es ist viel umständlicher, dass in eine Logik zu gießen, als kurz eine GA auf einen Sicherheits KO zu ziehen

    Einen Kommentar schreiben:


  • TCr82
    antwortet
    AW: - √ - Wildcards in logic.conf

    Dazu muss allerdings auch vorher eine evt gesetzte blockarde entfernt werden

    Gesendet von meinem GT-I9100 mit Tapatalk 2

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo,

    man sollte bei einem Feueralarm auch eine Fluchtbeleuchtung aktivieren.
    Die Behänge würde ich aber ohne Logik direkt fahren lassen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    +1 für die Idee, so den Alarm anzuzeigen. Danke dafür!

    Einen Kommentar schreiben:


  • TCr82
    antwortet
    ich habe das eben auch mal versucht:

    vorher:

    Code:
    [alarm]
        filename = alarm.py
        watch_item = zentral.feuer.alarm, zentral.feuer.stoerung, eg.flur.haustuer, eg.kueche.rolladentuer.open, eg.kueche.rolladenfenster.open, eg.ez.rolladen.open, eg.wz.rolladentuer.open, eg.ez.rolladenschwingfenster.open, eg.wz.rolladenfenster.open, eg.sz.rolladen.opem, eg.kz.rolladen.open, eg.bz.rolladen.open, eg.wc.rolladen.open
    Nachher:
    Code:
    [alarm]
        filename = alarm.py
        watch_item = zentral.feuer.*, eg.flur.haustuer, eg.*.*.open
    Es triggert aber nüchts mehr... Hab ich was falsch gemacht?

    EDIT: ok, wieder mal mein Fehler...
    Hab die Ausgabe vorher entfernt, so dass ich den Trigger nicht gesehen habe.. Es funktioniert alles

    Einen Kommentar schreiben:


  • mode
    antwortet
    Hey Marcus,

    danke für dein Beispiel.
    Die Methode return_item war genau das, was ich gesucht hatte. Dann komme ich ohne das exec aus, super!

    Warum enforce_updates?
    Eigentlich nur um eben dieses Beispiel zu haben.

    VG

    Mode

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    nur so für das Protokoll. Ob das jetzt einfacher ist liegt im Auge des Betrachters, es meidet zumindest regex. Ich habe den Code nicht getestet, vllt. ist noch ein Typo drin...

    Zitat von mode Beitrag anzeigen
    Code:
    #!/usr/bin/env python
    if trigger['value']:
        direction = trigger['source'].rsplit('.', 1)[0] + '.richtung'
        # langsam zum mitschreiben
        # itemarray = trigger['source'].rsplit('.', 1)  # rsplit teilt von rechts bei jedem '.' und wird auf einmal teilen limitiert
        # baseitemname = itemarray[0]  # nur den ersten Teil der zurückgegeben Liste betrachten
        # direction = baseitemname + '.richtung'  # und das '.richtung' anfügen
        direction = sh.return_item(direction)  # holt das Item Object für direction
        if trigger['source'].endswith('unten'):
            direction(True)
        if trigger['source'].endswith('oben'):
            direction(False)
    Wobei ich Deine erste Logik irgendwie schöner finde. Mir ist aber (siehe Post oben) immer noch nicht klar, wieso die bei Dir nicht funktioniert.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    - √ - Wildcards in logic.conf

    Sorry wenn ich so Nachfrage. Wieso lässt Du das enforce_... Nicht weg?

    Einen Kommentar schreiben:


  • mode
    antwortet
    Hi,
    ja oben und unten wird false gesetzt sobald die Jalou nicht mehr in einer Endposition ist.

    Das Coding mit enforce_update funktioniert wie es technisch soll. Aber logisch möchte ich natürlich nicht für alle Jalous das Objekt Richtung (erneut) gesendet sehen wenn nur eine Jalou eine Endstellung erreicht hat. Durch die Schleife und das Enforce würde das passieren.
    Daher das 2. Coding, so dass nur das notwendige Richtung Objekt gesetzt wird und nicht jedes.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    - √ - Wildcards in logic.conf

    Zitat von mode Beitrag anzeigen
    Dieses Coding funktioniert wunderbar!
    Leider nur, wenn man kein "enfoce_updates = true" für das Richtungs-Objekt nutzt.
    Was funktioniert denn nicht?

    Wird oben und unten eigentlich auch wieder auf False gesetzt?

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • mode
    antwortet
    Ich möchte einmal ein Beispiel für die Nutzung der Wildcards vorstellen.

    Szenario:
    Wir haben einen Rolladen im Schlafzimmer und einen in der Küche, die jeweils auf einer GA eine 1 senden, wenn sie ganz oben oder ganz unten sind.
    Für die Taster die eine Ein-Tasten Jalousteuerung bieten, benötige ich eine GA die anzeigt ob die nächste Fahrt nach oben oder nach unten geht. Diese GA wird von sh.py bedient. Sie wird als richtung bezeichnicht und hat eine 1 für unten (nächste Fahrt geht hoch) und eine 0 für oben (nächste Fahrt gehr runter).
    btw: Warum das Ganze? Mein Jalou Aktor kann nur entweder dieses Richtungsobjekt ODER ein Objekt für die aktuelle Position in % ausgeben. Letzeres benötige ich für meine Visu und Ersteres baue ich hier durch diese Logik nach.


    items.conf
    Code:
    [jalou]
        [[schlafzimmer]]
            [[[stat]]]
                [[[[oben]]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 3/1/10
                [[[[unten]]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 3/1/11
                [[[[richtung]]]]
                    type = bool
                    knx_dpt = 1
                    knx_send = 3/1/3
                    knx_reply = 3/1/3
        [[kueche]]
            [[[stat]]]
                [[[[oben]]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 3/1/30
                [[[[unten]]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 3/1/31
                [[[[richtung]]]]
                    type = bool
                    knx_dpt = 1
                    knx_send = 3/1/23
                    knx_reply = 3/1/23
    logic.conf:
    Code:
    [Logi_Jalou]
            filename = logi_jalou.py
            watch_item = jalou.*.stat.oben, jalou.*.stat.unten
    logi_jalou.py
    Code:
    #!/usr/bin/env python
    for raum in sh.jalou:
        if raum.stat.unten():
            raum.stat.richtung('on')
        if raum.stat.oben():
            raum.stat.richtung('off')
    Dieses Coding funktioniert wunderbar!
    Leider nur, wenn man kein "enfoce_updates = true" für das Richtungs-Objekt nutzt.

    items.conf
    Code:
    [jalou]
        [[schlafzimmer]]
            [[[stat]]]
                [[[[oben]]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 3/1/10
                [[[[unten]]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 3/1/11
                [[[[richtung]]]]
                    type = bool
                    knx_dpt = 1
                    knx_send = 3/1/3
                    knx_reply = 3/1/3
                    enforce_updates = true
        [[kueche]]
            [[[stat]]]
                [[[[oben]]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 3/1/30
                [[[[unten]]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 3/1/31
                [[[[richtung]]]]
                    type = bool
                    knx_dpt = 1
                    knx_send = 3/1/23
                    knx_reply = 3/1/23
                    enforce_updates = true
    Dann wird für alle Jalous das Objekt Richtung gesendet, auch wenn nur eine in eine Endposition gefahren wurde.

    Möchten wir nur auf das triggende Objekt reagieren, kann folgendes Coding eingesetzt werden:
    logi_jalou.py
    Code:
    #!/usr/bin/env python
    import re
    if trigger['value']:
        re_richtung = re.compile('((unten$)|(oben$))')
        cmd = re_richtung.sub("richtung",trigger['source'])
    
        re_unten = re.compile('(^jalou.[a-z_]+.stat.unten$)')
        if re_unten.match(trigger['source']):
            cmd = 'sh.' + cmd + '(\'on\')'
            exec cmd
    
        re_oben = re.compile('(^jalou.[a-z_]+.stat.oben$)')
        if re_oben.match(trigger['source']):
            cmd = 'sh.' + cmd + '(\'off\')'
            exec cmd
    Funktioniert zwar gut, aber fällt jemandem vielleicht eine KISS Lösung ein?

    VG

    Mode

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Hallo Michael,

    das unterstützt die smartVISU noch nicht... aber soweit ich weiß sind Marcus und Martin dran.

    Einen Kommentar schreiben:


  • clown
    antwortet
    Wie kann ich RRD's in smartvisu machen, da hatte ich bisher nichts gefunden ?

    Gruß aus Maintal
    Michael

    Einen Kommentar schreiben:


  • mode
    antwortet


    soeben getestet und für gut befunden :-)

    Einen Kommentar schreiben:


  • Apollo
    antwortet

    Einen Kommentar schreiben:

Lädt...
X