Ankündigung

Einklappen
Keine Ankündigung bisher.

Werte aus Openweathermap an KNX

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

    #16
    Hallo udo1toni,

    vielen Dank stets für deine schnellen Rückmeldungen - finde deinen Einsatz echt bemerkenswert!


    Nein auch mit postUpdate klappt es nicht.
    Das Ergebnis ist identisch...

    - Wenn ich "maxTemp = 88" als Test fest einkommentiere, dann wir das Item aktualisiert und zusätzlich kommt etwas auf dem KNX Bus an.

    - Wenn ich jedoch die Rule ohne durchlaufen lasse, dann ist zwar das Item aktualisiert, aber es kam keine Botschaft auf dem KNX Bus raus.

    Was stimmt mit der Rule nicht?
    Irgendwas mit der Art der Zahlenaufbereitung?

    Code:
        gOWM.members.filter[ i |
            i.name.contains("Temp") && i.name.contains("Fc") && (i.state instanceof Number)
        ].forEach [ j |
            if((j.state as Number) > maxTemp)
                maxTemp = (j.state as Number)
        ]
        
        Aussentemperatur_Vorhersage.postUpdate(maxTemp)​
    Bin echt am verzweifeln :-(

    Liebe Grüße und einen schönen Abend noch...
    Maxe

    Kommentar


      #17
      Kann es sein, dass Du QuantityType Items vewendest (also z.B. Number:Temperature)? Die Rule ist schon etwas älter und berücksichtigt das noch nicht... Hab ich gestern glatt übersehen... Sie sollte mit QuantityType so aussehen:
      Code:
      rule "Vorhergesagte max Aussentemperatur"
       when
          Time cron "0 0 0 * * ?"
       then
          var maxTemp = 0.0               // Wegen Nachkommastelle als Float initialisiert
          gOWM.members.filter[ i |
              i.name.contains("Temp") && i.name.contains("Fc") && (i.state instanceof Number)
          ].forEach [ j |
              if((j.state as Number).floatValue > maxTemp)
                  maxTemp = (j.state as Number).floatValue
          ]
        
          //maxTemp = 88
          Aussentemperatur_Vorhersage.postUpdate(maxTemp)
      end​​​
      Wichtig ist hier die Methode .floatValue, welche den Number Type in einen (wie der Name schon sagt) Float Value konvertiert.
      Ebenso muss man noch die Nachkommastelle beim Initialisieren der lokalen Variable anhängen, da openHAB ansonsten eine Integer Variable erstellt.

      Kommentar


        #18
        Hallo udo1toni,

        um 5.20 Uhr schreibst du Antworten?!

        Machen wir es kurz - jetzt funktioniert es!

        Bin total happy, wenn auch etwas frustriert, dass rules abhängig von der OH Version mal laufen oder nicht laufen.

        Dafür sind meine Programmierkenntnisse einfach viel zu dünn :-(

        Dankeschön und das erste Bier heute Abend mache ich für dich auf!

        Liebe Grüße Maxe

        Kommentar


          #19
          Na, die Uhrzeit ist bei mir beliebig, ich arbeite im Schichtdienst...

          Was die Rules betrifft: Die Rule funktioniert ja ohne weiteres, aber es sind halt neue Funktionen hinzugekommen (in diesem Fall halt QuantityType) und das muss man im Code auch berücksichtigen. 12 ist etwas anderes als 12 °C (und das ist etwas anderes als 12 Wh...). Wenn Du also Items ohne Units of Measurement (aka QuantityType) verwendest, wird die Rule weiterhin ohne Änderung funktionieren, mit UoM muss die Rule aber ebenfalls angepasst werden. Und da ein Großteil der Addons inzwischen QuantityType als Default verwendet, bekommst Du diesen Teil auch automatisch so angeboten.

          Und Achtung! Es ist sehr wahrscheinlich, dass QuantityType in einer kommenden OH-Version nicht mehr optional ist, sondern zwingend (dort, wo es eine Unit gibt, natürlich). Es ist also keine gute Idee, UoM jetzt aktiv zu entfernen, nur um alte Rules nicht verändern zu müssen.

          Kommentar

          Lädt...
          X