Beispiel #1
0
def getItemLastUpdate(itemOrName):
    item = _getItem(itemOrName)
    lastUpdate = PersistenceExtensions.lastUpdate(item)
    if lastUpdate is None:
        return ZonedDateTime.ofInstant(Instant.ofEpochMilli(0),
                                       ZoneId.systemDefault())
        #raise NotInitialisedException("Item lastUpdate for '" + item.getName() + "' not found")
    return lastUpdate
Beispiel #2
0
def getStableMinMaxItemState(now, itemName, checkTimeRange):

    currentEndTime = now
    currentEndTimeMillis = currentEndTime.toInstant().toEpochMilli()
    minTimeMillis = currentEndTimeMillis - (checkTimeRange * 60 * 1000)

    minValue = None
    maxValue = None

    value = 0.0
    duration = 0

    # get and cache "real" item to speedup getHistoricItemEntry. Otherwise "getHistoricItemEntry" will lookup the item by its name every time
    item = getItem(itemName)

    entry = getHistoricItemEntry(item, now)

    while True:
        currentStartMillis = entry.getTimestamp().toInstant().toEpochMilli()

        if currentStartMillis < minTimeMillis:
            currentStartMillis = minTimeMillis

        _duration = currentEndTimeMillis - currentStartMillis
        _value = entry.getState().doubleValue()

        if minValue == None or minValue > _value:
            minValue = _value

        if maxValue == None or maxValue < _value:
            maxValue = _value

        duration = duration + _duration
        value = value + (_value * _duration)

        currentEndTimeMillis = currentStartMillis - 1

        if currentEndTimeMillis < minTimeMillis:
            break

        currentEndTime = ZonedDateTime.ofInstant(
            Instant.ofEpochMilli(currentEndTimeMillis), ZoneId.systemDefault())

        entry = getHistoricItemEntry(item, currentEndTime)

    value = (value / duration)

    return [value, minValue, maxValue]