adapt to 4.1.x
This commit is contained in:
parent
13b4080e4a
commit
7c14d57483
|
@ -431,16 +431,12 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.openhab.addons.bundles</groupId>
|
<groupId>org.openhab.addons.bundles</groupId>
|
||||||
<<<<<<< HEAD
|
|
||||||
<artifactId>org.openhab.binding.ecovacs</artifactId>
|
<artifactId>org.openhab.binding.ecovacs</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.openhab.addons.bundles</groupId>
|
<groupId>org.openhab.addons.bundles</groupId>
|
||||||
<artifactId>org.openhab.binding.ecowatt</artifactId>
|
<artifactId>org.openhab.binding.ecowatt</artifactId>
|
||||||
=======
|
|
||||||
<artifactId>org.openhab.binding.ecowitt</artifactId>
|
|
||||||
>>>>>>> 833ca96673 (initial commit for ecowitt binding)
|
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.openhab.addons.bundles</groupId>
|
<groupId>org.openhab.addons.bundles</groupId>
|
||||||
<artifactId>org.openhab.addons.reactor.bundles</artifactId>
|
<artifactId>org.openhab.addons.reactor.bundles</artifactId>
|
||||||
<version>3.2.0</version>
|
<version>4.1.1-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>org.openhab.binding.ecowitt</artifactId>
|
<artifactId>org.openhab.binding.ecowitt</artifactId>
|
||||||
|
|
|
@ -12,15 +12,13 @@
|
||||||
*/
|
*/
|
||||||
package interfaces;
|
package interfaces;
|
||||||
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNull;
|
|
||||||
import org.openhab.core.thing.Channel;
|
import org.openhab.core.thing.Channel;
|
||||||
import org.openhab.core.thing.binding.ThingHandler;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Av3m - Initial contribution
|
* @author Av3m - Initial contribution
|
||||||
*/
|
*/
|
||||||
public interface ChannelUpdater {
|
public interface ChannelUpdater {
|
||||||
void updateChannel(Channel ch, String strValue);
|
void updateChannel(Channel ch, String strValue);
|
||||||
|
|
||||||
void setStateUpdater(StateUpdater stateUpdater);
|
void setStateUpdater(StateUpdater stateUpdater);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,5 +21,6 @@ import org.openhab.core.types.State;
|
||||||
*/
|
*/
|
||||||
public interface StateUpdater {
|
public interface StateUpdater {
|
||||||
Channel getChannel(String channelName);
|
Channel getChannel(String channelName);
|
||||||
|
|
||||||
void updateState(ChannelUID uid, State state);
|
void updateState(ChannelUID uid, State state);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,11 @@
|
||||||
*/
|
*/
|
||||||
package org.openhab.binding.ecowitt.internal.handlers;
|
package org.openhab.binding.ecowitt.internal.handlers;
|
||||||
|
|
||||||
import interfaces.StateUpdater;
|
import javax.servlet.Servlet;
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
|
import org.eclipse.jetty.server.Server;
|
||||||
import org.eclipse.jetty.server.ServerConnector;
|
import org.eclipse.jetty.server.ServerConnector;
|
||||||
import org.eclipse.jetty.servlet.ServletHandler;
|
import org.eclipse.jetty.servlet.ServletHandler;
|
||||||
import org.eclipse.jetty.servlet.ServletHolder;
|
import org.eclipse.jetty.servlet.ServletHolder;
|
||||||
|
@ -28,16 +31,13 @@ import org.openhab.core.types.Command;
|
||||||
import org.openhab.core.types.State;
|
import org.openhab.core.types.State;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.eclipse.jetty.server.Server;
|
|
||||||
|
|
||||||
import javax.servlet.Servlet;
|
import interfaces.StateUpdater;
|
||||||
import javax.servlet.ServletException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Av3m - Initial contribution
|
* @author Av3m - Initial contribution
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
public class EcowittThingHandler<T extends AbstractEcowittServlet> extends BaseThingHandler implements StateUpdater {
|
public class EcowittThingHandler<T extends AbstractEcowittServlet> extends BaseThingHandler implements StateUpdater {
|
||||||
private final Logger logger = LoggerFactory.getLogger(EcowittThingHandler.class);
|
private final Logger logger = LoggerFactory.getLogger(EcowittThingHandler.class);
|
||||||
|
|
||||||
|
@ -55,8 +55,6 @@ public class EcowittThingHandler<T extends AbstractEcowittServlet> extends BaseT
|
||||||
// no command supported - do nothing!
|
// no command supported - do nothing!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
config = getConfigAs(ecowittConfiguration.class);
|
config = getConfigAs(ecowittConfiguration.class);
|
||||||
|
@ -84,10 +82,7 @@ public class EcowittThingHandler<T extends AbstractEcowittServlet> extends BaseT
|
||||||
String thingTypeName = thing.getThingTypeUID().getId();
|
String thingTypeName = thing.getThingTypeUID().getId();
|
||||||
logger.info("url base: {}", thingTypeName);
|
logger.info("url base: {}", thingTypeName);
|
||||||
|
|
||||||
ServletHolder holder = servletHandler.addServletWithMapping(
|
ServletHolder holder = servletHandler.addServletWithMapping(this.classServlet, "/" + thingTypeName);
|
||||||
this.classServlet, "/" + thingTypeName);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
server.start();
|
server.start();
|
||||||
|
@ -109,7 +104,6 @@ public class EcowittThingHandler<T extends AbstractEcowittServlet> extends BaseT
|
||||||
logger.error("{}", e.getMessage());
|
logger.error("{}", e.getMessage());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -132,6 +126,5 @@ public class EcowittThingHandler<T extends AbstractEcowittServlet> extends BaseT
|
||||||
@Override
|
@Override
|
||||||
public void updateState(ChannelUID uid, State state) {
|
public void updateState(ChannelUID uid, State state) {
|
||||||
super.updateState(uid, state);
|
super.updateState(uid, state);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,12 @@
|
||||||
*/
|
*/
|
||||||
package org.openhab.binding.ecowitt.internal.servlets;
|
package org.openhab.binding.ecowitt.internal.servlets;
|
||||||
|
|
||||||
import interfaces.StateUpdater;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.eclipse.jetty.http.HttpStatus;
|
import org.eclipse.jetty.http.HttpStatus;
|
||||||
|
@ -20,12 +25,7 @@ import org.openhab.core.thing.Channel;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import interfaces.StateUpdater;
|
||||||
import javax.servlet.http.HttpServlet;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Av3m - Initial contribution
|
* @author Av3m - Initial contribution
|
||||||
|
@ -41,9 +41,7 @@ public abstract class AbstractEcowittServlet extends HttpServlet {
|
||||||
protected StateUpdater stateUpdater = null;
|
protected StateUpdater stateUpdater = null;
|
||||||
private final Logger logger = LoggerFactory.getLogger(AbstractEcowittServlet.class);
|
private final Logger logger = LoggerFactory.getLogger(AbstractEcowittServlet.class);
|
||||||
|
|
||||||
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
|
||||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
|
||||||
{
|
|
||||||
for (Map.Entry<String, String[]> stringEntry : request.getParameterMap().entrySet()) {
|
for (Map.Entry<String, String[]> stringEntry : request.getParameterMap().entrySet()) {
|
||||||
if (stringEntry.getValue().length > 0 && !stringEntry.getValue()[0].equals("")) {
|
if (stringEntry.getValue().length > 0 && !stringEntry.getValue()[0].equals("")) {
|
||||||
updateValue(stringEntry.getKey(), stringEntry.getValue()[0]);
|
updateValue(stringEntry.getKey(), stringEntry.getValue()[0]);
|
||||||
|
@ -54,9 +52,12 @@ public abstract class AbstractEcowittServlet extends HttpServlet {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateValue(String field, String value) {
|
private void updateValue(String field, String value) {
|
||||||
if ( stateUpdater == null ) { return; }
|
if (stateUpdater == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable Channel ch = stateUpdater.getChannel(field);
|
@Nullable
|
||||||
|
Channel ch = stateUpdater.getChannel(field);
|
||||||
|
|
||||||
if (ch == null) {
|
if (ch == null) {
|
||||||
logger.debug("channel for field {} (current value: {}) not implemented", field, value);
|
logger.debug("channel for field {} (current value: {}) not implemented", field, value);
|
||||||
|
@ -64,9 +65,10 @@ public abstract class AbstractEcowittServlet extends HttpServlet {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateChannel(ch, value);
|
updateChannel(ch, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void updateChannel(Channel ch, String strValue);
|
protected abstract void updateChannel(Channel ch, String strValue);
|
||||||
|
|
||||||
public abstract String getName();
|
public abstract String getName();
|
||||||
|
|
||||||
public void setStateUpdater(StateUpdater stateUpdater) {
|
public void setStateUpdater(StateUpdater stateUpdater) {
|
||||||
|
|
|
@ -12,6 +12,10 @@
|
||||||
*/
|
*/
|
||||||
package org.openhab.binding.ecowitt.internal.servlets;
|
package org.openhab.binding.ecowitt.internal.servlets;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.core.library.types.DateTimeType;
|
import org.openhab.core.library.types.DateTimeType;
|
||||||
|
@ -24,12 +28,6 @@ import org.openhab.core.library.unit.Units;
|
||||||
import org.openhab.core.thing.Channel;
|
import org.openhab.core.thing.Channel;
|
||||||
import org.openhab.core.thing.type.ChannelTypeUID;
|
import org.openhab.core.thing.type.ChannelTypeUID;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.ZoneOffset;
|
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Av3m - Initial contribution
|
* @author Av3m - Initial contribution
|
||||||
*/
|
*/
|
||||||
|
@ -45,14 +43,18 @@ public class EcowittGW1000Servlet extends AbstractEcowittServlet {
|
||||||
return EcowittGW1000Servlet.class.getName();
|
return EcowittGW1000Servlet.class.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateChannel(Channel ch, String strValue) {
|
protected void updateChannel(Channel ch, String strValue) {
|
||||||
if (stateUpdater == null) {return; }
|
if (stateUpdater == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
String id = ch.getUID().getId();
|
String id = ch.getUID().getId();
|
||||||
@Nullable ChannelTypeUID channelUID = ch.getChannelTypeUID();
|
@Nullable
|
||||||
if ( channelUID == null ) {return; }
|
ChannelTypeUID channelUID = ch.getChannelTypeUID();
|
||||||
|
if (channelUID == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
String type = channelUID.getId();
|
String type = channelUID.getId();
|
||||||
float value;
|
float value;
|
||||||
|
@ -131,16 +133,23 @@ public class EcowittGW1000Servlet extends AbstractEcowittServlet {
|
||||||
case "soilbatt4":
|
case "soilbatt4":
|
||||||
float minLevel = 1.1f;
|
float minLevel = 1.1f;
|
||||||
float maxLevel = 1.5f;
|
float maxLevel = 1.5f;
|
||||||
if (value >= maxLevel) {batLevel = 100;}
|
if (value >= maxLevel) {
|
||||||
else if (value < minLevel) {batLevel = 0;}
|
batLevel = 100;
|
||||||
else { batLevel = (int) (100 * (value - minLevel) / (maxLevel - minLevel)); }
|
} else if (value < minLevel) {
|
||||||
|
batLevel = 0;
|
||||||
|
} else {
|
||||||
|
batLevel = (int) (100 * (value - minLevel) / (maxLevel - minLevel));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "wh65batt":
|
case "wh65batt":
|
||||||
case "battout":
|
case "battout":
|
||||||
case "wh26batt":
|
case "wh26batt":
|
||||||
case "wh25batt":
|
case "wh25batt":
|
||||||
if ( value == 0) { batLevel = 100;}
|
if (value == 0) {
|
||||||
else { batLevel = 0;}
|
batLevel = 100;
|
||||||
|
} else {
|
||||||
|
batLevel = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
stateUpdater.updateState(ch.getUID(), new QuantityType<>(batLevel, Units.PERCENT));
|
stateUpdater.updateState(ch.getUID(), new QuantityType<>(batLevel, Units.PERCENT));
|
||||||
|
@ -148,7 +157,4 @@ public class EcowittGW1000Servlet extends AbstractEcowittServlet {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,73 +9,238 @@
|
||||||
<label>Ecowitt GW1000 Thing</label>
|
<label>Ecowitt GW1000 Thing</label>
|
||||||
<description>Thing for GW1000 Weather Station</description>
|
<description>Thing for GW1000 Weather Station</description>
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="tempf" typeId="system.outdoor-temperature"><label>outdoor temperature</label><description>outdoor temperature</description></channel>
|
<channel id="tempf" typeId="system.outdoor-temperature">
|
||||||
<channel id="tempinf" typeId="system.outdoor-temperature"><label>indoor temperature</label><description>indoor temperature</description></channel>
|
<label>outdoor temperature</label>
|
||||||
<channel id="temp1f" typeId="system.outdoor-temperature"><label>temperature CH1</label><description>temperature CH1</description></channel>
|
<description>outdoor temperature</description>
|
||||||
<channel id="temp2f" typeId="system.outdoor-temperature"><label>temperature CH2</label><description>temperature CH2</description></channel>
|
</channel>
|
||||||
<channel id="temp3f" typeId="system.outdoor-temperature"><label>temperature CH3</label><description>temperature CH3</description></channel>
|
<channel id="tempinf" typeId="system.outdoor-temperature">
|
||||||
<channel id="temp4f" typeId="system.outdoor-temperature"><label>temperature CH4</label><description>temperature CH4</description></channel>
|
<label>indoor temperature</label>
|
||||||
<channel id="temp5f" typeId="system.outdoor-temperature"><label>temperature CH5</label><description>temperature CH5</description></channel>
|
<description>indoor temperature</description>
|
||||||
<channel id="temp6f" typeId="system.outdoor-temperature"><label>temperature CH6</label><description>temperature CH6</description></channel>
|
</channel>
|
||||||
<channel id="temp7f" typeId="system.outdoor-temperature"><label>temperature CH7</label><description>temperature CH7</description></channel>
|
<channel id="temp1f" typeId="system.outdoor-temperature">
|
||||||
<channel id="temp8f" typeId="system.outdoor-temperature"><label>temperature CH8</label><description>temperature CH8</description></channel>
|
<label>temperature CH1</label>
|
||||||
|
<description>temperature CH1</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="temp2f" typeId="system.outdoor-temperature">
|
||||||
|
<label>temperature CH2</label>
|
||||||
|
<description>temperature CH2</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="temp3f" typeId="system.outdoor-temperature">
|
||||||
|
<label>temperature CH3</label>
|
||||||
|
<description>temperature CH3</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="temp4f" typeId="system.outdoor-temperature">
|
||||||
|
<label>temperature CH4</label>
|
||||||
|
<description>temperature CH4</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="temp5f" typeId="system.outdoor-temperature">
|
||||||
|
<label>temperature CH5</label>
|
||||||
|
<description>temperature CH5</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="temp6f" typeId="system.outdoor-temperature">
|
||||||
|
<label>temperature CH6</label>
|
||||||
|
<description>temperature CH6</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="temp7f" typeId="system.outdoor-temperature">
|
||||||
|
<label>temperature CH7</label>
|
||||||
|
<description>temperature CH7</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="temp8f" typeId="system.outdoor-temperature">
|
||||||
|
<label>temperature CH8</label>
|
||||||
|
<description>temperature CH8</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
<channel id="humidity" typeId="system.atmospheric-humidity"><label>outdoor humidity</label><description>outdoor humidity</description></channel>
|
<channel id="humidity" typeId="system.atmospheric-humidity">
|
||||||
<channel id="humidityin" typeId="humidity"><label>indoor humidity</label><description>indoor humidity</description></channel>
|
<label>outdoor humidity</label>
|
||||||
<channel id="humidity1" typeId="humidity"><label>humidity CH1</label><description>humidity CH1</description></channel>
|
<description>outdoor humidity</description>
|
||||||
<channel id="humidity2" typeId="humidity"><label>humidity CH2</label><description>humidity CH2</description></channel>
|
</channel>
|
||||||
<channel id="humidity3" typeId="humidity"><label>humidity CH3</label><description>humidity CH3</description></channel>
|
<channel id="humidityin" typeId="humidity">
|
||||||
<channel id="humidity4" typeId="humidity"><label>humidity CH4</label><description>humidity CH4</description></channel>
|
<label>indoor humidity</label>
|
||||||
<channel id="humidity5" typeId="humidity"><label>humidity CH5</label><description>humidity CH5</description></channel>
|
<description>indoor humidity</description>
|
||||||
<channel id="humidity6" typeId="humidity"><label>humidity CH6</label><description>humidity CH6</description></channel>
|
</channel>
|
||||||
<channel id="humidity7" typeId="humidity"><label>humidity CH7</label><description>humidity CH7</description></channel>
|
<channel id="humidity1" typeId="humidity">
|
||||||
<channel id="humidity8" typeId="humidity"><label>humidity CH8</label><description>humidity CH8</description></channel>
|
<label>humidity CH1</label>
|
||||||
|
<description>humidity CH1</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="humidity2" typeId="humidity">
|
||||||
|
<label>humidity CH2</label>
|
||||||
|
<description>humidity CH2</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="humidity3" typeId="humidity">
|
||||||
|
<label>humidity CH3</label>
|
||||||
|
<description>humidity CH3</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="humidity4" typeId="humidity">
|
||||||
|
<label>humidity CH4</label>
|
||||||
|
<description>humidity CH4</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="humidity5" typeId="humidity">
|
||||||
|
<label>humidity CH5</label>
|
||||||
|
<description>humidity CH5</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="humidity6" typeId="humidity">
|
||||||
|
<label>humidity CH6</label>
|
||||||
|
<description>humidity CH6</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="humidity7" typeId="humidity">
|
||||||
|
<label>humidity CH7</label>
|
||||||
|
<description>humidity CH7</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="humidity8" typeId="humidity">
|
||||||
|
<label>humidity CH8</label>
|
||||||
|
<description>humidity CH8</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
<channel id="winddir" typeId="system.wind-direction"><label>wind direction</label><description>wind direction</description></channel>
|
<channel id="winddir" typeId="system.wind-direction">
|
||||||
<channel id="windspeedmph" typeId="system.wind-speed"><label>wind speed</label><description>wind speed</description></channel>
|
<label>wind direction</label>
|
||||||
<channel id="windgustmph" typeId="system.wind-speed"><label>wind gust</label><description>wind gust</description></channel>
|
<description>wind direction</description>
|
||||||
<channel id="maxdailygust" typeId="system.wind-speed"><label>daily maximum value gust</label><description>daily maximum value gust</description></channel>
|
</channel>
|
||||||
|
<channel id="windspeedmph" typeId="system.wind-speed">
|
||||||
|
<label>wind speed</label>
|
||||||
|
<description>wind speed</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="windgustmph" typeId="system.wind-speed">
|
||||||
|
<label>wind gust</label>
|
||||||
|
<description>wind gust</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="maxdailygust" typeId="system.wind-speed">
|
||||||
|
<label>daily maximum value gust</label>
|
||||||
|
<description>daily maximum value gust</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
<channel id="totalrainin" typeId="rain-amount"><label>total amount of rain</label><description>total amount of rain</description></channel>
|
<channel id="totalrainin" typeId="rain-amount">
|
||||||
<channel id="eventrainin" typeId="rain-amount"><label>amount of rain (event-based)</label><description>amount of rain (event-based)</description></channel>
|
<label>total amount of rain</label>
|
||||||
<channel id="yearlyrainin" typeId="rain-amount"><label>yearly amount of rain</label><description>yearly amount of rain</description></channel>
|
<description>total amount of rain</description>
|
||||||
<channel id="monthlyrainin" typeId="rain-amount"><label>monthly amount of rain</label><description>monthly amount of rain</description></channel>
|
</channel>
|
||||||
<channel id="weeklyrainin" typeId="rain-amount"><label>weekly amount of rain</label><description>weekly amount of rain</description></channel>
|
<channel id="eventrainin" typeId="rain-amount">
|
||||||
<channel id="dailyrainin" typeId="rain-amount"><label>daily amount of rain</label><description>daily amount of rain</description></channel>
|
<label>amount of rain (event-based)</label>
|
||||||
<channel id="hourlyrainin" typeId="rain-amount"><label>hourly amount of rain</label><description>hourly amount of rain</description></channel>
|
<description>amount of rain (event-based)</description>
|
||||||
<channel id="rainratein" typeId="rain-rate"><label>rain amount per hour</label><description>rain amount per hour</description></channel>
|
</channel>
|
||||||
|
<channel id="yearlyrainin" typeId="rain-amount">
|
||||||
|
<label>yearly amount of rain</label>
|
||||||
|
<description>yearly amount of rain</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="monthlyrainin" typeId="rain-amount">
|
||||||
|
<label>monthly amount of rain</label>
|
||||||
|
<description>monthly amount of rain</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="weeklyrainin" typeId="rain-amount">
|
||||||
|
<label>weekly amount of rain</label>
|
||||||
|
<description>weekly amount of rain</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="dailyrainin" typeId="rain-amount">
|
||||||
|
<label>daily amount of rain</label>
|
||||||
|
<description>daily amount of rain</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="hourlyrainin" typeId="rain-amount">
|
||||||
|
<label>hourly amount of rain</label>
|
||||||
|
<description>hourly amount of rain</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="rainratein" typeId="rain-rate">
|
||||||
|
<label>rain amount per hour</label>
|
||||||
|
<description>rain amount per hour</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
<channel id="solarradiation" typeId="solar-radiation"><label>solar radiation (intensity)</label><description>solar radiation (intensity)</description></channel>
|
<channel id="solarradiation" typeId="solar-radiation">
|
||||||
<channel id="uv" typeId="uv-index"><label>uv index</label><description>uv index</description></channel>
|
<label>solar radiation (intensity)</label>
|
||||||
|
<description>solar radiation (intensity)</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="uv" typeId="uv-index">
|
||||||
|
<label>uv index</label>
|
||||||
|
<description>uv index</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
|
|
||||||
<channel id="baromabsin" typeId="system.barometric-pressure"><label>absolute barometric pressure</label><description>absolute barometric pressure</description></channel>
|
<channel id="baromabsin" typeId="system.barometric-pressure">
|
||||||
<channel id="baromrelin" typeId="system.barometric-pressure"><label>relative barometric pressure</label><description>relative barometric pressure</description></channel>
|
<label>absolute barometric pressure</label>
|
||||||
|
<description>absolute barometric pressure</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="baromrelin" typeId="system.barometric-pressure">
|
||||||
|
<label>relative barometric pressure</label>
|
||||||
|
<description>relative barometric pressure</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
<channel id="soilmoisture1" typeId="moisture"><label>soil moisture CH1</label><description>soil moisture CH1</description></channel>
|
<channel id="soilmoisture1" typeId="moisture">
|
||||||
<channel id="soilmoisture2" typeId="moisture"><label>soil moisture CH2</label><description>soil moisture CH2</description></channel>
|
<label>soil moisture CH1</label>
|
||||||
<channel id="soilmoisture3" typeId="moisture"><label>soil moisture CH3</label><description>soil moisture CH3</description></channel>
|
<description>soil moisture CH1</description>
|
||||||
<channel id="soilmoisture4" typeId="moisture"><label>soil moisture CH4</label><description>soil moisture CH4</description></channel>
|
</channel>
|
||||||
|
<channel id="soilmoisture2" typeId="moisture">
|
||||||
|
<label>soil moisture CH2</label>
|
||||||
|
<description>soil moisture CH2</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="soilmoisture3" typeId="moisture">
|
||||||
|
<label>soil moisture CH3</label>
|
||||||
|
<description>soil moisture CH3</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="soilmoisture4" typeId="moisture">
|
||||||
|
<label>soil moisture CH4</label>
|
||||||
|
<description>soil moisture CH4</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
<channel id="lightning" typeId="lightning-distance"><label>distance of last lightning</label><description>distance of last lightning</description></channel>
|
<channel id="lightning" typeId="lightning-distance">
|
||||||
<channel id="lightning_time" typeId="lightning-timestamp"><label>timestamp of last lightning</label><description>timestamp of last lightning</description></channel>
|
<label>distance of last lightning</label>
|
||||||
<channel id="lightning_num" typeId="lightning-num"><label>number of lightnings per day</label><description>number of lightnings</description></channel>
|
<description>distance of last lightning</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="lightning_time" typeId="lightning-timestamp">
|
||||||
|
<label>timestamp of last lightning</label>
|
||||||
|
<description>timestamp of last lightning</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="lightning_num" typeId="lightning-num">
|
||||||
|
<label>number of lightnings per day</label>
|
||||||
|
<description>number of lightnings</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
|
|
||||||
<channel id="pm25_ch1" typeId="pm25-particles"><label>PM2.5 particle sensor CH1</label><description>PM2.5 particle sensor CH1</description></channel>
|
<channel id="pm25_ch1" typeId="pm25-particles">
|
||||||
<channel id="pm25_avg_24h_ch1" typeId="pm25-particles"><label>daily average PM2.5 particle sensor CH1</label><description>daily average PM2.5 particle sensor CH1</description></channel>
|
<label>PM2.5 particle sensor CH1</label>
|
||||||
<channel id="pm25_ch2" typeId="pm25-particles"><label>PM2.5 particle sensor CH2</label><description>PM2.5 particle sensor CH2</description></channel>
|
<description>PM2.5 particle sensor CH1</description>
|
||||||
<channel id="pm25_avg_24h_ch2" typeId="pm25-particles"><label>daily average PM2.5 particle sensor CH2</label><description>daily average PM2.5 particle sensor CH2</description></channel>
|
</channel>
|
||||||
|
<channel id="pm25_avg_24h_ch1" typeId="pm25-particles">
|
||||||
|
<label>daily average PM2.5 particle sensor CH1</label>
|
||||||
|
<description>daily average PM2.5 particle sensor CH1</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="pm25_ch2" typeId="pm25-particles">
|
||||||
|
<label>PM2.5 particle sensor CH2</label>
|
||||||
|
<description>PM2.5 particle sensor CH2</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="pm25_avg_24h_ch2" typeId="pm25-particles">
|
||||||
|
<label>daily average PM2.5 particle sensor CH2</label>
|
||||||
|
<description>daily average PM2.5 particle sensor CH2</description>
|
||||||
|
</channel>
|
||||||
|
|
||||||
|
|
||||||
<channel id="wh57batt" typeId="system.battery-level"><label>battery level WH57 sensor</label><description>battery level WH57 sensor</description></channel>
|
<channel id="wh57batt" typeId="system.battery-level">
|
||||||
<channel id="wh65batt" typeId="system.battery-level"><label>battery level WH65 sensor</label><description>battery level WH65 sensor</description></channel>
|
<label>battery level WH57 sensor</label>
|
||||||
<channel id="pm25batt1" typeId="system.battery-level"><label>battery level PM2.5 CH1 sensor</label><description>battery level PM2.5 CH1 sensor</description></channel>
|
<description>battery level WH57 sensor</description>
|
||||||
<channel id="pm25batt2" typeId="system.battery-level"><label>battery level PM2.5 CH2 sensor</label><description>battery level PM2.5 CH2 sensor</description></channel>
|
</channel>
|
||||||
<channel id="soilbatt1" typeId="system.battery-level"><label>battery level soil moisture sensor CH1</label><description>battery level soil moisture sensor CH1</description></channel>
|
<channel id="wh65batt" typeId="system.battery-level">
|
||||||
<channel id="soilbatt2" typeId="system.battery-level"><label>battery level soil moisture sensor CH2</label><description>battery level soil moisture sensor CH2</description></channel>
|
<label>battery level WH65 sensor</label>
|
||||||
<channel id="soilbatt3" typeId="system.battery-level"><label>battery level soil moisture sensor CH3</label><description>battery level soil moisture sensor CH3</description></channel>
|
<description>battery level WH65 sensor</description>
|
||||||
<channel id="soilbatt4" typeId="system.battery-level"><label>battery level soil moisture sensor CH4</label><description>battery level soil moisture sensor CH4</description></channel>
|
</channel>
|
||||||
|
<channel id="pm25batt1" typeId="system.battery-level">
|
||||||
|
<label>battery level PM2.5 CH1 sensor</label>
|
||||||
|
<description>battery level PM2.5 CH1 sensor</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="pm25batt2" typeId="system.battery-level">
|
||||||
|
<label>battery level PM2.5 CH2 sensor</label>
|
||||||
|
<description>battery level PM2.5 CH2 sensor</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="soilbatt1" typeId="system.battery-level">
|
||||||
|
<label>battery level soil moisture sensor CH1</label>
|
||||||
|
<description>battery level soil moisture sensor CH1</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="soilbatt2" typeId="system.battery-level">
|
||||||
|
<label>battery level soil moisture sensor CH2</label>
|
||||||
|
<description>battery level soil moisture sensor CH2</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="soilbatt3" typeId="system.battery-level">
|
||||||
|
<label>battery level soil moisture sensor CH3</label>
|
||||||
|
<description>battery level soil moisture sensor CH3</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="soilbatt4" typeId="system.battery-level">
|
||||||
|
<label>battery level soil moisture sensor CH4</label>
|
||||||
|
<description>battery level soil moisture sensor CH4</description>
|
||||||
|
</channel>
|
||||||
</channels>
|
</channels>
|
||||||
<config-description>
|
<config-description>
|
||||||
<parameter name="bindHostname" type="text" required="true">
|
<parameter name="bindHostname" type="text" required="true">
|
||||||
|
|
Loading…
Reference in New Issue