Seite 1 von 1

Multiplikation innerhalb einer Rule

Verfasst: 10. Mär 2023 12:58
von Wolle17
Hallo Zusammen,

Mal wieder eine Anfängerfrage.
Kann ich meine Regel so abwandeln dass ich statt Sekunden, die Kosten pro Sekunde in Cent bekomme

Code: Alles auswählen

  var Long        lStart = 0
var Integer   iSeconds = 0
var Timer    tBadlicht = null

rule "badlicht"
when
    Time cron "5 0 0 * * ?"
then
    iSeconds = 0
end

rule "Badlicht geschaltet"
when
    Item BadLicht changed
then
    if(newState == ON) {
        lStart = now.toInstant.toEpochMilli
    } else {
        iSeconds += ((now.toInstant.toEpochMilli - lStart)/1000).intValue
        BadlichtED.postUpdate(iSeconds)*0,00010764
    }
end   
So hatte ich es probiert (also einfach die Sekunden mit dem errechneten Kosten pro Sekunde multipliziert) und den Wert dann an das Number Item (%.5f) gesendet.

Leider passiert da nicht viel, ich nehme an ich hab es mir mal wieder zu einfach gemacht oder?

Danke und Gruß

Re: Multiplikation innerhalb einer Rule

Verfasst: 10. Mär 2023 13:48
von int5749
Hi,
mal nur auf die Schnelle, aber evtl hilft es die Rechnung vollständig zu klammern

Code: Alles auswählen

BadlichtED.postUpdate((iSeconds)*0,00010764)

Re: Multiplikation innerhalb einer Rule

Verfasst: 11. Mär 2023 17:02
von udo1toni
Der eine Punkt ist: der Multiplikator muss schon innerhalb des Parameters stehen.
Der andere Punkt (wortwörtlich): Es gilt die amerikanische Schreibweise von Dezimalzahlen. also 0.00010764, nicht 0,00010764
Falsch:

Code: Alles auswählen

BadlichtED.postUpdate(iSeconds)*0,00010764
Richtig:

Code: Alles auswählen

BadlichtED.postUpdate(iSeconds*0.00010764)