Fixed SAT findings for new SAT 0.11.1 release (#10518)

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
This commit is contained in:
Christoph Weitkamp 2021-04-14 15:11:31 +02:00 committed by GitHub
parent 9e4b67ee09
commit a04cfd3389
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 88 additions and 43 deletions

View File

@ -57,4 +57,4 @@ demo.items:
``` ```
Dimmer Light_LivingRoom { channel="milight:rgbLed:milight2:4:ledbrightness", channel="bluetooth:ptm215b:bluegiga0:rocker_livingroom:rocker1" [profile="rawrocker-to-on-off"], channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker1" [profile="rawrocker-to-on-off"] } // We have a combined kitchen / livingroom, so we control the living room lights with switches from the living room and from the kitchen Dimmer Light_LivingRoom { channel="milight:rgbLed:milight2:4:ledbrightness", channel="bluetooth:ptm215b:bluegiga0:rocker_livingroom:rocker1" [profile="rawrocker-to-on-off"], channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker1" [profile="rawrocker-to-on-off"] } // We have a combined kitchen / livingroom, so we control the living room lights with switches from the living room and from the kitchen
Switch Light_Kitchen { channel="hue:group:1:kitchen-bulbs:switch", channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker2" [profile="rawrocker-to-on-off"] } Switch Light_Kitchen { channel="hue:group:1:kitchen-bulbs:switch", channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker2" [profile="rawrocker-to-on-off"] }
``` ```

View File

@ -72,4 +72,4 @@ sitemap demo label="Main Menu"
See also the following extensions for further examples: See also the following extensions for further examples:
<!--list-subs--> <!--list-subs-->

View File

@ -347,4 +347,4 @@ then
actions.bypass() actions.bypass()
end end
``` ```

View File

@ -159,4 +159,4 @@ val castActions = getActions("chromecast","chromecast:chromecast:29fcf535da")
val success = castActions.playURL("http://192.168.1.160:81/mjpg/front1/video.mjpg") val success = castActions.playURL("http://192.168.1.160:81/mjpg/front1/video.mjpg")
val success2 = castActions.playURL("http://192.168.1.160:81/mjpg/front1/video.mjpg", "image/jpeg") val success2 = castActions.playURL("http://192.168.1.160:81/mjpg/front1/video.mjpg", "image/jpeg")
``` ```

View File

@ -27,7 +27,7 @@ import org.slf4j.LoggerFactory;
/** /**
* The {@link ChromecastActions} class defines rule actions for playing URLs * The {@link ChromecastActions} class defines rule actions for playing URLs
* *
* @author Scott Hanson - Added Actions * @author Scott Hanson - Initial contribution
*/ */
@ThingActionsScope(name = "chromecast") @ThingActionsScope(name = "chromecast")
@NonNullByDefault @NonNullByDefault

View File

@ -86,12 +86,13 @@ public class ChromecastDiscoveryParticipant implements MDNSDiscoveryParticipant
if (model == null) { if (model == null) {
return null; return null;
} }
if (model.equals("Chromecast Audio")) { switch (model) {
return THING_TYPE_AUDIO; case "Chromecast Audio":
} else if (model.equals("Google Cast Group")) { return THING_TYPE_AUDIO;
return THING_TYPE_AUDIOGROUP; case "Google Cast Group":
} else { return THING_TYPE_AUDIOGROUP;
return THING_TYPE_CHROMECAST; default:
return THING_TYPE_CHROMECAST;
} }
} }

View File

@ -3,4 +3,4 @@ playURLActionLabel = play a URL
playURLActionDescription = Plays a URL. playURLActionDescription = Plays a URL.
playURLTypeActionLabel = play a URL with a media type playURLTypeActionLabel = play a URL with a media type
playURLTypeActionDescription = Plays a URL with a defined media type attribute. playURLTypeActionDescription = Plays a URL with a defined media type attribute.

View File

@ -52,7 +52,8 @@ The channel will then be identified by `<air unit id>:<channel group>#<channel>`
You can also manually configure your air unit in case you don't want to use autodiscovery You can also manually configure your air unit in case you don't want to use autodiscovery
(e. g. if you want to have a portable configuration): (e. g. if you want to have a portable configuration):
Create a new file, e. g. `danfoss.things`, in your _things_ configuration folder: Create a new file, e. g. `danfoss.things`, in your _things_ configuration folder:
``` ```
Thing danfossairunit:airunit:myairunit [host="192.168.0.7", Thing danfossairunit:airunit:myairunit [host="192.168.0.7",
refreshInterval=5, refreshInterval=5,
@ -79,4 +80,4 @@ Text item=Lueftung_Drehzahl_Extract
Selection item=Lueftung_Mode mappings=[DEMAND="Bedarfslüftung", OFF="Aus", PROGRAM="Programm", MANUAL="manuell"] Selection item=Lueftung_Mode mappings=[DEMAND="Bedarfslüftung", OFF="Aus", PROGRAM="Programm", MANUAL="manuell"]
Switch item=Lueftung_Boost Switch item=Lueftung_Boost
Switch item=Lueftung_Bypass Switch item=Lueftung_Bypass
``` ```

View File

@ -21,7 +21,11 @@ import java.net.InetAddress;
import java.net.InterfaceAddress; import java.net.InterfaceAddress;
import java.net.NetworkInterface; import java.net.NetworkInterface;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
import java.util.*; import java.util.Arrays;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.config.discovery.AbstractDiscoveryService; import org.openhab.core.config.discovery.AbstractDiscoveryService;

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<features name="org.openhab.binding.haywardomnilogic-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
<repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository>
<feature name="openhab-binding-haywardomnilogic" description="Hayward OmniLogic Binding" version="${project.version}">
<feature>openhab-runtime-base</feature>
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.haywardomnilogic/${project.version}</bundle>
</feature>
</features>

View File

@ -130,6 +130,7 @@ Please note:
The binding tries to detect and maintain the correct state, but due to device limitations this is not always possible. The binding tries to detect and maintain the correct state, but due to device limitations this is not always possible.
Make sure the receiver's and binding's state are in sync when OH is restarted (binding assumes state is OFF). Make sure the receiver's and binding's state are in sync when OH is restarted (binding assumes state is OFF).
- Channels receiving event information get updated when changing the channel or playing a video. - Channels receiving event information get updated when changing the channel or playing a video.
There is no way to read the current status, therefore they don't get initialized on startup nor being updated in real-time. There is no way to read the current status, therefore they don't get initialized on startup nor being updated in real-time.
The player channel supports the following actions: The player channel supports the following actions:
@ -327,4 +328,4 @@ to switch it ON and
to switch it off. to switch it off.
After an openHAB restart you need to make sure that OH and receiver are in sync, because the binding can't read the power status at startup. After an openHAB restart you need to make sure that OH and receiver are in sync, because the binding can't read the power status at startup.

View File

@ -139,7 +139,7 @@ public class MagentaTVDeviceManager {
MagentaTVDevice dev = deviceList.get(udn.toUpperCase()); MagentaTVDevice dev = deviceList.get(udn.toUpperCase());
return dev.properties; return dev.properties;
} }
if (deviceList.size() > 0) { if (!deviceList.isEmpty()) {
logger.debug("getDiscoveredProperties(): Unknown UDN: {}", udn); logger.debug("getDiscoveredProperties(): Unknown UDN: {}", udn);
} }
return null; return null;

View File

@ -222,7 +222,7 @@ public class MagentaTVOAuth {
if (method.equals(HttpMethod.POST)) { if (method.equals(HttpMethod.POST)) {
fillPostData(request, data); fillPostData(request, data);
} }
if (cookies.size() > 0) { if (!cookies.isEmpty()) {
// Add cookies // Add cookies
String cookieValue = ""; String cookieValue = "";
for (HttpCookie c : cookies) { for (HttpCookie c : cookies) {

View File

@ -104,4 +104,3 @@ channel-type.magentatv.key.command.option.SWITCH = IPTV/DVB
channel-type.magentatv.key.command.option.IPTV = IPTV channel-type.magentatv.key.command.option.IPTV = IPTV
channel-type.magentatv.key.command.option.PIP = PIP channel-type.magentatv.key.command.option.PIP = PIP
channel-type.magentatv.key.command.option.MULTIVIEW = Multi View channel-type.magentatv.key.command.option.MULTIVIEW = Multi View

View File

@ -22,7 +22,7 @@
<representation-property>macAddress</representation-property> <representation-property>macAddress</representation-property>
<config-description uri="thing-type:magentatv:receiver"> <config-description>
<parameter name="ipAddress" type="text" required="true"> <parameter name="ipAddress" type="text" required="true">
<label>Device IP Address</label> <label>Device IP Address</label>
<description>IP address of the receiver</description> <description>IP address of the receiver</description>

View File

@ -10371,4 +10371,4 @@ Mapping of countries in mihome app to server:
| Yemen | YE | sg | | Yemen | YE | sg |
| Zambia | ZM | sg | | Zambia | ZM | sg |
| Zimbabwe | ZW | sg | | Zimbabwe | ZW | sg |
| Åland Islands | AX | de | | Åland Islands | AX | de |

View File

@ -47,6 +47,7 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
|communicationState | Shows the communication status to Paradox. Different from Bridge status. Bridge may be online and able to receive commands but communication may be offline due to various reasons. Possible values [Offline, Online] | |communicationState | Shows the communication status to Paradox. Different from Bridge status. Bridge may be online and able to receive commands but communication may be offline due to various reasons. Possible values [Offline, Online] |
#### Communication command channel allowed values #### Communication command channel allowed values
| Value | Description | | Value | Description |
|--------|------------------------------------------------------------------------------------| |--------|------------------------------------------------------------------------------------|
| LOGOUT | Logs out and disconnects from Paradox alarm system | | LOGOUT | Logs out and disconnects from Paradox alarm system |
@ -61,6 +62,7 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
| disarmEnabled | Optional boolean flag. Valid for partitions. When set to true the command DISARM will be allowed for the partition where the flag is enabled. CAUTION: Enabling DISARM command can be dangerous. If attacker can gain access to your openHAB (via API or UI), this command can be used to disarm your armed partition (area) | | disarmEnabled | Optional boolean flag. Valid for partitions. When set to true the command DISARM will be allowed for the partition where the flag is enabled. CAUTION: Enabling DISARM command can be dangerous. If attacker can gain access to your openHAB (via API or UI), this command can be used to disarm your armed partition (area) |
### Panel channels: ### Panel channels:
| Channel | Type | Description | | Channel | Type | Description |
|--------------------------|----------------------------|-------------------------------------------------------------------------------------------| |--------------------------|----------------------------|-------------------------------------------------------------------------------------------|
| state | String | Overall panel state | | state | String | Overall panel state |
@ -174,11 +176,13 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
} }
} }
``` ```
## Acknowledgements ## Acknowledgements
This binding would not be possible without the reverse engineering of the byte level protocol and the development by other authors in python, C# and other languages. Many thanks to the following authors and their respective GitHub repositories for their development that helped in creating this binding: This binding would not be possible without the reverse engineering of the byte level protocol and the development by other authors in python, C# and other languages. Many thanks to the following authors and their respective GitHub repositories for their development that helped in creating this binding:
João Paulo Barraca - https://github.com/ParadoxAlarmInterface/pai João Paulo Barraca - https://github.com/ParadoxAlarmInterface/pai
Jean Henning - repository not available Jean Henning - repository not available
Tertuish - https://github.com/Tertiush/ParadoxIP150v2 / https://github.com/Tertiush/ParadoxIP150 Tertuish - https://github.com/Tertiush/ParadoxIP150v2 / https://github.com/Tertiush/ParadoxIP150

View File

@ -127,4 +127,4 @@ Text label="Power Grid"{
Default item=SenecLiveGridExport Default item=SenecLiveGridExport
} }
} }
``` ```

View File

@ -56,4 +56,4 @@ The following channels are supported by the binding. Note that specific weather
Bridge somfymylink:mylink:mylink1 "myLink Bridge" @ "Office" [ ipAddress="192.168.1.1", systemId="mysystemidhere" ] { Bridge somfymylink:mylink:mylink1 "myLink Bridge" @ "Office" [ ipAddress="192.168.1.1", systemId="mysystemidhere" ] {
Thing shade shade1 "Living Room" [ targetId="CC114A21.1" ] Thing shade shade1 "Living Room" [ targetId="CC114A21.1" ]
} }
``` ```

View File

@ -12,7 +12,7 @@
*/ */
package org.openhab.binding.somfymylink.internal.handler; package org.openhab.binding.somfymylink.internal.handler;
import static org.openhab.binding.somfymylink.internal.SomfyMyLinkBindingConstants.*; import static org.openhab.binding.somfymylink.internal.SomfyMyLinkBindingConstants.CHANNEL_SCENES;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
@ -23,7 +23,11 @@ import java.io.Writer;
import java.net.Socket; import java.net.Socket;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@ -179,7 +183,6 @@ public class SomfyMyLinkBridgeHandler extends BaseBridgeHandler {
SomfyMyLinkCommandShadePing command = new SomfyMyLinkCommandShadePing(config.systemId); SomfyMyLinkCommandShadePing command = new SomfyMyLinkCommandShadePing(config.systemId);
sendCommandWithResponse(command, SomfyMyLinkPingResponse.class).get(); sendCommandWithResponse(command, SomfyMyLinkPingResponse.class).get();
updateStatus(ThingStatus.ONLINE); updateStatus(ThingStatus.ONLINE);
} catch (SomfyMyLinkException | InterruptedException | ExecutionException e) { } catch (SomfyMyLinkException | InterruptedException | ExecutionException e) {
logger.warn("Problem with mylink during heartbeat: {}", e.getMessage()); logger.warn("Problem with mylink during heartbeat: {}", e.getMessage());
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage()); updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage());
@ -298,7 +301,6 @@ public class SomfyMyLinkBridgeHandler extends BaseBridgeHandler {
Writer out = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.US_ASCII); Writer out = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.US_ASCII);
BufferedReader in = new BufferedReader( BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream(), StandardCharsets.US_ASCII))) { new InputStreamReader(socket.getInputStream(), StandardCharsets.US_ASCII))) {
// send the command // send the command
logger.debug("Sending: {}", json); logger.debug("Sending: {}", json);
out.write(json); out.write(json);

View File

@ -346,4 +346,4 @@ then
telegramAction.sendTelegramAnswer(telegramReplyId.state.toString, "Ok, I'll leave them *on*.") telegramAction.sendTelegramAnswer(telegramReplyId.state.toString, "Ok, I'll leave them *on*.")
} }
end end
``` ```

View File

@ -364,4 +364,4 @@ then
LED_1_program.sendCommand(99) LED_1_program.sendCommand(99)
LED_1_preset_23.sendCommand(OFF) LED_1_preset_23.sendCommand(OFF)
end end
``` ```

View File

@ -20,7 +20,11 @@ import org.openhab.binding.wifiled.internal.WiFiLEDBindingConstants;
import org.openhab.binding.wifiled.internal.configuration.WiFiLEDConfig; import org.openhab.binding.wifiled.internal.configuration.WiFiLEDConfig;
import org.openhab.binding.wifiled.internal.handler.AbstractWiFiLEDDriver.Driver; import org.openhab.binding.wifiled.internal.handler.AbstractWiFiLEDDriver.Driver;
import org.openhab.binding.wifiled.internal.handler.AbstractWiFiLEDDriver.Protocol; import org.openhab.binding.wifiled.internal.handler.AbstractWiFiLEDDriver.Protocol;
import org.openhab.core.library.types.*; import org.openhab.core.library.types.HSBType;
import org.openhab.core.library.types.IncreaseDecreaseType;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.library.types.PercentType;
import org.openhab.core.library.types.StringType;
import org.openhab.core.thing.ChannelUID; import org.openhab.core.thing.ChannelUID;
import org.openhab.core.thing.Thing; import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingStatus; import org.openhab.core.thing.ThingStatus;

View File

@ -718,6 +718,7 @@ String cooler_target_mode "Cooler Target Mode" (gCooler)
Number cooler_cool_thrs "Cooler Cool Threshold Temp [%.1f C]" (gCooler) {homekit="CoolingThresholdTemperature" [minValue=10.5, maxValue=50]} Number cooler_cool_thrs "Cooler Cool Threshold Temp [%.1f C]" (gCooler) {homekit="CoolingThresholdTemperature" [minValue=10.5, maxValue=50]}
Number cooler_heat_thrs "Cooler Heat Threshold Temp [%.1f C]" (gCooler) {homekit="HeatingThresholdTemperature" [minValue=0.5, maxValue=20]} Number cooler_heat_thrs "Cooler Heat Threshold Temp [%.1f C]" (gCooler) {homekit="HeatingThresholdTemperature" [minValue=0.5, maxValue=20]}
``` ```
## Additional Notes ## Additional Notes
HomeKit allows only a single pairing to be established with the bridge. HomeKit allows only a single pairing to be established with the bridge.
@ -753,6 +754,7 @@ openhab> log:tail io.github.hapjava
## Troubleshooting ## Troubleshooting
### openHAB is not listed in home app ### openHAB is not listed in home app
if you don't see openHAB in the home app, probably multicast DNS (mDNS) traffic is not routed correctly from openHAB to home app device or openHAB is already in paired state. if you don't see openHAB in the home app, probably multicast DNS (mDNS) traffic is not routed correctly from openHAB to home app device or openHAB is already in paired state.
You can verify this with [Discovery DNS iOS app](https://apps.apple.com/us/app/discovery-dns-sd-browser/id305441017) as follow: You can verify this with [Discovery DNS iOS app](https://apps.apple.com/us/app/discovery-dns-sd-browser/id305441017) as follow:
@ -774,4 +776,4 @@ You can verify this with [Discovery DNS iOS app](https://apps.apple.com/us/app/d
- verify the flag "sf". - verify the flag "sf".
- if sf is equal 1, openHAB is accepting pairing from new iOS device. - if sf is equal 1, openHAB is accepting pairing from new iOS device.
- if sf is equal 0 (as on screenshot), openHAB is already paired and does not accept any new pairing request. you can reset pairing using `openhab:homekit clearPairings` command in karaf console. - if sf is equal 0 (as on screenshot), openHAB is already paired and does not accept any new pairing request. you can reset pairing using `openhab:homekit clearPairings` command in karaf console.
- if you see openHAB bridge and sf is equal 1 but you dont see openHAB in home app, probably you home app still think it is already paired with openHAB. remove your home from home app and restart iOS device. - if you see openHAB bridge and sf is equal 1 but you dont see openHAB in home app, probably you home app still think it is already paired with openHAB. remove your home from home app and restart iOS device.

View File

@ -16,9 +16,16 @@ import static org.openhab.io.homekit.internal.HomekitAccessoryType.*;
import static org.openhab.io.homekit.internal.HomekitCharacteristicType.*; import static org.openhab.io.homekit.internal.HomekitCharacteristicType.*;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.AbstractMap.SimpleEntry; import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@ -124,7 +131,7 @@ public class HomekitAccessoryFactory {
/** /**
* creates HomeKit accessory for a openhab item. * creates HomeKit accessory for a openhab item.
* *
* @param taggedItem openhab item tagged as HomeKit item * @param taggedItem openhab item tagged as HomeKit item
* @param metadataRegistry openhab metadata registry required to get item meta information * @param metadataRegistry openhab metadata registry required to get item meta information
* @param updater OH HomeKit update class that ensure the status sync between OH item and corresponding HomeKit * @param updater OH HomeKit update class that ensure the status sync between OH item and corresponding HomeKit
@ -171,7 +178,7 @@ public class HomekitAccessoryFactory {
/** /**
* return HomeKit accessory types for a OH item based on meta data * return HomeKit accessory types for a OH item based on meta data
* *
* @param item OH item * @param item OH item
* @param metadataRegistry meta data registry * @param metadataRegistry meta data registry
* @return list of HomeKit accessory types and characteristics. * @return list of HomeKit accessory types and characteristics.
@ -210,7 +217,7 @@ public class HomekitAccessoryFactory {
/** /**
* return list of HomeKit relevant groups linked to an accessory * return list of HomeKit relevant groups linked to an accessory
* *
* @param item OH item * @param item OH item
* @param itemRegistry item registry * @param itemRegistry item registry
* @param metadataRegistry metadata registry * @param metadataRegistry metadata registry
@ -231,7 +238,7 @@ public class HomekitAccessoryFactory {
/** /**
* collect all mandatory characteristics for a given tagged item, e.g. collect all mandatory HomeKit items from a * collect all mandatory characteristics for a given tagged item, e.g. collect all mandatory HomeKit items from a
* GroupItem * GroupItem
* *
* @param taggedItem HomeKit tagged item * @param taggedItem HomeKit tagged item
* @param metadataRegistry meta data registry * @param metadataRegistry meta data registry
* @return list of mandatory * @return list of mandatory
@ -341,7 +348,7 @@ public class HomekitAccessoryFactory {
/** /**
* collect optional HomeKit characteristics for a OH item. * collect optional HomeKit characteristics for a OH item.
* *
* @param taggedItem main OH item * @param taggedItem main OH item
* @param metadataRegistry OH metadata registry * @param metadataRegistry OH metadata registry
* @return a map with characteristics and corresponding OH items * @return a map with characteristics and corresponding OH items
@ -368,7 +375,7 @@ public class HomekitAccessoryFactory {
/** /**
* return true is characteristic is a mandatory characteristic for the accessory. * return true is characteristic is a mandatory characteristic for the accessory.
* *
* @param accessory accessory * @param accessory accessory
* @param characteristic characteristic * @param characteristic characteristic
* @return true if characteristic is mandatory, false if not mandatory * @return true if characteristic is mandatory, false if not mandatory
@ -381,7 +388,7 @@ public class HomekitAccessoryFactory {
/** /**
* check whether accessory is root accessory, i.e. without characteristic tag. * check whether accessory is root accessory, i.e. without characteristic tag.
* *
* @param accessory accessory * @param accessory accessory
* @return true if accessory has not characteristic. * @return true if accessory has not characteristic.
*/ */

View File

@ -69,7 +69,17 @@ import io.github.hapjava.characteristics.impl.common.StatusFaultCharacteristic;
import io.github.hapjava.characteristics.impl.common.StatusFaultEnum; import io.github.hapjava.characteristics.impl.common.StatusFaultEnum;
import io.github.hapjava.characteristics.impl.common.StatusTamperedCharacteristic; import io.github.hapjava.characteristics.impl.common.StatusTamperedCharacteristic;
import io.github.hapjava.characteristics.impl.common.StatusTamperedEnum; import io.github.hapjava.characteristics.impl.common.StatusTamperedEnum;
import io.github.hapjava.characteristics.impl.fan.*; import io.github.hapjava.characteristics.impl.fan.CurrentFanStateCharacteristic;
import io.github.hapjava.characteristics.impl.fan.CurrentFanStateEnum;
import io.github.hapjava.characteristics.impl.fan.LockPhysicalControlsCharacteristic;
import io.github.hapjava.characteristics.impl.fan.LockPhysicalControlsEnum;
import io.github.hapjava.characteristics.impl.fan.RotationDirectionCharacteristic;
import io.github.hapjava.characteristics.impl.fan.RotationDirectionEnum;
import io.github.hapjava.characteristics.impl.fan.RotationSpeedCharacteristic;
import io.github.hapjava.characteristics.impl.fan.SwingModeCharacteristic;
import io.github.hapjava.characteristics.impl.fan.SwingModeEnum;
import io.github.hapjava.characteristics.impl.fan.TargetFanStateCharacteristic;
import io.github.hapjava.characteristics.impl.fan.TargetFanStateEnum;
import io.github.hapjava.characteristics.impl.lightbulb.BrightnessCharacteristic; import io.github.hapjava.characteristics.impl.lightbulb.BrightnessCharacteristic;
import io.github.hapjava.characteristics.impl.lightbulb.ColorTemperatureCharacteristic; import io.github.hapjava.characteristics.impl.lightbulb.ColorTemperatureCharacteristic;
import io.github.hapjava.characteristics.impl.lightbulb.HueCharacteristic; import io.github.hapjava.characteristics.impl.lightbulb.HueCharacteristic;

View File

@ -18,6 +18,7 @@ This service is provided "AS IS", and the user takes full responsibility of any
{::options toc_levels="2..4"/} {::options toc_levels="2..4"/}
- TOC - TOC
{:toc} {:toc}
## Prerequisites ## Prerequisites
@ -175,4 +176,4 @@ Eclipse instructions
-DDYNAMODBTEST_REGION=REGION-ID -DDYNAMODBTEST_REGION=REGION-ID
-DDYNAMODBTEST_ACCESS=ACCESS-KEY -DDYNAMODBTEST_ACCESS=ACCESS-KEY
-DDYNAMODBTEST_SECRET=SECRET -DDYNAMODBTEST_SECRET=SECRET
```` ````

View File

@ -16,4 +16,4 @@ This service can be configured in the file `services/mongodb.cfg`.
If you have a username and password it looks like this: url = mongodb://[username]:[password]@[localhost]:27017/[database] If you have a username and password it looks like this: url = mongodb://[username]:[password]@[localhost]:27017/[database]
The database is required: http://mongodb.github.io/mongo-java-driver/3.9/javadoc/com/mongodb/MongoClientURI.html The database is required: http://mongodb.github.io/mongo-java-driver/3.9/javadoc/com/mongodb/MongoClientURI.html
All item and event related configuration is done in the file `persistence/mongodb.persist`. All item and event related configuration is done in the file `persistence/mongodb.persist`.