mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 23:22:02 +01:00
[shelly] Various small fixes for BLU HT, Range Extender, Plus 10V, TRV set temp (#16746)
* fixes ##16736, #16734, #16542, #16709, #16735 Signed-off-by: Markus Michels <markus7017@gmail.com>
This commit is contained in:
parent
a4ad7b27b7
commit
f79a2dd7f0
@ -84,7 +84,7 @@ public interface ShellyApiInterface {
|
|||||||
|
|
||||||
void setValveMode(int id, boolean auto) throws ShellyApiException;
|
void setValveMode(int id, boolean auto) throws ShellyApiException;
|
||||||
|
|
||||||
void setValveTemperature(int valveId, int value) throws ShellyApiException;
|
void setValveTemperature(int valveId, double value) throws ShellyApiException;
|
||||||
|
|
||||||
void setValveProfile(int valveId, int value) throws ShellyApiException;
|
void setValveProfile(int valveId, int value) throws ShellyApiException;
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@ public class Shelly1HttpApi extends ShellyHttpClient implements ShellyApiInterfa
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValveTemperature(int valveId, int value) throws ShellyApiException {
|
public void setValveTemperature(int valveId, double value) throws ShellyApiException {
|
||||||
httpRequest("/thermostat/" + valveId + "?target_t_enabled=1&target_t=" + value);
|
httpRequest("/thermostat/" + valveId + "?target_t_enabled=1&target_t=" + value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ package org.openhab.binding.shelly.internal.api2;
|
|||||||
import static org.openhab.binding.shelly.internal.ShellyBindingConstants.*;
|
import static org.openhab.binding.shelly.internal.ShellyBindingConstants.*;
|
||||||
import static org.openhab.binding.shelly.internal.api1.Shelly1ApiJsonDTO.*;
|
import static org.openhab.binding.shelly.internal.api1.Shelly1ApiJsonDTO.*;
|
||||||
import static org.openhab.binding.shelly.internal.api2.Shelly2ApiJsonDTO.*;
|
import static org.openhab.binding.shelly.internal.api2.Shelly2ApiJsonDTO.*;
|
||||||
import static org.openhab.binding.shelly.internal.discovery.ShellyThingCreator.THING_TYPE_SHELLYPRO2_RELAY_STR;
|
import static org.openhab.binding.shelly.internal.discovery.ShellyThingCreator.*;
|
||||||
import static org.openhab.binding.shelly.internal.util.ShellyUtils.*;
|
import static org.openhab.binding.shelly.internal.util.ShellyUtils.*;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@ -259,6 +259,8 @@ public class Shelly2ApiRpc extends Shelly2ApiClient implements ShellyApiInterfac
|
|||||||
// Mini PM has 1 meter, but no relay
|
// Mini PM has 1 meter, but no relay
|
||||||
if (thingType.equals(THING_TYPE_SHELLYPRO2_RELAY_STR)) {
|
if (thingType.equals(THING_TYPE_SHELLYPRO2_RELAY_STR)) {
|
||||||
profile.numMeters = 0;
|
profile.numMeters = 0;
|
||||||
|
} else if (thingType.equals(THING_TYPE_SHELLYPRO3EM_STR)) {
|
||||||
|
profile.numMeters = 3;
|
||||||
} else if (dc.pm10 != null) {
|
} else if (dc.pm10 != null) {
|
||||||
profile.numMeters = 1;
|
profile.numMeters = 1;
|
||||||
} else if (dc.em0 != null) {
|
} else if (dc.em0 != null) {
|
||||||
@ -1101,7 +1103,7 @@ public class Shelly2ApiRpc extends Shelly2ApiClient implements ShellyApiInterfac
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValveTemperature(int valveId, int value) throws ShellyApiException {
|
public void setValveTemperature(int valveId, double value) throws ShellyApiException {
|
||||||
throw new ShellyApiException("API call not implemented");
|
throw new ShellyApiException("API call not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ public class ShellyThingCreator {
|
|||||||
public static final String SHELLYDT_PLUSSMOKE = "SNSN-0031Z";
|
public static final String SHELLYDT_PLUSSMOKE = "SNSN-0031Z";
|
||||||
public static final String SHELLYDT_PLUSUNI = "SNSN-0043X";
|
public static final String SHELLYDT_PLUSUNI = "SNSN-0043X";
|
||||||
public static final String SHELLYDT_PLUSDIMMERUS = "SNDM-0013US";
|
public static final String SHELLYDT_PLUSDIMMERUS = "SNDM-0013US";
|
||||||
public static final String SHELLYDT_PLUSDIMMER10V = "SNGW-0A11WW010";
|
public static final String SHELLYDT_PLUSDIMMER10V = "SNDM-00100WW";
|
||||||
public static final String SHELLYDT_PLUSWALLDISPLAY = "SAWD-0A1XX10EU1";
|
public static final String SHELLYDT_PLUSWALLDISPLAY = "SAWD-0A1XX10EU1";
|
||||||
|
|
||||||
// Shelly Pro Series
|
// Shelly Pro Series
|
||||||
|
@ -45,6 +45,7 @@ import org.openhab.binding.shelly.internal.api1.Shelly1CoapHandler;
|
|||||||
import org.openhab.binding.shelly.internal.api1.Shelly1CoapJSonDTO;
|
import org.openhab.binding.shelly.internal.api1.Shelly1CoapJSonDTO;
|
||||||
import org.openhab.binding.shelly.internal.api1.Shelly1CoapServer;
|
import org.openhab.binding.shelly.internal.api1.Shelly1CoapServer;
|
||||||
import org.openhab.binding.shelly.internal.api1.Shelly1HttpApi;
|
import org.openhab.binding.shelly.internal.api1.Shelly1HttpApi;
|
||||||
|
import org.openhab.binding.shelly.internal.api2.Shelly2ApiJsonDTO;
|
||||||
import org.openhab.binding.shelly.internal.api2.Shelly2ApiJsonDTO.Shelly2APClientList.Shelly2APClient;
|
import org.openhab.binding.shelly.internal.api2.Shelly2ApiJsonDTO.Shelly2APClientList.Shelly2APClient;
|
||||||
import org.openhab.binding.shelly.internal.api2.Shelly2ApiRpc;
|
import org.openhab.binding.shelly.internal.api2.Shelly2ApiRpc;
|
||||||
import org.openhab.binding.shelly.internal.api2.ShellyBluApi;
|
import org.openhab.binding.shelly.internal.api2.ShellyBluApi;
|
||||||
@ -463,7 +464,7 @@ public abstract class ShellyBaseHandler extends BaseThingHandler
|
|||||||
break;
|
break;
|
||||||
case CHANNEL_CONTROL_SETTEMP:
|
case CHANNEL_CONTROL_SETTEMP:
|
||||||
logger.debug("{}: Set temperature to {}", thingName, command);
|
logger.debug("{}: Set temperature to {}", thingName, command);
|
||||||
api.setValveTemperature(0, getNumber(command).intValue());
|
api.setValveTemperature(0, getNumber(command).doubleValue());
|
||||||
break;
|
break;
|
||||||
case CHANNEL_CONTROL_POSITION:
|
case CHANNEL_CONTROL_POSITION:
|
||||||
logger.debug("{}: Set position to {}", thingName, command);
|
logger.debug("{}: Set position to {}", thingName, command);
|
||||||
@ -821,6 +822,10 @@ public abstract class ShellyBaseHandler extends BaseThingHandler
|
|||||||
case SHELLY_WAKEUPT_POWERON:
|
case SHELLY_WAKEUPT_POWERON:
|
||||||
case SHELLY_WAKEUPT_EXT_POWER:
|
case SHELLY_WAKEUPT_EXT_POWER:
|
||||||
case SHELLY_WAKEUPT_UNKNOWN:
|
case SHELLY_WAKEUPT_UNKNOWN:
|
||||||
|
case Shelly2ApiJsonDTO.SHELLY2_EVENT_OTASTART:
|
||||||
|
case Shelly2ApiJsonDTO.SHELLY2_EVENT_OTAPROGRESS:
|
||||||
|
case Shelly2ApiJsonDTO.SHELLY2_EVENT_OTADONE:
|
||||||
|
case SHELLY_EVENT_ROLLER_CALIB:
|
||||||
logger.debug("{}: {}", thingName, messages.get("event.filtered", event));
|
logger.debug("{}: {}", thingName, messages.get("event.filtered", event));
|
||||||
case ALARM_TYPE_NONE:
|
case ALARM_TYPE_NONE:
|
||||||
break;
|
break;
|
||||||
@ -1003,7 +1008,7 @@ public abstract class ShellyBaseHandler extends BaseThingHandler
|
|||||||
String saddr = addr.getHostAddress();
|
String saddr = addr.getHostAddress();
|
||||||
if (!ip.equals(saddr)) {
|
if (!ip.equals(saddr)) {
|
||||||
logger.debug("{}: hostname {} resolved to IP address {}", thingName, config.deviceIp, saddr);
|
logger.debug("{}: hostname {} resolved to IP address {}", thingName, config.deviceIp, saddr);
|
||||||
config.deviceIp = saddr + (port.isEmpty() ? ip : ip + ":" + port);
|
config.deviceIp = saddr + (port.isEmpty() ? "" : ":" + port);
|
||||||
}
|
}
|
||||||
} catch (UnknownHostException e) {
|
} catch (UnknownHostException e) {
|
||||||
logger.debug("{}: Unable to resolve hostname {}", thingName, config.deviceIp);
|
logger.debug("{}: Unable to resolve hostname {}", thingName, config.deviceIp);
|
||||||
|
@ -123,31 +123,6 @@ public class ShellyComponents {
|
|||||||
getOpenClosed(getInteger(status.extSwitch.input0.input) == 1));
|
getOpenClosed(getInteger(status.extSwitch.input0.input) == 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (status.extTemperature != null) {
|
|
||||||
// Shelly 1/1PM support up to 3 external sensors
|
|
||||||
// for whatever reason those are not represented as an array, but 3 elements
|
|
||||||
updated |= updateTempChannel(status.extTemperature.sensor1, thingHandler, CHANNEL_ESENSOR_TEMP1);
|
|
||||||
updated |= updateTempChannel(status.extTemperature.sensor2, thingHandler, CHANNEL_ESENSOR_TEMP2);
|
|
||||||
updated |= updateTempChannel(status.extTemperature.sensor3, thingHandler, CHANNEL_ESENSOR_TEMP3);
|
|
||||||
updated |= updateTempChannel(status.extTemperature.sensor4, thingHandler, CHANNEL_ESENSOR_TEMP4);
|
|
||||||
updated |= updateTempChannel(status.extTemperature.sensor5, thingHandler, CHANNEL_ESENSOR_TEMP5);
|
|
||||||
}
|
|
||||||
if ((status.extHumidity != null) && (status.extHumidity.sensor1 != null)) {
|
|
||||||
updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_ESENSOR_HUMIDITY,
|
|
||||||
toQuantityType(getDouble(status.extHumidity.sensor1.hum), DIGITS_PERCENT, Units.PERCENT));
|
|
||||||
}
|
|
||||||
if ((status.extVoltage != null) && (status.extVoltage.sensor1 != null)) {
|
|
||||||
updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_ESENSOR_VOLTAGE,
|
|
||||||
toQuantityType(getDouble(status.extVoltage.sensor1.voltage), 4, Units.VOLT));
|
|
||||||
}
|
|
||||||
if ((status.extDigitalInput != null) && (status.extDigitalInput.sensor1 != null)) {
|
|
||||||
updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_ESENSOR_DIGITALINPUT,
|
|
||||||
getOnOff(status.extDigitalInput.sensor1.state));
|
|
||||||
}
|
|
||||||
if ((status.extAnalogInput != null) && (status.extAnalogInput.sensor1 != null)) {
|
|
||||||
updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_ESENSOR_ANALOGINPUT, toQuantityType(
|
|
||||||
getDouble(status.extAnalogInput.sensor1.percent), DIGITS_PERCENT, Units.PERCENT));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update Auto-ON/OFF timer
|
// Update Auto-ON/OFF timer
|
||||||
updated |= thingHandler.updateChannel(groupName, CHANNEL_TIMER_AUTOON,
|
updated |= thingHandler.updateChannel(groupName, CHANNEL_TIMER_AUTOON,
|
||||||
@ -556,6 +531,34 @@ public class ShellyComponents {
|
|||||||
thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_LAST_UPDATE, getTimestamp());
|
thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_LAST_UPDATE, getTimestamp());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update Add-On channeös
|
||||||
|
if (status.extTemperature != null) {
|
||||||
|
// Shelly 1/1PM support up to 3 external sensors
|
||||||
|
// for whatever reason those are not represented as an array, but 3 elements
|
||||||
|
updated |= updateTempChannel(status.extTemperature.sensor1, thingHandler, CHANNEL_ESENSOR_TEMP1);
|
||||||
|
updated |= updateTempChannel(status.extTemperature.sensor2, thingHandler, CHANNEL_ESENSOR_TEMP2);
|
||||||
|
updated |= updateTempChannel(status.extTemperature.sensor3, thingHandler, CHANNEL_ESENSOR_TEMP3);
|
||||||
|
updated |= updateTempChannel(status.extTemperature.sensor4, thingHandler, CHANNEL_ESENSOR_TEMP4);
|
||||||
|
updated |= updateTempChannel(status.extTemperature.sensor5, thingHandler, CHANNEL_ESENSOR_TEMP5);
|
||||||
|
}
|
||||||
|
if ((status.extHumidity != null) && (status.extHumidity.sensor1 != null)) {
|
||||||
|
updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_ESENSOR_HUMIDITY,
|
||||||
|
toQuantityType(getDouble(status.extHumidity.sensor1.hum), DIGITS_PERCENT, Units.PERCENT));
|
||||||
|
}
|
||||||
|
if ((status.extVoltage != null) && (status.extVoltage.sensor1 != null)) {
|
||||||
|
updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_ESENSOR_VOLTAGE,
|
||||||
|
toQuantityType(getDouble(status.extVoltage.sensor1.voltage), 4, Units.VOLT));
|
||||||
|
}
|
||||||
|
if ((status.extDigitalInput != null) && (status.extDigitalInput.sensor1 != null)) {
|
||||||
|
updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_ESENSOR_DIGITALINPUT,
|
||||||
|
getOnOff(status.extDigitalInput.sensor1.state));
|
||||||
|
}
|
||||||
|
if ((status.extAnalogInput != null) && (status.extAnalogInput.sensor1 != null)) {
|
||||||
|
updated |= thingHandler.updateChannel(CHANNEL_GROUP_SENSOR, CHANNEL_ESENSOR_ANALOGINPUT,
|
||||||
|
toQuantityType(getDouble(status.extAnalogInput.sensor1.percent), DIGITS_PERCENT, Units.PERCENT));
|
||||||
|
}
|
||||||
|
|
||||||
return updated;
|
return updated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,7 +298,7 @@ public class ShellyRelayHandler extends ShellyBaseHandler {
|
|||||||
|
|
||||||
private void createRollerChannels(ShellyRollerStatus roller) {
|
private void createRollerChannels(ShellyRollerStatus roller) {
|
||||||
if (!areChannelsCreated()) {
|
if (!areChannelsCreated()) {
|
||||||
updateChannelDefinitions(ShellyChannelDefinitions.createRollerChannels(getThing(), roller));
|
updateChannelDefinitions(ShellyChannelDefinitions.createRollerChannels(getThing(), profile, roller));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,6 +369,13 @@ public class ShellyChannelDefinitions {
|
|||||||
addChannel(thing, add, rs.autoOff != null, group, CHANNEL_TIMER_AUTOOFF);
|
addChannel(thing, add, rs.autoOff != null, group, CHANNEL_TIMER_AUTOOFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addAddonChannels(thing, profile, idx, add);
|
||||||
|
|
||||||
|
return add;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addAddonChannels(final Thing thing, final ShellyDeviceProfile profile, int idx,
|
||||||
|
Map<String, Channel> add) {
|
||||||
// Shelly 1/1PM and Plus 1/1PM Addon
|
// Shelly 1/1PM and Plus 1/1PM Addon
|
||||||
boolean addon = profile.settings.extSwitch != null && profile.settings.extSwitch.input0 != null
|
boolean addon = profile.settings.extSwitch != null && profile.settings.extSwitch.input0 != null
|
||||||
&& idx == getInteger(profile.settings.extSwitch.input0.relayNum);
|
&& idx == getInteger(profile.settings.extSwitch.input0.relayNum);
|
||||||
@ -385,11 +392,10 @@ public class ShellyChannelDefinitions {
|
|||||||
}
|
}
|
||||||
addChannel(thing, add, profile.status.extHumidity != null && profile.status.extHumidity.sensor1 != null,
|
addChannel(thing, add, profile.status.extHumidity != null && profile.status.extHumidity.sensor1 != null,
|
||||||
CHGR_SENSOR, CHANNEL_ESENSOR_HUMIDITY);
|
CHGR_SENSOR, CHANNEL_ESENSOR_HUMIDITY);
|
||||||
|
|
||||||
addChannel(thing, add, profile.status.extVoltage != null, CHGR_SENSOR, CHANNEL_ESENSOR_VOLTAGE);
|
addChannel(thing, add, profile.status.extVoltage != null, CHGR_SENSOR, CHANNEL_ESENSOR_VOLTAGE);
|
||||||
addChannel(thing, add, profile.status.extDigitalInput != null, CHGR_SENSOR, CHANNEL_ESENSOR_DIGITALINPUT);
|
addChannel(thing, add, profile.status.extDigitalInput != null, CHGR_SENSOR, CHANNEL_ESENSOR_DIGITALINPUT);
|
||||||
addChannel(thing, add, profile.status.extAnalogInput != null, CHGR_SENSOR, CHANNEL_ESENSOR_ANALOGINPUT);
|
addChannel(thing, add, profile.status.extAnalogInput != null, CHGR_SENSOR, CHANNEL_ESENSOR_ANALOGINPUT);
|
||||||
|
|
||||||
return add;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, Channel> createDimmerChannels(final Thing thing, final ShellyDeviceProfile profile,
|
public static Map<String, Channel> createDimmerChannels(final Thing thing, final ShellyDeviceProfile profile,
|
||||||
@ -458,7 +464,8 @@ public class ShellyChannelDefinitions {
|
|||||||
return add;
|
return add;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, Channel> createRollerChannels(Thing thing, final ShellyRollerStatus roller) {
|
public static Map<String, Channel> createRollerChannels(final Thing thing, final ShellyDeviceProfile profile,
|
||||||
|
final ShellyRollerStatus roller) {
|
||||||
Map<String, Channel> add = new LinkedHashMap<>();
|
Map<String, Channel> add = new LinkedHashMap<>();
|
||||||
addChannel(thing, add, true, CHGR_ROLLER, CHANNEL_ROL_CONTROL_CONTROL);
|
addChannel(thing, add, true, CHGR_ROLLER, CHANNEL_ROL_CONTROL_CONTROL);
|
||||||
addChannel(thing, add, true, CHGR_ROLLER, CHANNEL_ROL_CONTROL_STATE);
|
addChannel(thing, add, true, CHGR_ROLLER, CHANNEL_ROL_CONTROL_STATE);
|
||||||
@ -474,6 +481,9 @@ public class ShellyChannelDefinitions {
|
|||||||
addChannel(thing, add, roller.currentPos != null, CHGR_ROLLER, CHANNEL_ROL_CONTROL_FAV);
|
addChannel(thing, add, roller.currentPos != null, CHGR_ROLLER, CHANNEL_ROL_CONTROL_FAV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addAddonChannels(thing, profile, 0, add);
|
||||||
|
|
||||||
return add;
|
return add;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
<parameter name="enableRangeExtender" type="boolean" required="false">
|
<parameter name="enableRangeExtender" type="boolean" required="false">
|
||||||
<label>@text/thing-type.config.shelly.enableRangeExtender.label</label>
|
<label>@text/thing-type.config.shelly.enableRangeExtender.label</label>
|
||||||
<description>@text/thing-type.config.shelly.enableRangeExtender.description</description>
|
<description>@text/thing-type.config.shelly.enableRangeExtender.description</description>
|
||||||
<default>true</default>
|
<default>false</default>
|
||||||
</parameter>
|
</parameter>
|
||||||
</config-description>
|
</config-description>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* This script uses the BLE scan functionality in scripting to pass scan results to openHAB
|
* This script uses the BLE scan functionality in scripting to pass scan results to openHAB
|
||||||
* Supported BLU Devices: BLU Button 1, BLU Door/Window, BLU Motion, BLU H&T
|
* Supported BLU Devices: BLU Button 1, BLU Door/Window, BLU Motion, BLU H&T
|
||||||
* Version 0.3
|
* Version 0.4
|
||||||
*/
|
*/
|
||||||
|
|
||||||
let ALLTERCO_DEVICE_NAME_PREFIX = ["SBBT", "SBDW", "SBMO", "SBHT"];
|
let ALLTERCO_DEVICE_NAME_PREFIX = ["SBBT", "SBDW", "SBMO", "SBHT"];
|
||||||
@ -33,15 +33,17 @@ BTH[0x05] = { n: "Illuminance", t: uint24, f: 0.01 };
|
|||||||
BTH[0x08] = { n: "Dewpoint", t: int16, f: 0.01 };
|
BTH[0x08] = { n: "Dewpoint", t: int16, f: 0.01 };
|
||||||
BTH[0x12] = { n: "Co2", t: uint16 };
|
BTH[0x12] = { n: "Co2", t: uint16 };
|
||||||
BTH[0x14] = { n: "Moisture16", t: uint16, f: 0.01 };
|
BTH[0x14] = { n: "Moisture16", t: uint16, f: 0.01 };
|
||||||
BTH[0x14] = { n: "Moisture8", t: uint8 };
|
|
||||||
BTH[0x1a] = { n: "Door", t: uint8 };
|
BTH[0x1a] = { n: "Door", t: uint8 };
|
||||||
BTH[0x20] = { n: "Moisture", t: uint8 };
|
BTH[0x20] = { n: "Moisture", t: uint8 };
|
||||||
BTH[0x21] = { n: "Motion", t: uint8 };
|
BTH[0x21] = { n: "Motion", t: uint8 };
|
||||||
BTH[0x2d] = { n: "Window", t: uint8 };
|
BTH[0x2d] = { n: "Window", t: uint8 };
|
||||||
|
BTH[0x2e] = { n: "Humidity", t: uint8 };
|
||||||
|
BTH[0x2f] = { n: "Moisture8", t: uint8 };
|
||||||
BTH[0x3a] = { n: "Button", t: uint8 };
|
BTH[0x3a] = { n: "Button", t: uint8 };
|
||||||
BTH[0x3f] = { n: "Rotation", t: int16, f: 0.1 };
|
BTH[0x3f] = { n: "Rotation", t: int16, f: 0.1 };
|
||||||
BTH[0x43] = { n: "Current", t: uint16, f: 0.1 };
|
BTH[0x43] = { n: "Current", t: uint16, f: 0.1 };
|
||||||
BTH[0x43] = { n: "UVIndex", t: uint8 };
|
BTH[0x45] = { n: "Temperature", t: int16, f: 0.1 };
|
||||||
|
BTH[0x46] = { n: "UVIndex", t: uint8 };
|
||||||
BTH[0x51] = { n: "Acceleration", t: uint16, f: 0.1 };
|
BTH[0x51] = { n: "Acceleration", t: uint16, f: 0.1 };
|
||||||
|
|
||||||
function getByteSize(type) {
|
function getByteSize(type) {
|
||||||
|
Loading…
Reference in New Issue
Block a user