Search in sources :

Example 51 with State

use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.

the class ItemEventFactory method createGroupStateChangedEvent.

private Event createGroupStateChangedEvent(String topic, String payload) {
    String itemName = getItemName(topic);
    String memberName = getMemberName(topic);
    ItemStateChangedEventPayloadBean bean = deserializePayload(payload, ItemStateChangedEventPayloadBean.class);
    State state = getState(bean.getType(), bean.getValue());
    State oldState = getState(bean.getOldType(), bean.getOldValue());
    return new GroupItemStateChangedEvent(topic, payload, itemName, memberName, state, oldState);
}
Also used : State(org.eclipse.smarthome.core.types.State)

Example 52 with State

use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.

the class ItemEventFactory method createStateChangedEvent.

private Event createStateChangedEvent(String topic, String payload) {
    String itemName = getItemName(topic);
    ItemStateChangedEventPayloadBean bean = deserializePayload(payload, ItemStateChangedEventPayloadBean.class);
    State state = getState(bean.getType(), bean.getValue());
    State oldState = getState(bean.getOldType(), bean.getOldValue());
    return new ItemStateChangedEvent(topic, payload, itemName, state, oldState);
}
Also used : State(org.eclipse.smarthome.core.types.State)

Example 53 with State

use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.

the class RuleTriggerManager method internalGetUpdateRules.

private void internalGetUpdateRules(String name, Boolean isGroup, List<Class<? extends State>> acceptedDataTypes, State state, List<Rule> result) {
    final String mapName = (isGroup) ? GROUP_NAME_PREFIX + name : name;
    for (Rule rule : getAllRules(UPDATE, mapName)) {
        for (EventTrigger t : rule.getEventtrigger()) {
            String triggerStateString = null;
            if ((!isGroup) && (t instanceof UpdateEventTrigger)) {
                final UpdateEventTrigger ut = (UpdateEventTrigger) t;
                if (ut.getItem().equals(name)) {
                    triggerStateString = ut.getState();
                } else {
                    continue;
                }
            } else if ((isGroup) && (t instanceof GroupMemberUpdateEventTrigger)) {
                final GroupMemberUpdateEventTrigger gmut = (GroupMemberUpdateEventTrigger) t;
                if (gmut.getGroup().equals(name)) {
                    triggerStateString = gmut.getState();
                } else {
                    continue;
                }
            } else {
                continue;
            }
            if (triggerStateString != null) {
                final State triggerState = TypeParser.parseState(acceptedDataTypes, triggerStateString);
                if (!state.equals(triggerState)) {
                    continue;
                }
            }
            result.add(rule);
        }
    }
}
Also used : UpdateEventTrigger(org.eclipse.smarthome.model.rule.rules.UpdateEventTrigger) ThingStateUpdateEventTrigger(org.eclipse.smarthome.model.rule.rules.ThingStateUpdateEventTrigger) GroupMemberUpdateEventTrigger(org.eclipse.smarthome.model.rule.rules.GroupMemberUpdateEventTrigger) State(org.eclipse.smarthome.core.types.State) Rule(org.eclipse.smarthome.model.rule.rules.Rule) GroupMemberUpdateEventTrigger(org.eclipse.smarthome.model.rule.rules.GroupMemberUpdateEventTrigger) UpdateEventTrigger(org.eclipse.smarthome.model.rule.rules.UpdateEventTrigger) ThingStateChangedEventTrigger(org.eclipse.smarthome.model.rule.rules.ThingStateChangedEventTrigger) ThingStateUpdateEventTrigger(org.eclipse.smarthome.model.rule.rules.ThingStateUpdateEventTrigger) EventTrigger(org.eclipse.smarthome.model.rule.rules.EventTrigger) ChangedEventTrigger(org.eclipse.smarthome.model.rule.rules.ChangedEventTrigger) GroupMemberUpdateEventTrigger(org.eclipse.smarthome.model.rule.rules.GroupMemberUpdateEventTrigger) GroupMemberChangedEventTrigger(org.eclipse.smarthome.model.rule.rules.GroupMemberChangedEventTrigger) GroupMemberCommandEventTrigger(org.eclipse.smarthome.model.rule.rules.GroupMemberCommandEventTrigger) CommandEventTrigger(org.eclipse.smarthome.model.rule.rules.CommandEventTrigger)

Example 54 with State

use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.

the class NtpOSGiTest method getItemState.

private State getItemState(String acceptedItemType) {
    final Item testItem = waitForAssert(() -> {
        Item tmp;
        try {
            tmp = itemRegistry.getItem(TEST_ITEM_NAME);
        } catch (ItemNotFoundException e) {
            tmp = null;
        }
        assertNotNull(tmp);
        return tmp;
    });
    return waitForAssert(() -> {
        final State testItemState = testItem.getState();
        if (acceptedItemType.equals(ACCEPTED_ITEM_TYPE_STRING)) {
            assertThat(testItemState, is(instanceOf(StringType.class)));
        } else if (acceptedItemType.equals(ACCEPTED_ITEM_TYPE_DATE_TIME)) {
            assertThat(testItemState, is(instanceOf(DateTimeType.class)));
        }
        return testItemState;
    }, 3 * DFL_TIMEOUT, 2 * DFL_SLEEP_TIME);
}
Also used : DateTimeItem(org.eclipse.smarthome.core.library.items.DateTimeItem) GenericItem(org.eclipse.smarthome.core.items.GenericItem) Item(org.eclipse.smarthome.core.items.Item) StringItem(org.eclipse.smarthome.core.library.items.StringItem) DateTimeType(org.eclipse.smarthome.core.library.types.DateTimeType) State(org.eclipse.smarthome.core.types.State) ItemNotFoundException(org.eclipse.smarthome.core.items.ItemNotFoundException)

Example 55 with State

use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.

the class PersistenceExtensions method changedSince.

/**
 * Checks if the state of a given <code>item</code> has changed since a certain point in time.
 * The {@link PersistenceService} identified by the <code>serviceId</code> is used.
 *
 * @param item the item to check for state changes
 * @param timestamp the point in time to start the check
 * @param serviceId the name of the {@link PersistenceService} to use
 * @return <code>true</code> if item state has changed, or <code>false</code> if it hasn't or if the given
 *         <code>serviceId</code> does not refer to an available {@link QueryablePersistenceService}
 */
public static Boolean changedSince(Item item, AbstractInstant timestamp, String serviceId) {
    Iterable<HistoricItem> result = getAllStatesSince(item, timestamp, serviceId);
    Iterator<HistoricItem> it = result.iterator();
    HistoricItem itemThen = historicState(item, timestamp);
    if (itemThen == null) {
        // If we've got results more recent that this, it must have changed
        return it.hasNext();
    }
    State state = itemThen.getState();
    while (it.hasNext()) {
        HistoricItem hItem = it.next();
        if (state != null && !hItem.getState().equals(state)) {
            return true;
        }
        state = hItem.getState();
    }
    return false;
}
Also used : State(org.eclipse.smarthome.core.types.State) HistoricItem(org.eclipse.smarthome.core.persistence.HistoricItem)

Aggregations

State (org.eclipse.smarthome.core.types.State)130 Test (org.junit.Test)59 DecimalType (org.eclipse.smarthome.core.library.types.DecimalType)23 PercentType (org.eclipse.smarthome.core.library.types.PercentType)22 Item (org.eclipse.smarthome.core.items.Item)21 NumberItem (org.eclipse.smarthome.core.library.items.NumberItem)19 Temperature (javax.measure.quantity.Temperature)18 StringType (org.eclipse.smarthome.core.library.types.StringType)18 QuantityType (org.eclipse.smarthome.core.library.types.QuantityType)17 ItemNotFoundException (org.eclipse.smarthome.core.items.ItemNotFoundException)15 HSBType (org.eclipse.smarthome.core.library.types.HSBType)15 OnOffType (org.eclipse.smarthome.core.library.types.OnOffType)15 RollershutterItem (org.eclipse.smarthome.core.library.items.RollershutterItem)13 JavaOSGiTest (org.eclipse.smarthome.test.java.JavaOSGiTest)13 ColorItem (org.eclipse.smarthome.core.library.items.ColorItem)12 SwitchItem (org.eclipse.smarthome.core.library.items.SwitchItem)11 DimmerItem (org.eclipse.smarthome.core.library.items.DimmerItem)10 RawType (org.eclipse.smarthome.core.library.types.RawType)10 Pressure (javax.measure.quantity.Pressure)9 GroupItem (org.eclipse.smarthome.core.items.GroupItem)8