Ankündigung

Einklappen
Keine Ankündigung bisher.

Aus zwei mach eins

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

    Aus zwei mach eins

    Hallo Forum

    ich verwende OH3 und habe das Binding (tacmi) der Technischen Alternative im Einsatz,
    bekomme da 2 Werte (Gesamtleistung_MWh und Gesamtleistung_kWh), wie kann ich aus diesen
    beiden Werten einen Wert machen.

    Danke und freue mich auf Antworten

    #2
    Wie meinst Du das? ist das nicht der gleiche Wert, nur mit verschobenem Komma?

    Kommentar


      #3
      Hallo udo1toni

      Es werden 2 Werte geliefert, die Gesamtleistung_kWh wird von 0,0 bis 999,9 angezeigt und die Gesamtleistung_Mwh von 1 bis ....
      Z.B.
      Gesamtleistung_kWh 758,6
      Gesamtleistung_MWh 11

      Ich hoffe das hilft.
      Zuletzt geändert von FreddyM; 08.12.2021, 17:50.

      Kommentar


        #4
        Ah. Dann musst Du ja "nur" MWh mit 1000 multiplizieren und beide Werte zusammenzählen.
        Du brauchst dazu aber zwingend ein drittes Item, welches die Summe aufnimmt und natürlich eine Rule, die bei Wertänderung in einem der Items (vermutlich reicht es vollkommen, die kWh zu testen) die Summe neu berechnet. So:
        Code:
        rule "summe bilden"
        when
            Item Gesamtleistung_kWh changed
            // or Item Gesamtleistung_MWh changed
        then
            if(!(Gesamtleistung_MWh.state instanceof Number)) {
                logWarn("summe","Item Gesamtleistung_MWh.hat keinen gültigen Status! ({})",Gesamtleistung_MWh.state)
                return;
            }
            if(!(Gesamtleistung_kWh.state instanceof Number)) {
                logWarn("summe","Item Gesamtleistung_kWh.hat keinen gültigen Status! ({})",Gesamtleistung_kWh.state)
                return;
            }
            val Number nkwh    = Gesamtleistung_kWh.state as Number
            val Number nmwh    = Gesamtleistung_MWh.state as Number
            val Number nGesamt = nkwh + 1000 * nmwh
            Gesamtleistung.postUpdate(nGesamt)
        end
        Eigentlich müssten die beiden Items Anteil_MWh und Anteil_kWh heißen weil es ja eben nicht die Gesamtleistung ist.
        Die beiden if-Anweisungen verhindern, dass bei ungültigem Zustand eine nullPointer Exception auftritt.

        Kommentar


          #5
          Hallo udo1toni

          danke für die Rule, kann diese gerade leider nicht testen da mein System
          nach einem Update Probleme macht.

          Kommentar


            #6
            Hallo udo1toni

            ich habe die Rule heute in Betrieb genommen bekomme beim zuätzlichen Item aber keinen Wert.
            Das tacmi Binding liefert die Werte als String, da dürfte der Fehler liegen.
            Vielleicht hast du Zeit und kannst mir nochmals helfen - danke.

            Kommentar


              #7
              Ah. Also sowohl Gesamtleistung_kWh als auch Gesamtleistung_MWh sind String Items? Bist Du sicher, dass die Konfiguration hier kein Number zulässt? Aber egal... Man kann natürlich den wert auch parsen:

              Code:
              rule "summe bilden"
              when
                  Item Gesamtleistung_kWh changed
                  // or Item Gesamtleistung_MWh changed
              then
                  val Number nkwh = Float::parseFloat(Gesamtleistung_kWh.state.toString)
                  val Number nmwh = Float::parseFloat(Gesamtleistung_MWh.state.toString)
                  val Number nGesamt = nkwh + 1000 * nmwh
                  Gesamtleistung.postUpdate(nGesamt)
              end
              ungetestet...

              Kommentar


                #8
                Hallo udo1toni

                die angepasste Rule funktioniert leider nicht.
                Laut event.log schauen die beiden Strings vom Binding so aus: 11MWh, 537,1kWh
                Würde es helfen wenn nur die Werte im String stehen, d.h. ohne MWh, kWh, das kann
                ich laut Binding anscheinend so einstellen.

                Kommentar


                  #9
                  Zitat von FreddyM Beitrag anzeigen
                  Würde es helfen wenn nur die Werte im String stehen, d.h. ohne MWh, kWh,
                  Das wäre sicher sinnvoll um den String in eine Zahl umzuwandeln.

                  Kommentar


                    #10
                    Stop!

                    Kann es sein, dass die Items in Wirklichkeit UoM Items sind?

                    Kommentar


                      #11
                      Hallo

                      Habe auf der TA-CMI Seite die beiden Werte umgestellt ohne Einheit (MWh, kWh), dann noch bei den Items
                      von String auf Number und damit bekomme ich mit der Rule den zusammengesetzten richtigen Wert.

                      Danke für die Bemühungen

                      Kommentar


                        #12
                        Zitat von FreddyM Beitrag anzeigen
                        bei den Items von String auf Number
                        Dann solltest Du nun auch wieder dem Beispiel in #4 folgen. Mit Parsing wandelst Du die Werte sonst ohne Not mehrfach um: Number -> String -> Float -> Number

                        Kommentar


                          #13
                          Ja danke, ich habe die Rule aus Posting #4 verwendet.

                          Kommentar

                          Lädt...
                          X