Search in sources :

Example 1 with TelnetClient

use of org.apache.commons.net.telnet.TelnetClient in project openhab1-addons by openhab.

the class DenonListener method createTelnetClient.

private TelnetClient createTelnetClient() {
    TelnetClient tc = new TelnetClient();
    tc.setDefaultTimeout(TIMEOUT);
    return tc;
}
Also used : TelnetClient(org.apache.commons.net.telnet.TelnetClient)

Example 2 with TelnetClient

use of org.apache.commons.net.telnet.TelnetClient in project openhab1-addons by openhab.

the class DDWRTBinding method execute.

@Override
protected void execute() {
    logger.trace("execute");
    if (password == null) {
        return;
    } else if (StringUtils.isBlank(password)) {
        logger.error("Password mustn't be empty!");
        return;
    }
    try {
        TelnetClient client = null;
        for (DDWRTBindingProvider provider : providers) {
            for (String item : provider.getItemNames()) {
                String query = null;
                String type = provider.getType(item);
                if (queryMap.containsKey(type)) {
                    if (type.startsWith(DDWRTBindingProvider.TYPE_ROUTER_TYPE)) {
                        query = queryMap.get(type);
                    } else if (type.startsWith(DDWRTBindingProvider.TYPE_WLAN_24) && !interface_24.isEmpty()) {
                        query = queryMap.get(type) + " " + interface_24 + " | grep UP";
                    } else if (type.startsWith(DDWRTBindingProvider.TYPE_WLAN_50) && !interface_50.isEmpty()) {
                        query = queryMap.get(type) + " " + interface_50 + " | grep UP";
                    } else if (type.startsWith(DDWRTBindingProvider.TYPE_WLAN_GUEST) && !interface_guest.isEmpty()) {
                        query = queryMap.get(type) + " " + interface_guest + " | grep UP";
                    }
                } else {
                    continue;
                }
                if (query == null) {
                    continue;
                }
                logger.trace("execute query ({})  ({}) ({})", query, ip, username);
                if (client == null) {
                    client = new TelnetClient();
                    client.connect(ip);
                    if (username != null) {
                        receive(client);
                        send(client, username);
                    }
                    receive(client);
                    send(client, password);
                    receive(client);
                }
                send(client, query);
                String answer = receive(client);
                String[] lines = answer.split("\r\n");
                if (lines.length >= 2) {
                    answer = lines[1].trim();
                }
                Class<? extends Item> itemType = provider.getItemType(item);
                State state = null;
                if (itemType.isAssignableFrom(SwitchItem.class)) {
                    if (lines.length > 2) {
                        if (lines[1].contains("UP")) {
                            state = OnOffType.ON;
                        } else {
                            state = OnOffType.OFF;
                        }
                    } else {
                        state = OnOffType.OFF;
                    }
                } else if (itemType.isAssignableFrom(NumberItem.class)) {
                    state = new DecimalType(answer);
                } else if (itemType.isAssignableFrom(StringItem.class)) {
                    state = new StringType(answer);
                }
                if (state != null) {
                    eventPublisher.postUpdate(item, state);
                }
            }
        }
        if (client != null) {
            client.disconnect();
        }
    } catch (Exception e) {
        logger.warn("Could not get item state ", e);
    }
}
Also used : NumberItem(org.openhab.core.library.items.NumberItem) TelnetClient(org.apache.commons.net.telnet.TelnetClient) StringType(org.openhab.core.library.types.StringType) State(org.openhab.core.types.State) DecimalType(org.openhab.core.library.types.DecimalType) DDWRTBindingProvider(org.openhab.binding.ddwrt.DDWRTBindingProvider) IOException(java.io.IOException) ConfigurationException(org.osgi.service.cm.ConfigurationException)

Example 3 with TelnetClient

use of org.apache.commons.net.telnet.TelnetClient in project openhab1-addons by openhab.

the class FritzboxBinding method execute.

@Override
protected void execute() {
    if (password == null) {
        return;
    } else if (password.trim().isEmpty()) {
        return;
    }
    try {
        TelnetClient client = null;
        for (FritzboxBindingProvider provider : providers) {
            for (String item : provider.getItemNames()) {
                String query = null;
                String type = provider.getType(item);
                if (queryMap.containsKey(type)) {
                    query = queryMap.get(type);
                } else if (type.startsWith("tam")) {
                    query = "ctlmgr_ctl r tam settings/" + type.toUpperCase() + "/Active";
                } else if (type.startsWith("query")) {
                    query = type.substring(type.indexOf(":") + 1).trim();
                } else {
                    continue;
                }
                if (client == null) {
                    client = new TelnetClient();
                    client.connect(ip);
                    if (username != null) {
                        receive(client);
                        send(client, username);
                    }
                    receive(client);
                    send(client, password);
                    receive(client);
                }
                send(client, query);
                String answer = receive(client);
                String[] lines = answer.split("\r\n");
                if (lines.length >= 2) {
                    answer = lines[1].trim();
                }
                Class<? extends Item> itemType = provider.getItemType(item);
                org.openhab.core.types.State state = null;
                if (itemType.isAssignableFrom(SwitchItem.class)) {
                    if (answer.equals("1")) {
                        state = OnOffType.ON;
                    } else {
                        state = OnOffType.OFF;
                    }
                } else if (itemType.isAssignableFrom(NumberItem.class)) {
                    state = new DecimalType(answer);
                } else if (itemType.isAssignableFrom(StringItem.class)) {
                    state = new StringType(answer);
                }
                if (state != null) {
                    eventPublisher.postUpdate(item, state);
                }
            }
        }
        if (client != null) {
            client.disconnect();
        }
    } catch (Exception e) {
        logger.warn("Could not get item state ", e);
    }
}
Also used : FritzboxBindingProvider(org.openhab.binding.fritzbox.FritzboxBindingProvider) NumberItem(org.openhab.core.library.items.NumberItem) TelnetClient(org.apache.commons.net.telnet.TelnetClient) StringType(org.openhab.core.library.types.StringType) DecimalType(org.openhab.core.library.types.DecimalType) ConfigurationException(org.osgi.service.cm.ConfigurationException) SchedulerException(org.quartz.SchedulerException) IOException(java.io.IOException) JobExecutionException(org.quartz.JobExecutionException)

Aggregations

TelnetClient (org.apache.commons.net.telnet.TelnetClient)3 IOException (java.io.IOException)2 NumberItem (org.openhab.core.library.items.NumberItem)2 DecimalType (org.openhab.core.library.types.DecimalType)2 StringType (org.openhab.core.library.types.StringType)2 ConfigurationException (org.osgi.service.cm.ConfigurationException)2 DDWRTBindingProvider (org.openhab.binding.ddwrt.DDWRTBindingProvider)1 FritzboxBindingProvider (org.openhab.binding.fritzbox.FritzboxBindingProvider)1 State (org.openhab.core.types.State)1 JobExecutionException (org.quartz.JobExecutionException)1 SchedulerException (org.quartz.SchedulerException)1