Ankündigung

Einklappen
Keine Ankündigung bisher.

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,..
                            eval_trigger: dg.dach.wind # 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