mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
Fix stack overflow when an unknown CoAP Id is detected; Fix innerTemp (#16240)
channel creation for Gen2 devices not having this; Fix sensor initialization on wakeup; Fix missingf temperature5 description; add missing relay definition for shellywalldisplay; Some README fixes
This commit is contained in:
parent
d8aa8bf468
commit
555664693c
@ -96,12 +96,12 @@ The binding provides the same feature set across all devices as good as possible
|
||||
| shellywalldisplay | Shelly Plus Wall Display | SAWD-0A1XX10EU1 |
|
||||
|
||||
### Generation 2 Plus Mini series
|
||||
|
||||
| thing-type | Model | Vendor ID |
|
||||
| -------------------- | -------------------------------------------------------- | ---------------------------- |
|
||||
| shellymini1 | Shelly Plus 1 Mini with 1x relay | SNSW-001X16EU |
|
||||
| shellymini1pm | Shelly Plus 1PM Mini with 1x relay + power meter | SNPM-001PCEU16 |
|
||||
| shellyminipm | Shelly Plus PM Mini with 1x power meter | SNSW-001P8EU |
|
||||
|
||||
| shellymini1 | Shelly Plus 1 Mini with 1x relay | SNSW-001X8EU |
|
||||
| shellymini1pm | Shelly Plus 1PM Mini with 1x relay + power meter | SNSW-001P8EU |
|
||||
| shellyminipm | Shelly Plus PM Mini with 1x power meter | SNPM-001PCEU16 |
|
||||
|
||||
### Generation 2 Pro series
|
||||
|
||||
@ -402,14 +402,18 @@ A new alarm will be triggered on a new condition or every 5 minutes if the condi
|
||||
|
||||
### Non-battery powered devices
|
||||
|
||||
| Event Type | Description |
|
||||
| ----------- | --------------------------------------------------------------------------------- |
|
||||
| RESTARTED | The device has been restarted. This could be an indicator for a firmware problem. |
|
||||
| WEAK_SIGNAL | An alarm is triggered when RSSI is < -80, which indicates an unstable connection. |
|
||||
| OVER_TEMP | The device is overheating, check installation and housing. |
|
||||
| OVER_LOAD | An over load condition has been detected, e.g. from the roller motor. |
|
||||
| OVER_POWER | Maximum allowed power was exceeded. The relay was turned off. |
|
||||
| LOAD_ERROR | Device reported a load problem, so far Dimmer only. |
|
||||
| Event Type | Description |
|
||||
| ------------ | --------------------------------------------------------------------------------- |
|
||||
| RESTARTED | The device has been restarted. This could be an indicator for a firmware problem. |
|
||||
| WEAK_SIGNAL | An alarm is triggered when RSSI is < -80, which indicates an unstable connection. |
|
||||
| OVERTEMP | The device is overheating, check installation and housing. |
|
||||
| OVERLOAD | An over load condition has been detected, e.g. from the roller motor. |
|
||||
| OVERPOWER | Maximum allowed power was exceeded. The relay was turned off. |
|
||||
| LOAD_ERROR | Device reported a load problem. |
|
||||
| SENSOR_ERROR | Device reported a sensor problem. |
|
||||
| VALVE_ERROR | Device reported a problem with the valve. |
|
||||
| VIBRATION | Device reported vibration. |
|
||||
| LOW_BATTERY | Device reported low battery. |
|
||||
|
||||
### Sensors
|
||||
|
||||
|
@ -142,6 +142,9 @@ public class Shelly1CoIoTVersion2 extends Shelly1CoIoTProtocol implements Shelly
|
||||
|
||||
processed = true;
|
||||
switch (sen.id) {
|
||||
case "6": // 3EM: neutralCurrent
|
||||
break;
|
||||
|
||||
case "3106": // L, luminosity, lux, U32, -1
|
||||
case "3110": // S, luminosityLevel, dark/twilight/bright, "unknown"=unknown
|
||||
case "3111": // B, battery, 0-100%, unknown -1
|
||||
|
@ -359,16 +359,12 @@ public class Shelly1CoapHandler implements Shelly1CoapListener {
|
||||
valid &= addSensor(descr.sen.get(i));
|
||||
}
|
||||
}
|
||||
coiot.completeMissingSensorDefinition(sensorMap);
|
||||
|
||||
if (!valid) {
|
||||
logger.debug(
|
||||
"{}: Incompatible device description detected for CoIoT version {} (id length mismatch), discarding!",
|
||||
thingName, coiot.getVersion());
|
||||
|
||||
discover();
|
||||
return;
|
||||
logger.debug("{}: WARNING: Incompatible device description detected for CoIoT version {}!", thingName,
|
||||
coiot.getVersion());
|
||||
}
|
||||
|
||||
coiot.completeMissingSensorDefinition(sensorMap); // fix incomplete format
|
||||
} catch (JsonSyntaxException e) {
|
||||
logger.warn("{}: Unable to parse CoAP Device Description! JSON={}", thingName, payload);
|
||||
} catch (NullPointerException | IllegalArgumentException e) {
|
||||
|
@ -239,9 +239,6 @@ public class Shelly2ApiClient extends ShellyHttpClient {
|
||||
int duration = (int) (now() - rs.timerStartetAt);
|
||||
sr.timerRemaining = duration;
|
||||
}
|
||||
if (status.tmp == null) {
|
||||
status.tmp = new ShellySensorTmp();
|
||||
}
|
||||
if (rs.temperature != null) {
|
||||
if (status.tmp == null) {
|
||||
status.tmp = new ShellySensorTmp();
|
||||
|
@ -293,8 +293,10 @@ public abstract class ShellyBaseHandler extends BaseThingHandler
|
||||
return false;
|
||||
}
|
||||
|
||||
updateStatus(ThingStatus.UNKNOWN, ThingStatusDetail.CONFIGURATION_PENDING,
|
||||
messages.get("status.unknown.initializing"));
|
||||
if (profile.alwaysOn || !profile.isInitialized()) {
|
||||
updateStatus(ThingStatus.UNKNOWN, ThingStatusDetail.CONFIGURATION_PENDING,
|
||||
messages.get("status.unknown.initializing"));
|
||||
}
|
||||
|
||||
// Gen 1 only: Setup CoAP listener to we get the CoAP message, which triggers initialization even the thing
|
||||
// could not be fully initialized here. In this case the CoAP messages triggers auto-initialization (like the
|
||||
@ -513,7 +515,7 @@ public abstract class ShellyBaseHandler extends BaseThingHandler
|
||||
}
|
||||
|
||||
private double getNumber(Command command) {
|
||||
if (command instanceof QuantityType quantityCommand) {
|
||||
if (command instanceof QuantityType<?> quantityCommand) {
|
||||
return quantityCommand.doubleValue();
|
||||
}
|
||||
if (command instanceof DecimalType decimalCommand) {
|
||||
@ -1279,7 +1281,7 @@ public abstract class ShellyBaseHandler extends BaseThingHandler
|
||||
public double getChannelDouble(String group, String channel) {
|
||||
State value = getChannelValue(group, channel);
|
||||
if (value != UnDefType.NULL) {
|
||||
if (value instanceof QuantityType quantityCommand) {
|
||||
if (value instanceof QuantityType<?> quantityCommand) {
|
||||
return quantityCommand.toBigDecimal().doubleValue();
|
||||
}
|
||||
if (value instanceof DecimalType decimalCommand) {
|
||||
|
@ -534,7 +534,7 @@ public class ShellyComponents {
|
||||
updated |= thingHandler.updateInputs(status);
|
||||
|
||||
if (updated) {
|
||||
thingHandler.updateChannel(profile.getControlGroup(0), CHANNEL_LAST_UPDATE, getTimestamp());
|
||||
thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_LAST_UPDATE, getTimestamp());
|
||||
}
|
||||
}
|
||||
return updated;
|
||||
|
@ -239,7 +239,7 @@ public class ShellyUtils {
|
||||
if (command instanceof DecimalType decimalCommand) {
|
||||
return decimalCommand.doubleValue();
|
||||
}
|
||||
if (command instanceof QuantityType quantityCommand) {
|
||||
if (command instanceof QuantityType<?> quantityCommand) {
|
||||
return quantityCommand.doubleValue();
|
||||
}
|
||||
throw new IllegalArgumentException("Unable to convert number");
|
||||
|
@ -246,7 +246,7 @@ channel-type.shelly.temperature3.description = Temperature of external Sensor #3
|
||||
channel-type.shelly.temperature4.label = Temperature 4
|
||||
channel-type.shelly.temperature4.description = Temperature of external Sensor #4
|
||||
channel-type.shelly.temperature5.label = Temperature 5
|
||||
channel-type.shelly.temperature6.description = Temperature of external Sensor #5
|
||||
channel-type.shelly.temperature5.description = Temperature of external Sensor #5
|
||||
channel-type.shelly.targetTemp.label = Target Temperature
|
||||
channel-type.shelly.targetTemp.description = Target Temperature in °C to be reached in auto-temperature mode
|
||||
channel-type.shelly.humidity.label = Humidity
|
||||
|
@ -38,6 +38,7 @@
|
||||
<category>Sensor</category>
|
||||
<channel-groups>
|
||||
<channel-group id="sensors" typeId="sensorData"/>
|
||||
<channel-group id="relay" typeId="relayChannel"/>
|
||||
<channel-group id="device" typeId="deviceStatus"/>
|
||||
</channel-groups>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user