Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

Logik - Berechnungen - Einsteiger

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

    Logik - Berechnungen - Einsteiger

    Hallo zusammen,

    ich würde gerne:
    - die Windgeschwindigkeit von m/s nach km/h umrechnen
    ° grundlegend gehe ich davon aus: "Item Wind m/s" x 3,6 (oder 3.6) = "Item Wind km/h" --> "Item Wind km/h" kann weiter verwendet werden?

    - Temperaturmittelwert aus allen Räumen
    ° gleiches System wie oben nur mit C° und Durchschnittsberechnung


    So jetzt führt einen die Suche zu den Logiken:
    Die Doku gibt an: "../etc/logic.yaml ein Abschnitt"
    Wenn ich die Logik über Admin --> Logiken --> neue Logik erstelle, erscheint diese im Ordner "\\IP\SmartHomeNG\logics"


    Was ist den nun der richtige Speicherort?

    Danke

    #2
    Einfach mal Doku lesen!
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Erster Absatz hier: https://www.smarthomeng.de/user/konf...n/logiken.html
      Erster Absatz hier: https://www.smarthomeng.de/user/logiken/logics.html

      Du kannst deine Anliegen aber direkt in den Items mit eval lösen. https://www.smarthomeng.de/user/konf...bute/eval.html

      Kommentar


        #4
        Wenn ich es richtig verstehe:

        gehört die Logik hier her - /usr/local/smarthome/logics/
        - dort wird sie auch von der Admin Seite gespeichert

        und zusätlich muss in der \\IP\SmartHomeNG\etc\logic.yaml die Logik "aktiviert" werden.

        Code:
        #!/usr/bin/env python3
        # wind_umrechner.py
        
        # 3 mal print um Abstand in der Konsole zu erreichen
        print('')
        print('')
        print('')
        
        print('Anzeige Windgeschwindigkeit in m/s ')
        print(sh.dg.dach.wind())
        Konsolen Ausgabe:
        Code:
        Anzeige Windgeschwindigkeit in m/s
        Traceback (most recent call last):
        File "wind_umrechner.py", line 10, in <module>
        print(sh.dg.dach.wind())
        NameError: name 'sh' is not defined
        ---------------------------



        eval

        - ich weiß schon mal wie es nicht funktioniert


        Code:
        # wind_kmh.yaml
        
        dg:
            dach:
                wind:
                    kmh:
                        # Formel (m/s x 3,6) = km/h
                        type: num
                        eval: sh.dg.dach.wind() * 3
                        eval_trigger: kmh
                        database: yes
        Code:
        # windgeschwind.yaml
        dg:
            dach:
                wind:
                    type: num
                 #   visu_acl: rw
                    knx_dpt: 9
                    knx_listen: 6/3/1
                    knx_init: 6/4/1
                    database: yes

        Kommentar


          #5
          Knx_listen und knx_init auf unterschiedliche Adressen kann eigentlich nicht funktionieren. Knx_init beinhaltet knx_listen und geht nach der Initialisierung (Lesen aus der Status-Adresse) dazu über, auf diese Adresse zu hören - siehe die Erklärung von bmx in einem früheren Thread von Dir. D.h. Das item dg.dach.wind hört auf 2 unterschiedliche Adressen.

          eval_trigger für die kmh-Berechnung muss IMHO dg.dach.wind sein.

          Gruß
          Wolfram
          Zuletzt geändert von wvhn; 06.10.2020, 14:23.

          Kommentar


            #6
            Code:
            dg:
                dach:
                    wind:
                        type: num
                        #visu_acl: rw
                        knx_dpt: 9
                        knx_listen: 6/3/1 # auf welcher Adresse kommen denn die Daten???
                        #knx_init: 6/4/1 #auf welcher Adresse kommen denn die Daten???
                        database: yes
            
                        kmh:
                            # Formel (m/s x 3,6) = km/h
                            type: num
                            eval: round(sh.dg.dach.wind() * 3.6) #evtl. runden,..
                           [MARKIEREN] eval_trigger: dg.dach.wind[/MARKIEREN] # die Berechnung soll angestoßen werden, wenn sich dg.dach.wind ändert
                            database: yes

            Kommentar


              #7
              Ad eval_trigger und knx_init/listen hast du eh schon sachdienliche Hinweise erhalten. Somit brauchst du die Logik nicht. Aber falls du später mal ne Logik brauchst..
              /usr/local/smarthome/logics/ -> logik.py
              /usr/local/smarthome/etc/logics.yaml -> Eintrag deiner logik.yaml

              Print in der Logik macht wenig Sinn, genauso wie die Logik außerhalb von shng laufen zu lassen. Nutze logger, am besten logger.error - dann siehst du die Ausgabe in var/log/smarthome-warnings.log und triggere die Logik innerhalb vom Admin Interface. Sieh dir dazu nochmals die Doku an und wenn du Verbesserungsvorschläge hast, poste sie bitte hier: https://www.smarthomeng.de/feedback-zur-dokumentation

              Kommentar

              Lädt...
              X