Search in sources :

Example 1 with NewStatesEvent

use of org.openhab.binding.satel.internal.event.NewStatesEvent in project openhab1-addons by openhab.

the class SatelBinding method incomingEvent.

/**
     * {@inheritDoc}
     */
@Override
public void incomingEvent(SatelEvent event) {
    logger.trace("Handling incoming event: {}", event);
    // refresh all states that have changed
    if (event instanceof NewStatesEvent) {
        List<SatelCommand> commands = getRefreshCommands((NewStatesEvent) event);
        for (SatelCommand command : commands) {
            this.satelModule.sendCommand(command);
        }
    }
    // if just connected, force refreshing
    if (event instanceof ConnectionStatusEvent) {
        ConnectionStatusEvent statusEvent = (ConnectionStatusEvent) event;
        if (statusEvent.isConnected()) {
            switchForceRefresh(true);
        }
    }
    // update items
    for (SatelBindingProvider provider : providers) {
        for (String itemName : provider.getItemNames()) {
            SatelBindingConfig itemConfig = provider.getItemConfig(itemName);
            Item item = provider.getItem(itemName);
            State newState = itemConfig.convertEventToState(item, event);
            if (newState != null) {
                logger.debug("Updating item state: item = {}, state = {}, event = {}", itemName, newState, event);
                eventPublisher.postUpdate(itemName, newState);
                itemConfig.setItemInitialized();
            }
        }
    }
}
Also used : Item(org.openhab.core.items.Item) SatelBindingProvider(org.openhab.binding.satel.SatelBindingProvider) ConnectionStatusEvent(org.openhab.binding.satel.internal.event.ConnectionStatusEvent) State(org.openhab.core.types.State) NewStatesEvent(org.openhab.binding.satel.internal.event.NewStatesEvent) SatelCommand(org.openhab.binding.satel.command.SatelCommand) SatelBindingConfig(org.openhab.binding.satel.SatelBindingConfig)

Example 2 with NewStatesEvent

use of org.openhab.binding.satel.internal.event.NewStatesEvent in project openhab1-addons by openhab.

the class ConnectionStatusBindingConfig method convertEventToState.

/**
     * {@inheritDoc}
     */
@Override
public State convertEventToState(Item item, SatelEvent event) {
    if (!(event instanceof ConnectionStatusEvent)) {
        // if current items state is uninitialized, "generate" fake event to update its state
        if (event instanceof NewStatesEvent && this.connectedSince == null) {
            event = new ConnectionStatusEvent(true);
        } else {
            return null;
        }
    }
    ConnectionStatusEvent statusEvent = (ConnectionStatusEvent) event;
    boolean invertState = hasOptionEnabled(Options.INVERT_STATE);
    // update internal values
    if (statusEvent.isConnected()) {
        this.connectionFailures = 0;
        if (this.connectedSince == null) {
            this.connectedSince = Calendar.getInstance();
        }
    } else {
        this.connectionFailures += 1;
        this.connectedSince = null;
    }
    switch(this.statusType) {
        case CONNECTED:
            return booleanToState(item, statusEvent.isConnected() ^ invertState);
        case CONNECTED_SINCE:
            if (this.connectedSince == null) {
                return UnDefType.NULL;
            } else if (item.getAcceptedDataTypes().contains(DateTimeType.class)) {
                return new DateTimeType(this.connectedSince);
            }
            break;
        case CONNECTION_ERRORS:
            if (item.getAcceptedDataTypes().contains(DecimalType.class)) {
                return new DecimalType(this.connectionFailures);
            }
            break;
    }
    return null;
}
Also used : DateTimeType(org.openhab.core.library.types.DateTimeType) ConnectionStatusEvent(org.openhab.binding.satel.internal.event.ConnectionStatusEvent) DecimalType(org.openhab.core.library.types.DecimalType) NewStatesEvent(org.openhab.binding.satel.internal.event.NewStatesEvent)

Aggregations

ConnectionStatusEvent (org.openhab.binding.satel.internal.event.ConnectionStatusEvent)2 NewStatesEvent (org.openhab.binding.satel.internal.event.NewStatesEvent)2 SatelBindingConfig (org.openhab.binding.satel.SatelBindingConfig)1 SatelBindingProvider (org.openhab.binding.satel.SatelBindingProvider)1 SatelCommand (org.openhab.binding.satel.command.SatelCommand)1 Item (org.openhab.core.items.Item)1 DateTimeType (org.openhab.core.library.types.DateTimeType)1 DecimalType (org.openhab.core.library.types.DecimalType)1 State (org.openhab.core.types.State)1