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

[Rule] Number:Power mit Number vergleichen

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

    [Rule] Number:Power mit Number vergleichen

    Hallo,

    Ich möchte in einer Rule zwei Items vergleichen. Das eine Item ist vom Typ Number:Power, das andere vom Typ Number.

    So sieht es aktuell aus:

    Items:
    Code:
    Number Load_Power "Stromverbrauch" { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload" }
    
    Number:Power Production_Power "Solarleistung" { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelppv" }
    Hier ein Ausschnitt der Rule. Die Rule geht immer in den else-Zweig.
    Code:
    if (Production_Power.state >= (Load_Power.state as Number))
    {
    Power_Source.sendCommand("Solar")
    logInfo("Powersource","Powersource = Solar")
    }
    else
    {
    Power_Source.sendCommand("Grid+Solar")
    logInfo("Powersource","Powersource = Grid+Solar")
    }​
    Wie muss denn hier der Vergleich lauten, damit die Bedingung erfüllt wird?

    Auf 0 klappt der Vergleich, da mach ich es so:

    Code:
    if (Production_Power.state == 0 | "W")
    {
    Power_Source.sendCommand("Grid")
    //logInfo("Powersource","Powersource = Gird")
    }​
    Zuletzt geändert von TomW80; 01.11.2022, 20:28.

    #2
    Du kannst das im Prinzip genauso machen (im Zweifel musst Du halt klammern, damit die Zuordnung klappt), also z.B. so:
    Code:
    if (Production_Power.state >= ((Load_Power.state as Number) | "W"))
    Alternativ kannst du auch die Einheit strippen:
    Code:
    if ((Production_Power.state as Number).floatValue >= (Load_Power.state as Number))

    Kommentar


      #3
      Zitat von udo1toni Beitrag anzeigen
      Code:
      if (Production_Power.state >= ((Load_Power.state as Number) | "W"))
      Da erhalte ich folgende Fehler:

      no viable alternative at input '|'(org.eclipse.xtext.diagnostics.Diagnostic.Synta x)
      extraneous input '"W"' expecting ')'(org.eclipse.xtext.diagnostics.Diagnostic.Synta x)​​
      Zitat von udo1toni Beitrag anzeigen
      Code:
      if ((Production_Power.state as Number).floatValue >= (Load_Power.state as Number))


      Das teste ich mal.

      Kommentar


        #4
        Der zweite Code funktioniert. Danke!

        Kommentar

        Lädt...
        X