Ankündigung

Einklappen
Keine Ankündigung bisher.

Windrichtung

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

    Windrichtung

    Hallo zusammen


    Gerne würde ich die Windrichtung anzeigen lassen. Dafür habe ich folgenden Code genommen und angepasst:

    Code:
            windBearing:
                type: num
                knx_dpt: 5
                knx_listen: 1/6/20
                ds_matchstring: currently/windBearing
                cache: yes
            windBearing_compass_string:
                type: str
                knx_listen: 1/6/20
                knx_dpt: 16
                eval: "['N','NO','O','SO','S','SW','W','NW','N'][(int(value) + 22.5) / 45]"
                eval_trigger: Dach.Wetterstation.windBearing


    Ich denke, das irgendwas fehlt. Ich erhalte von meiner Wetterstation lediglich mit der GA 1/6/20 die Windrichtung in Winkel "Grad".

    Bei Item Dach.Wetterstation.windBearing bringt er mir auch den Wert raus, welcher in der ETS ist. Wie erhalte ich nun die effektive Windrichtung "N" oder "W" angezeigt? Im Item Dach.Wetterstation.windBearing_compass_string erhalte ich keine Ausgabe

    Dafür habe ich auf der index.html folgende Code eingetragen:

    HTML-Code:
    <p>{{ icon.compass('Dach.Wetterstation.windBearing', '', 'Dach.Wetterstation.windBearing',  '0', '360', '') }}</p>
    <p>{{ basic.print('Dach.Wetterstation.windBearing', 'Dach.Wetterstation.windBearing', 'text') }}</p>
    Leider ohne Erfolg. Er zeigt mir nichts Brauchbares an.

    #2
    Ich würde vermuten das Du erstmal das richtige Item nehmen solltest:
    HTML-Code:
    {{ basic.print('', 'Dach.Wetterstation.windBearing_compass_string', 'text') }}
    Und dann muß Du der Liste einen Integer als Index präsentieren:


    Code:
    eval: "['N','NO','O','SO','S','SW','W','NW','N'][int((int(value) + 22.5) / 45)]"
    Zuletzt geändert von bmx; 27.01.2021, 16:43.

    Kommentar


      #3
      Hello


      Danke für die Hilfe. Ich habe nun beim HTML-Code, deinen Code welchen du gepostet hast, eingetragen.

      Muss ich den Code:
      Code:
      eval: "['N','NO','O','SO','S','SW','W','NW','N'][int((int(value) + 22.5) / 45)]"
      so wie du in gepostet hast im Items.yaml eintragen, oder muss ich noch was zusätzliches machen?
      Zuletzt geändert von bmx; 27.01.2021, 16:43.

      Kommentar


        #4
        Hat sich erledigt. Ich musste nur noch selber ein wenig überlegen Vielen Dank für die Hilfe, es klappt nun.

        Kommentar


          #5
          Ja, so wie ich ihn gepostet habe nur eben als eval Attribut. Habe ich mal oben angepasst.
          Du kannst sowas auch im Admin Interface testen oder bei komplexeren Sachen das Executor Plugin bemühen.

          Kommentar


            #6
            Ok, vielen Dank für deine Hilfe

            Kommentar


              #7
              Habe jetzt mal mein Logik Modul durch diesen eval ersetzt. ( wie es auch in der SHNG Doku beschrieben ist )
              haut leider so bei mir nicht hin; das neue item bleibt leer. (und im log gibt's keine Fehlermeldung)
              und wenn ich das im eval Syntax Prüfer eingebe kommt auch eine Fehlermeldung:
              HR.jpg

              Kommentar


                #8
                sorry:
                kaum macht man's richtig, schon geht's.
                in den Item Definitionen hatte ich "int" vergessen.

                Kommentar


                  #9
                  habe doch noch ein Problem mit dem eval entdeckt und zwar beim Neustart von SHNG:

                  Code:
                  2022-02-16  12:41:18 WARNING  lib.item.item       Item Aussen.Garage.Wetter.Windrichtung.Txt: problem evaluating '['N','NO','O','SO','S','SW','W','NW','N'][int((int(value) + 22.5) / 45)]': invalid literal for int() with base 10: ''

                  Kommentar


                    #10
                    Vielleicht kannst Du folgendes probieren:
                    Code:
                    ['N','NO','O','SO','S','SW','W','NW','N'][int((int(value) + 22.5) / 45)] if value else ''
                    oder statt leerem String einfach None

                    Kommentar


                      #11
                      danke so geht's
                      aber none akzeptiert er nicht

                      Kommentar

                      Lädt...
                      X