Skip to content
Snippets Groups Projects
Commit 3f4a6b07 authored by dev-manuel's avatar dev-manuel
Browse files

Updated code but other files persist

parent 0906fa76
No related branches found
No related tags found
1 merge request!1Resolve "Update imports (away from eclipse)"
Showing
with 284 additions and 76 deletions
NOTICE 0 → 100644
This content is produced and maintained by the openHAB project.
* Project home: https://www.openhab.org
== Declared Project Licenses
This program and the accompanying materials are made available under the terms
of the Eclipse Public License 2.0 which is available at
https://www.eclipse.org/legal/epl-2.0/.
== Source Code
https://github.com/openhab/openhab-addons
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>org.openhab.addons.bundles</groupId>
<artifactId>org.openhab.binding.mqtt</artifactId>
<version>3.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.openhab.core.bundles</groupId>
<artifactId>org.openhab.core.automation</artifactId>
<version>3.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<parent> <parent>
<artifactId>pom</artifactId> <groupId>org.openhab.addons.bundles</groupId>
<groupId>org.openhab.binding</groupId> <artifactId>org.openhab.addons.reactor.bundles</artifactId>
<version>2.3.0-SNAPSHOT</version> <version>3.0.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>org.openhab.binding.openlicht</artifactId> <artifactId>org.openhab.binding.openlicht</artifactId>
<packaging>eclipse-plugin</packaging>
<name>OpenLicht Binding</name> <name>openHAB Add-ons :: Bundles :: OpenLicht Binding</name>
</project> </project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2010-2020 Contributors to the openHAB project
See the NOTICE file(s) distributed with this work for additional
information.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0
SPDX-License-Identifier: EPL-2.0
-->
<features name="org.openhab.binding.openlicht-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
<repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository>
<feature name="openhab-binding-openlicht" description="OpenLicht Binding" version="${project.version}">
<feature>openhab-runtime-base</feature>
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.openlicht/${project.version}</bundle>
</feature>
</features>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0" name="org.openhab.binding.openlicht-3.0.0-SNAPSHOT">
<feature version="0.0.0">
<feature>openhab-runtime-base</feature>
<feature>wrap</feature>
<bundle>mvn:org.openhab.addons.bundles/org.openhab.binding.mqtt/3.0.0-SNAPSHOT</bundle>
<bundle>mvn:org.openhab.addons.bundles/org.openhab.binding.openlicht/3.0.0-SNAPSHOT</bundle>
<bundle>mvn:org.openhab.core.bundles/org.openhab.core.automation/3.0.0-SNAPSHOT</bundle>
<bundle>mvn:org.openhab.core.bundles/org.openhab.core.config.core/3.0.0-SNAPSHOT</bundle>
<bundle>mvn:org.openhab.core.bundles/org.openhab.core.ephemeris/3.0.0-SNAPSHOT</bundle>
<bundle>mvn:org.openhab.core.bundles/org.openhab.core.thing/3.0.0-SNAPSHOT</bundle>
<bundle>wrap:mvn:org.lastnpe.eea/eea-all/2.2.1</bundle>
</feature>
</features>
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
package org.openhab.binding.openlicht; package org.openhab.binding.openlicht;
import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.smarthome.core.thing.ThingTypeUID; import org.openhab.core.thing.ThingTypeUID;
/** /**
* The {@link BindingConstants} class defines common constants, which are * The {@link BindingConstants} class defines common constants, which are
......
...@@ -10,24 +10,24 @@ import java.util.concurrent.locks.ReentrantLock; ...@@ -10,24 +10,24 @@ import java.util.concurrent.locks.ReentrantLock;
import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.smarthome.binding.mqtt.handler.AbstractBrokerHandler; import org.openhab.binding.mqtt.handler.AbstractBrokerHandler;
import org.eclipse.smarthome.core.common.registry.RegistryChangeListener; import org.openhab.core.thing.ThingRegistryChangeListener;
import org.eclipse.smarthome.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.eclipse.smarthome.core.thing.ThingRegistry; import org.openhab.core.thing.ThingRegistry;
import org.eclipse.smarthome.core.thing.ThingStatus; import org.openhab.core.thing.ThingStatus;
import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.openhab.core.thing.ThingStatusDetail;
import org.eclipse.smarthome.core.thing.binding.BaseThingHandler; import org.openhab.core.thing.binding.BaseThingHandler;
import org.eclipse.smarthome.core.thing.binding.ThingHandler; import org.openhab.core.thing.binding.ThingHandler;
import org.eclipse.smarthome.io.transport.mqtt.MqttBrokerConnection; import org.openhab.core.io.transport.mqtt.MqttBrokerConnection;
import org.eclipse.smarthome.io.transport.mqtt.MqttMessageSubscriber; import org.openhab.core.io.transport.mqtt.MqttMessageSubscriber;
import org.eclipse.smarthome.io.transport.mqtt.MqttServiceObserver; import org.openhab.core.io.transport.mqtt.MqttServiceObserver;
import org.openhab.binding.openlicht.internal.ConfigurationHolder; import org.openhab.binding.openlicht.internal.ConfigurationHolder;
import org.osgi.framework.Version; import org.osgi.framework.Version;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public abstract class AbstractMqttHandler extends BaseThingHandler public abstract class AbstractMqttHandler extends BaseThingHandler
implements MqttMessageSubscriber, MqttServiceObserver, RegistryChangeListener<Thing> { implements MqttMessageSubscriber, MqttServiceObserver, ThingRegistryChangeListener {
private final @NonNull Logger logger = LoggerFactory.getLogger(AbstractMqttHandler.class); private final @NonNull Logger logger = LoggerFactory.getLogger(AbstractMqttHandler.class);
private @Nullable ThingRegistry thingRegistry; private @Nullable ThingRegistry thingRegistry;
...@@ -240,7 +240,9 @@ public abstract class AbstractMqttHandler extends BaseThingHandler ...@@ -240,7 +240,9 @@ public abstract class AbstractMqttHandler extends BaseThingHandler
// String topic = subscribeSubTopics() ? (getTopic().substring(0, usedTopicLength) + "out") // String topic = subscribeSubTopics() ? (getTopic().substring(0, usedTopicLength) + "out")
// : (getTopic() + "/out"); // : (getTopic() + "/out");
byte[] payload = message.getBytes(); byte[] payload = message.getBytes();
currentBrokerConnection.publish(topic, payload);
// Last two parameters of the following line are experimental
currentBrokerConnection.publish(topic, payload, 1, true);
} }
public final String getTopic() { public final String getTopic() {
......
...@@ -20,11 +20,11 @@ import java.util.HashSet; ...@@ -20,11 +20,11 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.eclipse.smarthome.core.library.types.DecimalType; import org.openhab.core.library.types.DecimalType;
import org.eclipse.smarthome.core.thing.ChannelUID; import org.openhab.core.thing.ChannelUID;
import org.eclipse.smarthome.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.eclipse.smarthome.core.types.Command; import org.openhab.core.types.Command;
import org.eclipse.smarthome.core.types.RefreshType; import org.openhab.core.types.RefreshType;
import org.openhab.binding.openlicht.internal.ConfigurationHolder; import org.openhab.binding.openlicht.internal.ConfigurationHolder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
......
...@@ -19,11 +19,11 @@ import java.nio.DoubleBuffer; ...@@ -19,11 +19,11 @@ import java.nio.DoubleBuffer;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.eclipse.smarthome.core.library.types.DecimalType; import org.openhab.core.library.types.DecimalType;
import org.eclipse.smarthome.core.thing.ChannelUID; import org.openhab.core.thing.ChannelUID;
import org.eclipse.smarthome.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.eclipse.smarthome.core.types.Command; import org.openhab.core.types.Command;
import org.eclipse.smarthome.core.types.RefreshType; import org.openhab.core.types.RefreshType;
import org.openhab.binding.openlicht.internal.ConfigurationHolder; import org.openhab.binding.openlicht.internal.ConfigurationHolder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
......
...@@ -7,24 +7,24 @@ import java.util.Set; ...@@ -7,24 +7,24 @@ import java.util.Set;
import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.smarthome.core.events.EventPublisher; import org.openhab.core.events.EventPublisher;
import org.eclipse.smarthome.core.items.GenericItem; import org.openhab.core.items.GenericItem;
import org.eclipse.smarthome.core.items.GroupItem; import org.openhab.core.items.GroupItem;
import org.eclipse.smarthome.core.items.Item; import org.openhab.core.items.Item;
import org.eclipse.smarthome.core.items.ItemNotFoundException; import org.openhab.core.items.ItemNotFoundException;
import org.eclipse.smarthome.core.items.ItemRegistry; import org.openhab.core.items.ItemRegistry;
import org.eclipse.smarthome.core.items.StateChangeListener; import org.openhab.core.items.StateChangeListener;
import org.eclipse.smarthome.core.items.events.ItemEventFactory; import org.openhab.core.items.events.ItemEventFactory;
import org.eclipse.smarthome.core.library.types.DateTimeType; import org.openhab.core.library.types.DateTimeType;
import org.eclipse.smarthome.core.library.types.DecimalType; import org.openhab.core.library.types.DecimalType;
import org.eclipse.smarthome.core.library.types.HSBType; import org.openhab.core.library.types.HSBType;
import org.eclipse.smarthome.core.library.types.OnOffType; import org.openhab.core.library.types.OnOffType;
import org.eclipse.smarthome.core.library.types.StringType; import org.openhab.core.library.types.StringType;
import org.eclipse.smarthome.core.thing.ChannelUID; import org.openhab.core.thing.ChannelUID;
import org.eclipse.smarthome.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.eclipse.smarthome.core.types.Command; import org.openhab.core.types.Command;
import org.eclipse.smarthome.core.types.State; import org.openhab.core.types.State;
import org.eclipse.smarthome.core.types.TypeParser; import org.openhab.core.types.TypeParser;
import org.openhab.binding.openlicht.BindingConstants; import org.openhab.binding.openlicht.BindingConstants;
import org.openhab.binding.openlicht.internal.ConfigurationHolder; import org.openhab.binding.openlicht.internal.ConfigurationHolder;
import org.openhab.binding.openlicht.internal.DelegateEraserRegistryChangeListener; import org.openhab.binding.openlicht.internal.DelegateEraserRegistryChangeListener;
......
package org.openhab.binding.openlicht.handler; package org.openhab.binding.openlicht.handler;
import org.eclipse.smarthome.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.openhab.binding.openlicht.internal.ConfigurationHolder; import org.openhab.binding.openlicht.internal.ConfigurationHolder;
public class Moto360Handler extends AbstractSmartWatchHandler { public class Moto360Handler extends AbstractSmartWatchHandler {
......
...@@ -6,7 +6,7 @@ import java.util.HashMap; ...@@ -6,7 +6,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import org.eclipse.smarthome.core.library.types.DecimalType; import org.openhab.core.library.types.DecimalType;
public class MqttUtils { public class MqttUtils {
......
package org.openhab.binding.openlicht.handler; package org.openhab.binding.openlicht.handler;
import org.eclipse.smarthome.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.openhab.binding.openlicht.internal.ConfigurationHolder; import org.openhab.binding.openlicht.internal.ConfigurationHolder;
public class PolarM600Handler extends AbstractSmartWatchHandler { public class PolarM600Handler extends AbstractSmartWatchHandler {
......
package org.openhab.binding.openlicht.handler; package org.openhab.binding.openlicht.handler;
import org.eclipse.smarthome.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.openhab.binding.openlicht.internal.ConfigurationHolder; import org.openhab.binding.openlicht.internal.ConfigurationHolder;
public class SamsungS6Handler extends AbstractSmartphoneHandler { public class SamsungS6Handler extends AbstractSmartphoneHandler {
......
...@@ -11,10 +11,10 @@ package org.openhab.binding.openlicht.handler; ...@@ -11,10 +11,10 @@ package org.openhab.binding.openlicht.handler;
import static org.openhab.binding.openlicht.BindingConstants.CHANNEL_FLICK; import static org.openhab.binding.openlicht.BindingConstants.CHANNEL_FLICK;
import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.smarthome.core.library.types.StringType; import org.openhab.core.library.types.StringType;
import org.eclipse.smarthome.core.thing.ChannelUID; import org.openhab.core.thing.ChannelUID;
import org.eclipse.smarthome.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.eclipse.smarthome.core.types.Command; import org.openhab.core.types.Command;
import org.openhab.binding.openlicht.internal.ConfigurationHolder; import org.openhab.binding.openlicht.internal.ConfigurationHolder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory; ...@@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory;
* sent to the channel "$BASE_TOPIC/skywriter". * sent to the channel "$BASE_TOPIC/skywriter".
* *
* @author René Schöne - Initial contribution * @author René Schöne - Initial contribution
* @author Manuel Krombholz - Upgrade OH Version
*/ */
public class SkyWriterHATHandler extends AbstractMqttHandler { public class SkyWriterHATHandler extends AbstractMqttHandler {
......
...@@ -2,7 +2,7 @@ package org.openhab.binding.openlicht.handler; ...@@ -2,7 +2,7 @@ package org.openhab.binding.openlicht.handler;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import org.eclipse.smarthome.core.types.State; import org.openhab.core.types.State;
@FunctionalInterface @FunctionalInterface
public interface UpdateState extends BiConsumer<String, State> { public interface UpdateState extends BiConsumer<String, State> {
......
...@@ -3,10 +3,10 @@ package org.openhab.binding.openlicht.internal; ...@@ -3,10 +3,10 @@ package org.openhab.binding.openlicht.internal;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.smarthome.core.events.EventPublisher; import org.openhab.core.events.EventPublisher;
import org.eclipse.smarthome.core.items.ItemRegistry; import org.openhab.core.items.ItemRegistry;
import org.eclipse.smarthome.core.thing.ThingRegistry; import org.openhab.core.thing.ThingRegistry;
import org.eclipse.smarthome.io.transport.mqtt.MqttService; import org.openhab.core.io.transport.mqtt.MqttService;
import org.osgi.framework.Version; import org.osgi.framework.Version;
public interface ConfigurationHolder { public interface ConfigurationHolder {
......
package org.openhab.binding.openlicht.internal; package org.openhab.binding.openlicht.internal;
import org.eclipse.smarthome.core.common.registry.RegistryChangeListener; import java.util.Collection;
import org.eclipse.smarthome.core.items.Item; import org.openhab.core.items.ItemRegistryChangeListener;
import org.openhab.core.items.Item;
import org.openhab.binding.openlicht.handler.EraserHandler; import org.openhab.binding.openlicht.handler.EraserHandler;
public class DelegateEraserRegistryChangeListener implements RegistryChangeListener<Item> { public class DelegateEraserRegistryChangeListener implements ItemRegistryChangeListener {
private EraserHandler handler; private EraserHandler handler;
...@@ -27,4 +28,8 @@ public class DelegateEraserRegistryChangeListener implements RegistryChangeListe ...@@ -27,4 +28,8 @@ public class DelegateEraserRegistryChangeListener implements RegistryChangeListe
handler.updated(oldElement, element); handler.updated(oldElement, element);
} }
@Override
public void allItemsChanged(Collection<String> oldItemNames) {
// TODO: Implement!
}
} }
/**
* Copyright (c) 2010-2020 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.openlicht.internal;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.thing.ThingTypeUID;
/**
* The {@link OpenLichtBindingConstants} class defines common constants, which are
* used across the whole binding.
*
* @author Manuel Krombholz - Initial contribution
*/
@NonNullByDefault
public class OpenLichtBindingConstants {
private static final String BINDING_ID = "openlicht";
// List of all Thing Type UIDs
public static final ThingTypeUID THING_TYPE_SAMPLE = new ThingTypeUID(BINDING_ID, "sample");
// List of all Channel ids
public static final String CHANNEL_1 = "channel1";
}
/** /**
* Copyright (c) 2014,2018 by the respective copyright holders. * Copyright (c) 2010-2020 Contributors to the openHAB project
* *
* See the NOTICE file(s) distributed with this work for additional * See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership. * information.
* *
* This program and the accompanying materials are made available under the * This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at * terms of the Eclipse Public License 2.0 which is available at
...@@ -16,6 +16,7 @@ package org.openhab.binding.openlicht.internal; ...@@ -16,6 +16,7 @@ package org.openhab.binding.openlicht.internal;
* The {@link OpenLichtConfiguration} class contains fields mapping thing configuration parameters. * The {@link OpenLichtConfiguration} class contains fields mapping thing configuration parameters.
* *
* @author René Schöne - Initial contribution * @author René Schöne - Initial contribution
* @author Manuel Krombholz - Upgrade OH Version
*/ */
public class OpenLichtConfiguration { public class OpenLichtConfiguration {
......
/**
* Copyright (c) 2010-2020 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.openlicht.internal;
import static org.openhab.binding.openlicht.internal.OpenLichtBindingConstants.*;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.thing.ChannelUID;
import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingStatus;
import org.openhab.core.thing.binding.BaseThingHandler;
import org.openhab.core.types.Command;
import org.openhab.core.types.RefreshType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The {@link OpenLichtHandler} is responsible for handling commands, which are
* sent to one of the channels.
*
* @author Manuel Krombholz - Initial contribution
*/
@NonNullByDefault
public class OpenLichtHandler extends BaseThingHandler {
private final Logger logger = LoggerFactory.getLogger(OpenLichtHandler.class);
private @Nullable OpenLichtConfiguration config;
public OpenLichtHandler(Thing thing) {
super(thing);
}
@Override
public void handleCommand(ChannelUID channelUID, Command command) {
if (CHANNEL_1.equals(channelUID.getId())) {
if (command instanceof RefreshType) {
// TODO: handle data refresh
}
// TODO: handle command
// Note: if communication with thing fails for some reason,
// indicate that by setting the status with detail information:
// updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
// "Could not control device at IP address x.x.x.x");
}
}
@Override
public void initialize() {
config = getConfigAs(OpenLichtConfiguration.class);
// TODO: Initialize the handler.
// The framework requires you to return from this method quickly. Also, before leaving this method a thing
// status from one of ONLINE, OFFLINE or UNKNOWN must be set. This might already be the real thing status in
// case you can decide it directly.
// In case you can not decide the thing status directly (e.g. for long running connection handshake using WAN
// access or similar) you should set status UNKNOWN here and then decide the real status asynchronously in the
// background.
// set the thing status to UNKNOWN temporarily and let the background task decide for the real status.
// the framework is then able to reuse the resources from the thing handler initialization.
// we set this upfront to reliably check status updates in unit tests.
updateStatus(ThingStatus.UNKNOWN);
// Example for background initialization:
scheduler.execute(() -> {
boolean thingReachable = true; // <background task with long running initialization here>
// when done do:
if (thingReachable) {
updateStatus(ThingStatus.ONLINE);
} else {
updateStatus(ThingStatus.OFFLINE);
}
});
// These logging types should be primarily used by bindings
// logger.trace("Example trace message");
// logger.debug("Example debug message");
// logger.warn("Example warn message");
// Note: When initialization can NOT be done set the status with more details for further
// analysis. See also class ThingStatusDetail for all available status details.
// Add a description to give user information to understand why thing does not work as expected. E.g.
// updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
// "Can not access device as username and/or password are invalid");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment