Ankündigung

Einklappen
Keine Ankündigung bisher.

[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