Ankündigung

Einklappen
Keine Ankündigung bisher.

Logikmigration: linkknx/WG auf sh.py

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

    Logikmigration: linkknx/WG auf sh.py

    So langsam werde ich meine Logiken vom WG auf den RPi mit sh.py migrieren. Da es vermutlich einigen so geht und der ein oder andere etwas daraus lernen kann, lege ich diesen Thread an.
    Wer ähnliches Sachen hat, immer rein damit.
    Derzeit zwischen Kistenauspacken und Garten anlegen.
    Baublog im Profil.

    #2
    Meine erste Logik im KNX steuert meine Treppenbeleuchtung:
    1. bei Dämmerung auf 70% dimmen
    2. zu fixer Zeit weiter herunterdimmen
    3. im Morgengrauen abschalten

    Code:
    <!-- Treppe Helligkeit / Zeit -->
           <rule id="treppe_led_on">
                    <condition type="and">
                            <condition type="object" id="lux_carport" op="lt" value="280" trigger="true" />
                    </condition>
                    <actionlist>
                            <action type="set-value" id="treppe_led" value="70" />
                    </actionlist>
            </rule>
            <rule id="treppe_led_off">
                    <condition type="or">
                            <condition type="time-counter" threshold="300" >
                                    <condition type="object" id="lux_carport" op="gt" value="320" trigger="true"/>
                            </condition>
                    </condition>
                    <actionlist>
                            <action type="set-value" id="treppe_led" value="0" />
                    </actionlist>
            </rule> 
            <rule id="treppe_led_dim">
                <condition type="timer" trigger="true">
                    <at hour="0" min="30" exception="no" />
                </condition>
                <actionlist>
                    <action type="set-value" id="treppe_led" value="50" />
                </actionlist>
            </rule>
    Die Werte habe ich teilweise etwas verändert.
    Im sh.py habe ich das wie folgt realisiert:
    etc/logic.conf

    Code:
    # /usr/local/smarthome/etc/logic.conf
    [treppen_led_ein]
        filename = treppen_led_ein.py
        watch_item = sensor.carport.lux
    [treppen_led_aus]
        filename = treppen_led_aus.py
        watch_item = sensor.carport.lux
    [treppen_led_nachdimmen]
        filename = treppen_led_nachdimmen.py
        crontab = 30 23 * *
    logics/treppen_led_ein.py
    Code:
    #!/usr/bin/env python
    # Treppen LED on, wenn Helligkeit aussen zu dunkel
    if (sh.sensor.carport.lux() < 280 and sh.sensor.carport.lux() > 5):
        sh.licht.flur.treppe_alle_w(70)
    logics/treppen_led_aus.py
    Code:
    #!/usr/bin/env python
    # Treppen LED off, wenn Helligkeit aussen für 12 Minuten zu hell
    if sh.sensor.carport.lux.db('min', '12i') > 320:
        sh.licht.flur.treppe_alle_w(0)
        logger.info ('licht aus')
    logicstreppen_led_nachdimmen.py
    Code:
    #!/usr/bin/env python
    # Treppen LED on, wenn Helligkeit aussen zu dunkel
    sh.licht.flur.treppe_alle_w(30)
    Derzeit zwischen Kistenauspacken und Garten anlegen.
    Baublog im Profil.

    Kommentar


      #3
      WLAN Router abschalten zur Nacht und früh wieder einschalten:

      linknx:
      Code:
      <!-- Router OG -->
              <rule id="og_router_ein">
                  <condition type="timer" trigger="true">
                      <at hour="06" min="10" exception="no" />
                  </condition>
                  <actionlist>
                      <action type="set-value" id="og_router" value="1" />
                  </actionlist>
              </rule>
              <rule id="og_router_aus">
                  <condition type="timer" trigger="true">
                      <at hour="0" min="30" exception="no" />
                  </condition>
                  <actionlist>
                      <action type="set-value" id="og_router" value="0" />
                  </actionlist>
              </rule>
      sh.py

      logic.conf
      Code:
      [wlan_og]
          filename = wlan_og.py
          crontab = 10 6 * * = 1|30 0 * * = 0
      wlan_og.py
      Code:
      #!/usr/bin/env python
      # WLAN OG ein 6:10 und aus 0:30
      sh.sd.spiel.router(trigger['value'])
      Derzeit zwischen Kistenauspacken und Garten anlegen.
      Baublog im Profil.

      Kommentar


        #4
        Hi Matthias,

        wieso der Umweg über die Logik? Du kannst den crontab-Eintrag auch direkt in die item.conf packen.

        Bis bald

        Marcus

        Kommentar


          #5
          So ist es logischer. Man kann sicherlich allerlei mit eval & co im item machen. Es soll aber auch für Anfänger verständlich bleiben.
          Derzeit zwischen Kistenauspacken und Garten anlegen.
          Baublog im Profil.

          Kommentar


            #6
            Zirkulation anwerfen, wenn der Kessel den Speicher lädt, damit in der Zirkulation kein kaltes Wasser stehen bleibt.

            linknx:
            Code:
            <!-- Zirkulation wenn Speicher geladen wird -->
                    <rule id="zirkulation_ww_laden">
                            <condition type="and">
                                    <condition type="object" id="eta_ww_temp_oben" op="gt" value="50" />
                                    <condition type="object" id="eta_ww_status" op="eq" value="3" trigger="true" />
                                    <condition type="object" id="zirkulation_temp" op="lt" value="40" />
                            </condition>
                            <actionlist type="on-true">
                                    <action type="cycle-on-off" id="zirkulation" on="180" off="60" count="1"/>
                                    <action type="send-email"  to="root@localhost" var="true" subject="Zirkulation load"> ${zirkulation_temp} load laeuft... Siehe Logs.</action>
                            </actionlist>
                    </rule>
            etc/logic.conf

            Code:
            [zirkulation_ww_laden]
                filename = zirkulation_ww_laden.py
                watch_item = eta.ww.status.num | sensor.hwr.ww_speicher_oben
            und
            Code:
            #/logics/zirkulation.py
            #!/usr/bin/env python
            
            ### config ###
            zirk_item = sh.sd.hwr.sd_1_s                 #item Zirkulationspumpe (bool)
            ww_item = sh.eta_unit.ww.status.n             #item Status Warmwasserbereitung
            ww_value = 3            #Werte von Status Warmwasserbereitung bei denen Zirkulation laufen soll!
            ww_zirk_temp = sh.sensor.hwr.ww_zirkulation
            ww_temp_oben = sh.sensor.hwr.ww_speicher_oben
            
            on_time = 180              # Zeit für einen Durchgang  
            ### end config ###
            
            # Einschalten, wenn Zirkulation aus, WW wird geladen, Temp_oben im Speicher >50 und Temp der Zirkulation <40
            if not zirk_item() and (ww_item is ww_value) and (ww_temp_oben() > 50) and (ww_zirk_temp() < 40):  
                logger.debug ("Zirkulation ein wegen WW status")
                zirk_item(True)
                zirk_item.timer(on_time, False)
            Ein bischen was habe ich mir bei Jumi angeschaut.
            Derzeit zwischen Kistenauspacken und Garten anlegen.
            Baublog im Profil.

            Kommentar


              #7
              Schön, dass du das hier dokumentierst.
              Sind gute Anregungen.

              Gruß,
              Hendrik

              Kommentar


                #8
                Ja, ich würde sagen, wir können auch einfach nur Logiken (ohne linknx Bezug) sammeln...
                Derzeit zwischen Kistenauspacken und Garten anlegen.
                Baublog im Profil.

                Kommentar


                  #9
                  Hallo,

                  ja, da gibt'S schon einen Anfang:
                  https://github.com/mknx/smarthome/wi...ken-und-Howtos

                  @Marcus:
                  Vielleicht kannst du das Wiki auch auf der Projektseite verlinken?

                  Gruß,
                  Hendrik

                  Kommentar


                    #10
                    Seitdem die Doku aus dem git generiert wird, ist mir das Wiki irgendwie "zu weit weg". Vl. doch hier irgendwo sammeln.
                    Derzeit zwischen Kistenauspacken und Garten anlegen.
                    Baublog im Profil.

                    Kommentar


                      #11
                      Hi,

                      was hat denn die Doku in git mit dem Wiki zu tun? Das verstehe ich nicht.

                      Bzgl. hier sammeln habe ich wenig Hoffnung das es besser wird.
                      Gerade aktuell, neuer Thread von Dir: https://knx-user-forum.de/smarthome-...ern-abend.html

                      Alter Thread von Mirko:
                      https://knx-user-forum.de/smarthome-...achdimmen.html

                      Bis bald

                      Marcus

                      Kommentar


                        #12
                        Na früher kam die Doku aus dem git (gh-pages) und man konnte sie online ändern. Also sowohl für Entwickler, als auch für nur Nutzer bedienbar.
                        Heute kommt die Doku (schöne Seite, wirklich) aus dem git und wird automatisch generiert. Ist vl. auch nur meine verquere Sicht
                        Daher fand ich es jedenfalls einfacher, zumindest die Logiken die bei mir laufen, mal in einen Thread zu packen.

                        Aus meiner Umsteigezeit weiss ich, wo die Hürden für den Anwender liegen. Der versteht einfach nicht, wie items.conf und logiken zusammenarbeiten. Was wie wovon abhängt. Wann mache ich eval im item, wann schreibe ich lieber eine Logik. Usw. usf. Für den Entwickler trivial, nicht der Rede wert. Daher eben learning by doing.

                        Ich würde weiterhin die Sachen die mir passen, hier reinkopieren. Kann aber auch jeder andere sein funktionierenden Sachen reinpacken. Ziel wäre, das sie für den Umsteiger/Anfänger taugen.
                        Derzeit zwischen Kistenauspacken und Garten anlegen.
                        Baublog im Profil.

                        Kommentar

                        Lädt...
                        X