From d0f4b848412a94822cf6f10cda7fde225b61b33b Mon Sep 17 00:00:00 2001 From: Markus Michels Date: Wed, 16 Jun 2021 00:00:56 +0200 Subject: [PATCH] =?UTF-8?q?[shelly]=C2=A01PM/1L/2.5:=20New=20device#supply?= =?UTF-8?q?Voltage;=20Motion:=20Missing=20channel=20for=20vibration;=20UNI?= =?UTF-8?q?:=20Unit=20for=20ADC=20voltage;=20PF=20for=20EM;=20Bulb:=20fix?= =?UTF-8?q?=20range=20for=20color=20temp=20(#10815)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixes #10738, #10799 Signed-off-by: Markus Michels * - Feature #10090 New device#supplyVoltage channel for Shelly 2.5, 1PM and 1L - Change #10039 Info on "not reachable / timeout" should be warning, not info - Fix #10799 Missing Channel Definition for Vibration Events - Fix #10738 Shelly UNI - ADC Voltage units of measure missing - Fix #10111 Creating Equipment from Shelly Bulb Duo causes wrong min/max - README updated Signed-off-by: Markus Michels * #10737 Shelly EM - add powerFactor channel support Signed-off-by: Markus Michels * README updated Signed-off-by: Markus Michels * channel powerFactor (EM+EM3) is now of type Number:Dimensionless Signed-off-by: Markus Michels * Fix for #10864: Do not trigger same alarm within 5 minutes Signed-off-by: Markus Michels * better logic for alarm filter Signed-off-by: Markus Michels --- bundles/org.openhab.binding.shelly/README.md | 9 ++++--- .../internal/ShellyBindingConstants.java | 1 + .../shelly/internal/api/ShellyApiJsonDTO.java | 5 ++++ .../internal/coap/ShellyCoIoTVersion1.java | 3 ++- .../internal/coap/ShellyCoIoTVersion2.java | 2 +- .../internal/handler/ShellyBaseHandler.java | 8 +++--- .../internal/handler/ShellyComponents.java | 27 ++++++++++++------- .../internal/handler/ShellyRelayHandler.java | 14 +++++++++- .../manager/ShellyManagerOverviewPage.java | 2 +- .../provider/ShellyChannelDefinitions.java | 11 +++++--- .../OH-INF/i18n/shelly_de.properties | 4 ++- .../main/resources/OH-INF/thing/lights.xml | 3 +-- .../src/main/resources/OH-INF/thing/relay.xml | 9 ++++++- .../main/resources/OH-INF/thing/sensor.xml | 2 +- 14 files changed, 72 insertions(+), 28 deletions(-) diff --git a/bundles/org.openhab.binding.shelly/README.md b/bundles/org.openhab.binding.shelly/README.md index 501e9dd32..aed0dca82 100644 --- a/bundles/org.openhab.binding.shelly/README.md +++ b/bundles/org.openhab.binding.shelly/README.md @@ -207,6 +207,7 @@ Every device has a channel group `device` with the following channels: | |internalTemp |Number |yes |Internal device temperature (when provided by the device) | | |selfTest |String |yes |Result from device self-test (pending/not_completed/running/completed/unknown) | | |alarm |Trigger |yes |Self-Test result not_completed/completed/running/pending | +| |supplyVoltage |Number |yes |Shelly 1PM, 1L, 2.5: Supply voltage (fixed or measured depending on device) | | |accumulatedWatts |Number |yes |Accumulated power in W of the device (including all meters) | | |accumulatedTotal |Number |yes |Accumulated total power in kwh of the device (including all meters) | | |accumulatedReturned|Number |yes |Accumulated returned power in kwh of the device (including all meters) | @@ -401,12 +402,14 @@ In this case the is no real measurement based on power consumption, but the Shel | |returnedKWH |Number |yes |Total returned energy, kwh | | |reactiveWatts|Number |yes |Instantaneous reactive power, Watts | | |voltage |Number |yes |RMS voltage, Volts | +| |powerFactor |Number |yes |Power Factor in percent | | |lastUpdate |DateTime |yes |Timestamp of the last measurement | |meter2 |currentWatts |Number |yes |Current power consumption in Watts | | |totalKWH |Number |yes |Total energy consumption in Watts since the device powered up (resets on restart)| | |returnedKWH |Number |yes |Total returned energy, kwh | | |reactiveWatts|Number |yes |Instantaneous reactive power, Watts | | |voltage |Number |yes |RMS voltage, Volts | +| |powerFactor |Number |yes |Power Factor in percent | | |lastUpdate |DateTime |yes |Timestamp of the last measurement | ### Shelly 3EM (thing-type: shellyem3) @@ -431,7 +434,7 @@ The Thing id is derived from the service name, so that's the reason why the Thin | |reactiveWatts|Number |yes |Instantaneous reactive power, Watts | | |voltage |Number |yes |RMS voltage, Volts | | |current |Number |yes |Current in A | -| |powerFactor |Number |yes |Power Factor | +| |powerFactor |Number |yes |Power Factor in percent | | |lastUpdate |DateTime |yes |Timestamp of the last measurement | |meter2 |currentWatts |Number |yes |Current power consumption in Watts | | |totalKWH |Number |yes |Total energy consumption in Watts since the device powered up (resets on restart)| @@ -439,7 +442,7 @@ The Thing id is derived from the service name, so that's the reason why the Thin | |reactiveWatts|Number |yes |Instantaneous reactive power, Watts | | |voltage |Number |yes |RMS voltage, Volts | | |current |Number |yes |Current in A | -| |powerFactor |Number |yes |Power Factor | +| |powerFactor |Number |yes |Power Factor in percent | | |lastUpdate |DateTime |yes |Timestamp of the last measurement | |meter3 |currentWatts |Number |yes |Current power consumption in Watts | | |totalKWH |Number |yes |Total energy consumption in Watts since the device powered up (resets on restart)| @@ -447,7 +450,7 @@ The Thing id is derived from the service name, so that's the reason why the Thin | |reactiveWatts|Number |yes |Instantaneous reactive power, Watts | | |voltage |Number |yes |RMS voltage, Volts | | |current |Number |yes |Current in A | -| |powerFactor |Number |yes |Power Factor | +| |powerFactor |Number |yes |Power Factor in percent | | |lastUpdate |DateTime |yes |Timestamp of the last measurement | diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyBindingConstants.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyBindingConstants.java index 16256635e..96ace5c9a 100755 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyBindingConstants.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/ShellyBindingConstants.java @@ -301,6 +301,7 @@ public class ShellyBindingConstants { public static final String CHANNEL_DEVST_CHARGER = "charger"; public static final String CHANNEL_DEVST_UPDATE = "updateAvailable"; public static final String CHANNEL_DEVST_SELFTTEST = "selfTest"; + public static final String CHANNEL_DEVST_VOLTAGE = "supplyVoltage"; public static final String CHANNEL_LED_STATUS_DISABLE = "statusLed"; public static final String CHANNEL_LED_POWER_DISABLE = "powerLed"; diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyApiJsonDTO.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyApiJsonDTO.java index d103ee9b1..d6fe7d1c7 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyApiJsonDTO.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/api/ShellyApiJsonDTO.java @@ -576,6 +576,9 @@ public class ShellyApiJsonDTO { public Double maxPower; public ArrayList relays; + public Double voltage; // AC voltage for Shelly 2.5 + @SerializedName("supply_voltage") + public Long supplyVoltage; // Shelly 1PM/1L: 0=110V, 1=220V public ArrayList dimmers; public ArrayList lights; public ArrayList emeters; @@ -677,6 +680,8 @@ public class ShellyApiJsonDTO { public ShellyActionsStats astats; public ArrayList relays; + public Double voltage; // Shelly 2.5 + public ArrayList rollers; public Integer input; // RGBW2 has no JSON array public ArrayList inputs; diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion1.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion1.java index 3a1ed6c07..d5d7bad84 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion1.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion1.java @@ -152,7 +152,8 @@ public class ShellyCoIoTVersion1 extends ShellyCoIoTProtocol implements ShellyCo toQuantityType(getDouble(s.value), DIGITS_VOLT, Units.AMPERE)); break; case "pf": - updateChannel(updates, rGroup, CHANNEL_EMETER_PFACTOR, getDecimal(s.value)); + updateChannel(updates, rGroup, CHANNEL_EMETER_PFACTOR, + toQuantityType(getDecimal(s.value), Units.PERCENT)); break; case "position": // work around: Roller reports 101% instead max 100 diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion2.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion2.java index c600c1c9b..31f7dfeac 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion2.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/coap/ShellyCoIoTVersion2.java @@ -193,7 +193,7 @@ public class ShellyCoIoTVersion2 extends ShellyCoIoTProtocol implements ShellyCo break; case "3118": updateChannel(updates, mGroup, CHANNEL_SENSOR_VOLTAGE, - toQuantityType(getDouble(s.value), DIGITS_VOLT, Units.VOLT)); + toQuantityType(getDouble(s.value), 2, Units.VOLT)); break; case "4101": // relay_0/light_0: P, power, W diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyBaseHandler.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyBaseHandler.java index 5d1642f20..136a60509 100755 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyBaseHandler.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyBaseHandler.java @@ -367,7 +367,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL if (res.isNotCalibrtated()) { logger.warn("{}: {}", thingName, messages.get("roller.calibrating")); } else { - logger.info("{}: {} - {}", thingName, messages.get("command.failed", command, channelUID), + logger.warn("{}: {} - {}", thingName, messages.get("command.failed", command, channelUID), e.toString()); } } catch (IllegalArgumentException e) { @@ -528,7 +528,6 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL private void fillDeviceStatus(ShellySettingsStatus status, boolean updated) { String alarm = ""; - boolean force = false; // Update uptime and WiFi, internal temp ShellyComponents.updateDeviceStatus(this, status); @@ -567,7 +566,7 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL stats.coiotErrors = coap.getErrorCount(); if (!alarm.isEmpty()) { - postEvent(alarm, force); + postEvent(alarm, false); } } @@ -597,7 +596,8 @@ public class ShellyBaseHandler extends BaseThingHandler implements ShellyDeviceL State value = cache.getValue(channelId); String lastAlarm = value != UnDefType.NULL ? value.toString() : ""; - if (force || !lastAlarm.equals(alarm) || (now() > (stats.lastAlarmTs + HEALTH_CHECK_INTERVAL_SEC))) { + if (force || !lastAlarm.equals(alarm) + || (lastAlarm.equals(alarm) && now() > stats.lastAlarmTs + HEALTH_CHECK_INTERVAL_SEC)) { if (alarm.isEmpty() || alarm.equals(ALARM_TYPE_NONE)) { cache.updateChannel(channelId, getStringType(alarm)); } else { diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyComponents.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyComponents.java index 82d1e661a..54ce5670f 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyComponents.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyComponents.java @@ -160,14 +160,10 @@ public class ShellyComponents { toQuantityType(getDouble(emeter.reactive), DIGITS_WATT, Units.WATT)); updated |= thingHandler.updateChannel(groupName, CHANNEL_EMETER_VOLTAGE, toQuantityType(getDouble(emeter.voltage), DIGITS_VOLT, Units.VOLT)); - - if (emeter.current != null) { - // Shelly - updated |= thingHandler.updateChannel(groupName, CHANNEL_EMETER_CURRENT, - toQuantityType(getDouble(emeter.current), DIGITS_VOLT, Units.AMPERE)); - updated |= thingHandler.updateChannel(groupName, CHANNEL_EMETER_PFACTOR, - getDecimal(emeter.pf)); - } + updated |= thingHandler.updateChannel(groupName, CHANNEL_EMETER_CURRENT, + toQuantityType(getDouble(emeter.current), DIGITS_VOLT, Units.AMPERE)); + updated |= thingHandler.updateChannel(groupName, CHANNEL_EMETER_PFACTOR, + toQuantityType(computePF(emeter), Units.PERCENT)); accumulatedWatts += getDouble(emeter.power); accumulatedTotal += getDouble(emeter.total) / 1000; @@ -234,6 +230,19 @@ public class ShellyComponents { return updated; } + private static Double computePF(ShellySettingsEMeter emeter) { + if (emeter.pf != null) { // EM3 + return emeter.pf; // take device value + } + + // EM: compute from provided values + if (Math.abs(emeter.power) + Math.abs(emeter.reactive) > 1.5) { + double pf = emeter.power / Math.sqrt(emeter.power * emeter.power + emeter.reactive * emeter.reactive); + return pf; + } + return 0.0; + } + /** * Update Sensor channel * @@ -324,7 +333,7 @@ public class ShellyComponents { if ((sdata.adcs != null) && (sdata.adcs.size() > 0)) { ShellyADC adc = sdata.adcs.get(0); updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_SENSOR_VOLTAGE, - getDecimal(adc.voltage)); + toQuantityType(getDouble(adc.voltage), 2, Units.VOLT)); } boolean charger = (getInteger(profile.settings.externalPower) == 1) || getBool(sdata.charger); diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyRelayHandler.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyRelayHandler.java index b11d6a840..65ec500a8 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyRelayHandler.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/handler/ShellyRelayHandler.java @@ -336,8 +336,20 @@ public class ShellyRelayHandler extends ShellyBaseHandler { boolean updated = false; // Check for Relay in Standard Mode if (profile.hasRelays && !profile.isRoller && !profile.isDimmer) { - logger.trace("{}: Updating {} relay(s)", thingName, profile.numRelays); + double voltage = -1; + if (status.voltage == null && profile.settings.supplyVoltage != null) { + // Shelly 1PM/1L (fix) + voltage = profile.settings.supplyVoltage == 0 ? 110.0 : 220.0; + } else { + // Shelly 2.5 (measured) + voltage = getDouble(status.voltage); + } + if (voltage > 0) { + updated |= updateChannel(CHANNEL_GROUP_DEV_STATUS, CHANNEL_DEVST_VOLTAGE, + toQuantityType(voltage, DIGITS_VOLT, Units.VOLT)); + } + logger.trace("{}: Updating {} relay(s)", thingName, profile.numRelays); int i = 0; ShellyStatusRelay rstatus = api.getRelayStatus(i); for (ShellyShortStatusRelay relay : rstatus.relays) { diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/manager/ShellyManagerOverviewPage.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/manager/ShellyManagerOverviewPage.java index bdadcf212..8f559c264 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/manager/ShellyManagerOverviewPage.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/manager/ShellyManagerOverviewPage.java @@ -110,7 +110,7 @@ public class ShellyManagerOverviewPage extends ShellyManagerPage { if (!warnings.isEmpty() && (status != ThingStatus.UNKNOWN)) { properties.put(ATTRIBUTE_STATUS_ICON, ICON_ATTENTION); } - if (!deviceType.equalsIgnoreCase("unknown") && (status == ThingStatus.ONLINE)) { + if (!"unknown".equalsIgnoreCase(deviceType) && (status == ThingStatus.ONLINE)) { properties.put(ATTRIBUTE_FIRMWARE_SEL, fillFirmwareHtml(uid, deviceType, profile.mode)); properties.put(ATTRIBUTE_ACTION_LIST, fillActionHtml(th, uid)); } else { diff --git a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/provider/ShellyChannelDefinitions.java b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/provider/ShellyChannelDefinitions.java index 50f21cbd2..973a0c36f 100644 --- a/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/provider/ShellyChannelDefinitions.java +++ b/bundles/org.openhab.binding.shelly/src/main/java/org/openhab/binding/shelly/internal/provider/ShellyChannelDefinitions.java @@ -109,6 +109,7 @@ public class ShellyChannelDefinitions { .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_ACCUWATTS, "meterAccuWatts", ITEMT_POWER)) .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_ACCUTOTAL, "meterAccuTotal", ITEMT_POWER)) .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_ACCURETURNED, "meterAccuReturned", ITEMT_POWER)) + .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_VOLTAGE, "supplyVoltage", ITEMT_VOLT)) .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_DEVST_CHARGER, "charger", ITEMT_SWITCH)) .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_LED_STATUS_DISABLE, "ledStatusDisable", ITEMT_SWITCH)) .add(new ShellyChannel(m, CHGR_DEVST, CHANNEL_LED_POWER_DISABLE, "ledPowerDisable", ITEMT_SWITCH)) @@ -165,7 +166,7 @@ public class ShellyChannelDefinitions { .add(new ShellyChannel(m, CHGR_METER, CHANNEL_EMETER_REACTWATTS, "meterReactive", ITEMT_POWER)) .add(new ShellyChannel(m, CHGR_METER, CHANNEL_EMETER_VOLTAGE, "meterVoltage", ITEMT_VOLT)) .add(new ShellyChannel(m, CHGR_METER, CHANNEL_EMETER_CURRENT, "meterCurrent", ITEMT_AMP)) - .add(new ShellyChannel(m, CHGR_METER, CHANNEL_EMETER_PFACTOR, "meterPowerFactor", ITEMT_NUMBER)) + .add(new ShellyChannel(m, CHGR_METER, CHANNEL_EMETER_PFACTOR, "meterPowerFactor", ITEMT_PERCENT)) // Sensors .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_TEMP, "sensorTemp", ITEMT_TEMP)) @@ -179,6 +180,7 @@ public class ShellyChannelDefinitions { .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_MOTION, "sensorMotion", ITEMT_SWITCH)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_MOTION_TS, "motionTimestamp", ITEMT_DATETIME)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_MOTION_ACT, "motionActive", ITEMT_SWITCH)) + .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_VIBRATION, "vibration", ITEMT_SWITCH)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_FLOOD, "sensorFlood", ITEMT_SWITCH)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_SMOKE, "sensorSmoke", ITEMT_SWITCH)) .add(new ShellyChannel(m, CHGR_SENSOR, CHANNEL_SENSOR_PPM, "sensorPPM", ITEMT_NUMBER)) @@ -258,12 +260,14 @@ public class ShellyChannelDefinitions { addChannel(thing, add, accuChannel, CHGR_DEVST, CHANNEL_DEVST_ACCUWATTS); addChannel(thing, add, accuChannel, CHGR_DEVST, CHANNEL_DEVST_ACCUTOTAL); addChannel(thing, add, accuChannel && (status.emeters != null), CHGR_DEVST, CHANNEL_DEVST_ACCURETURNED); + addChannel(thing, add, status.voltage != null || profile.settings.supplyVoltage != null, CHGR_DEVST, + CHANNEL_DEVST_VOLTAGE); addChannel(thing, add, true, CHGR_DEVST, CHANNEL_DEVST_UPDATE); addChannel(thing, add, true, CHGR_DEVST, CHANNEL_DEVST_UPTIME); addChannel(thing, add, true, CHGR_DEVST, CHANNEL_DEVST_HEARTBEAT); addChannel(thing, add, profile.settings.ledPowerDisable != null, CHGR_DEVST, CHANNEL_LED_POWER_DISABLE); addChannel(thing, add, profile.settings.ledPowerDisable != null, CHGR_DEVST, CHANNEL_LED_STATUS_DISABLE); // WiFi - // + return add; } @@ -391,7 +395,8 @@ public class ShellyChannelDefinitions { addChannel(thing, newChannels, emeter.reactive != null, group, CHANNEL_EMETER_REACTWATTS); addChannel(thing, newChannels, emeter.voltage != null, group, CHANNEL_EMETER_VOLTAGE); addChannel(thing, newChannels, emeter.current != null, group, CHANNEL_EMETER_CURRENT); - addChannel(thing, newChannels, emeter.pf != null, group, CHANNEL_EMETER_PFACTOR); + addChannel(thing, newChannels, emeter.power != null, group, CHANNEL_EMETER_PFACTOR); // EM has no PF. but power + addChannel(thing, newChannels, true, group, CHANNEL_LAST_UPDATE); return newChannels; } diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly_de.properties b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly_de.properties index 70d020992..ee194d428 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly_de.properties +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/i18n/shelly_de.properties @@ -501,6 +501,8 @@ channel-type.shelly.inputState2.label = Eingang 2 channel-type.shelly.inputState2.description = Status des Relais-Eingangs 2 channel-type.shelly.inputState3.label = Eingang 3 channel-type.shelly.inputState3.description = Status des Relais-Eingangs 3 +channel-type.shelly.supplyVoltage.label = Spannung +channel-type.shelly.supplyVoltage.description = Eingangsspannung (Wechselstrom) channel-type.shelly.dimmerBrightness.label = Helligkeit channel-type.shelly.dimmerBrightness.description = Helligkeit (0-100%, 0=aus) channel-type.shelly.whiteBrightness.label = Helligkeit @@ -648,7 +650,7 @@ channel-type.shelly.uptime.description = Anzahl Sekunden seit dem das Ger channel-type.shelly.heartBeat.label = Letzte Aktivität channel-type.shelly.heartBeat.description = Zeitpunkt der letzten Aktivität. Hierbei kann es sich um einen erfolgreichen API-Aufruf, oder Sensor-Aktualisierung handeln. Dies schließt eine erfolgreiche Netzwerk-Kommunikation ein (WiFi + IP). channel-type.shelly.updateAvailable.label = Firmwareaktualisierung vorhanden -channel-type.shelly.updateAvailable.description = ON: Es ist eine neuere Firmwareversion verfügbar (kann mit der Shelly App durchgef¸hrt werden) +channel-type.shelly.updateAvailable.description = ON: Es ist eine neuere Firmwareversion verfügbar (kann mit der Shelly App durchgeführt werden) channel-type.shelly.deviceTemp.label = Gerätetemperatur channel-type.shelly.deviceTemp.description = Temperatur im Gerät. Hohe Temperaturen deuten ggf. auch ein Hitzestau/Installationsproblem hin. channel-type.shelly.lastUpdate.label = Letzte Aktualisierung diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/lights.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/lights.xml index a7e2e9324..73eb4a984 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/lights.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/lights.xml @@ -235,8 +235,7 @@ Dimmer - Light Temperature 3000..6500K - + Light Temperature 2700/3000..6500K (0-100%) Dimmer diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/relay.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/relay.xml index c5d6e696d..675015577 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/relay.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/relay.xml @@ -456,6 +456,13 @@ + + Number:ElectricPotential + + Supply voltage of the device in Volt + + + Number:Power @@ -523,7 +530,7 @@ Number - + diff --git a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/sensor.xml b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/sensor.xml index 9dee669ba..eb442fd5e 100644 --- a/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/sensor.xml +++ b/bundles/org.openhab.binding.shelly/src/main/resources/OH-INF/thing/sensor.xml @@ -332,7 +332,7 @@ Number:ElectricPotential ADC voltage in V - +