diff --git a/bundles/org.openhab.binding.mikrotik/README.md b/bundles/org.openhab.binding.mikrotik/README.md index c45dbb678..d0fc821db 100644 --- a/bundles/org.openhab.binding.mikrotik/README.md +++ b/bundles/org.openhab.binding.mikrotik/README.md @@ -106,6 +106,8 @@ At the moment the binding supports the following RouterOS interface types: * `wlan` * `cap` * `pppoe-out` +* `ppp-out` +* `lte` * `l2tp-in` * `l2tp-out` diff --git a/bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/handler/MikrotikInterfaceThingHandler.java b/bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/handler/MikrotikInterfaceThingHandler.java index ab947d446..c9ce0f9a8 100644 --- a/bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/handler/MikrotikInterfaceThingHandler.java +++ b/bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/handler/MikrotikInterfaceThingHandler.java @@ -28,6 +28,8 @@ import org.openhab.binding.mikrotik.internal.model.RouterosEthernetInterface; import org.openhab.binding.mikrotik.internal.model.RouterosInterfaceBase; import org.openhab.binding.mikrotik.internal.model.RouterosL2TPCliInterface; import org.openhab.binding.mikrotik.internal.model.RouterosL2TPSrvInterface; +import org.openhab.binding.mikrotik.internal.model.RouterosLTEInterface; +import org.openhab.binding.mikrotik.internal.model.RouterosPPPCliInterface; import org.openhab.binding.mikrotik.internal.model.RouterosPPPoECliInterface; import org.openhab.binding.mikrotik.internal.model.RouterosWlanInterface; import org.openhab.binding.mikrotik.internal.util.RateCalculator; @@ -92,7 +94,7 @@ public class MikrotikInterfaceThingHandler extends MikrotikBaseThingHandler props) { + super(props); + } + + @Override + public RouterosInterfaceType getDesignedType() { + return RouterosInterfaceType.LTE; + } + + @Override + public String getApiType() { + return "lte"; + } + + @Override + public boolean hasDetailedReport() { + return false; + } + + @Override + public boolean hasMonitor() { + return false; + } + + public @Nullable String getStatus() { + // I only have an RNDIS/HiLink 4G modem which doesn't report status at all. This should be tested/fixed + // by someone who has PCIe/serial 4G modem. + return getProp("status"); + } + + public @Nullable String getUptime() { + // Same as above. Also a custom info command need to be implemented for this to work. + // https://forum.mikrotik.com/viewtopic.php?t=164035#p808281 + return getProp("session-uptime"); + } + + public @Nullable LocalDateTime getUptimeStart() { + return Converter.routerosPeriodBack(getUptime()); + } +} diff --git a/bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosPPPCliInterface.java b/bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosPPPCliInterface.java new file mode 100644 index 000000000..e0bd6bb33 --- /dev/null +++ b/bundles/org.openhab.binding.mikrotik/src/main/java/org/openhab/binding/mikrotik/internal/model/RouterosPPPCliInterface.java @@ -0,0 +1,77 @@ +/** + * Copyright (c) 2010-2021 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.mikrotik.internal.model; + +import java.time.LocalDateTime; +import java.util.Map; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.mikrotik.internal.util.Converter; + +/** + * The {@link RouterosPPPCliInterface} is a model class for `pppoe-out` interface models having casting accessors for + * data that is specific to this network interface kind. Is a subclass of {@link RouterosInterfaceBase}. + * + * @author Oleg Vivtash - Initial contribution + */ +@NonNullByDefault +public class RouterosPPPCliInterface extends RouterosInterfaceBase { + public RouterosPPPCliInterface(Map props) { + super(props); + } + + @Override + public RouterosInterfaceType getDesignedType() { + return RouterosInterfaceType.PPP_CLIENT; + } + + @Override + public String getApiType() { + return "ppp-client"; + } + + @Override + public boolean hasDetailedReport() { + return false; + } + + @Override + public boolean hasMonitor() { + return true; + } + + public @Nullable String getMacAddress() { + return null; + } + + public @Nullable String getLocalAddress() { + return getProp("local-address"); + } + + public @Nullable String getRemoteAddress() { + return getProp("remote-address"); + } + + public @Nullable String getStatus() { + return getProp("status"); + } + + public @Nullable String getUptime() { + return getProp("uptime"); + } + + public @Nullable LocalDateTime getUptimeStart() { + return Converter.routerosPeriodBack(getUptime()); + } +}