Updated external content (Jenkins build 1359)

pull/2077/head
openHAB Build Server 2023-02-18 21:02:31 +00:00
parent f47690049c
commit 9a4cc500ba
4 changed files with 146 additions and 51 deletions

View File

@ -46,13 +46,11 @@ The binding requires no special configuration.
The bridge requires a username and a password.
Optionally, you can also specify a polling interval.
To enable verbose logging of HTTP requests and responses regarding the cloud service, enable DEBUG level logging on ```SleepIQCloudHandler```.
| Configuration Parameter | Type | Description | Default |
|-------------------------|---------|--------------------------------------------------------|---------|
| username | text | Username of a registered SleepIQ account owner | |
| password | text | Password of a registered SleepIQ account owner | |
| pollingInterval | integer | Seconds between fetching values from the cloud service | 60 |
| pollingInterval | integer | Seconds between fetching values from the cloud service | 120 |
### Dual-Chamber Bed (Thing ID: "dualBed")
@ -65,7 +63,7 @@ Each bed requires a bed ID as defined by the SleepIQ service.
### Sample Thing Configuration
```java
Bridge sleepiq:cloud:1 [ username="mail@example.com", password="password", pollingInterval=60, logging=false ]
Bridge sleepiq:cloud:1 [ username="mail@example.com", password="password", pollingInterval=120 ]
{
Thing dualBed master [ bedId="-9999999999999999999" ]
Thing dualBed guest [ bedId="-8888888888888888888" ]
@ -83,33 +81,65 @@ Bridge sleepiq:cloud:1 [ username="mail@example.com", password="password", polli
### Chamber Channel Group
All channels within this group are read-only.
All channels within this group are read-only, except for the sleepNumber and privacyMode channels.
| Channel ID | Item Type | Description |
|----------------------|-----------|---------------------------------------------------------------------------------------------------------------------|
| inBed | Switch | The presence of a person or object on the chamber |
| sleepNumber | Number | The Sleep Number setting of the chamber |
| pressure | Number | The current pressure inside the chamber |
| lastLink | String | The amount of time that has passed since a connection was made from the chamber to the cloud service (D d HH:MM:SS) |
| alertId | Number | Identifier for an alert condition with the chamber |
| alertDetailedMessage | String | A detailed message describing an alert condition with the chamber |
| Channel ID | Item Type | Description |
|-----------------------------------|----------------|---------------------------------------------------------------------------------------------------------------------|
| inBed | Switch | The presence of a person or object on the chamber |
| sleepNumber | Number | The Sleep Number setting of the chamber. Set the sleep number of the chamber by sending a command to the sleepNumber channel with a value between 5 and 100. The value must be a multiple of 5 |
| sleepGoalMinutes | Number:Time | The person's sleep goal in minutes |
| pressure | Number | The current pressure inside the chamber |
| privacyMode | Switch | Enable or disable privacy mode |
| lastLink | String | The amount of time that has passed since a connection was made from the chamber to the cloud service (D d HH:MM:SS) |
| alertId | Number | Identifier for an alert condition with the chamber |
| alertDetailedMessage | String | A detailed message describing an alert condition with the chamber |
| todaySleepIQ | Number | The Sleep IQ score for the current day |
| todayAverageHeartRate | Number | The average heart rate for the current day |
| todayAverageRespirationRate | Number | The average respiration rate for the current day |
| todayMessage | String | A description of the sleep quality for the current day |
| todaySleepDurationSeconds | Number:Time | The duration of sleep for the current day |
| monthlySleepIQ | Number | The average Sleep IQ score for the current month |
| monthlyAverageHeartRate | Number | The average heart rate for the current month |
| monthlyAverageRespirationRate | Number | The average respiration rate for the current month |
## Items
Here is a sample item configuration:
```java
Switch MasterBedroom_SleepIQ_InBed_Alice "In Bed [%s]" { channel="sleepiq:dualBed:1:master:left#inBed" }
Number MasterBedroom_SleepIQ_SleepNumber_Alice "Sleep Number [%s]" { channel="sleepiq:dualBed:1:master:left#sleepNumber" }
Number MasterBedroom_SleepIQ_Pressure_Alice "Pressure [%s]" { channel="sleepiq:dualBed:1:master:left#pressure" }
String MasterBedroom_SleepIQ_LastLink_Alice "Last Update [%s]" { channel="sleepiq:dualBed:1:master:left#lastLink" }
Number MasterBedroom_SleepIQ_AlertId_Alice "Alert ID [%s]" { channel="sleepiq:dualBed:1:master:left#alertId" }
String MasterBedroom_SleepIQ_AlertMessage_Alice "Alert Message [%s]" { channel="sleepiq:dualBed:1:master:left#alertDetailedMessage" }
Switch MasterBR_SleepIQ_InBed_Alice "In Bed [%s]" { channel="sleepiq:dualBed:1:master:left#inBed" }
Number MasterBR_SleepIQ_SleepNumber_Alice "Sleep Number [%s]" { channel="sleepiq:dualBed:1:master:left#sleepNumber" }
Number:Time MasterBR_SleepIQ_SleepGoal_Alice "Sleep Goal [%d min]" { channel="sleepiq:dualBed:1:master:left#sleepGoalMinutes"
Number MasterBR_SleepIQ_Pressure_Alice "Pressure [%s]" { channel="sleepiq:dualBed:1:master:left#pressure" }
Switch MasterBR_SleepIQ_PrivacyMode_Alice "Privacy Mode [%s]" { channel="sleepiq:dualBed:1:master:left#privacyMode" }
String MasterBR_SleepIQ_LastLink_Alice "Last Update [%s]" { channel="sleepiq:dualBed:1:master:left#lastLink" }
Number MasterBR_SleepIQ_AlertId_Alice "Alert ID [%s]" { channel="sleepiq:dualBed:1:master:left#alertId" }
String MasterBR_SleepIQ_AlertMessage_Alice "Alert Message [%s]" { channel="sleepiq:dualBed:1:master:left#alertDetailedMessage" }
Number MasterBR_SleepIQ_DailySleepIQ_Alice "Daily Sleep IQ [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepIQ" }
Number MasterBR_SleepIQ_DailyHeartRate_Alice "Daily Heart Rate [%.0f]" { channel="sleepiq:dualBed:1:master:left#todayAverageHeartRate" }
Number MasterBR_SleepIQ_DailyRespRate_Alice "Daily Respiration Rate [%.0f]" { channel="sleepiq:dualBed:1:master:left#todayAverageRespirationRate"}
String MasterBR_SleepIQ_DailyMessage_Alice "Daily Message [%s]" { channel="sleepiq:dualBed:1:master:left#todayMessage"}
Number MasterBR_SleepIQ_DailyDuration_Alice "Daily Sleep Duration [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepDurationSeconds"}
Number:Time MasterBR_SleepIQ_MonthlySleepIQ_Alice "Monthly Sleep IQ [%d s]" { channel="sleepiq:dualBed:1:master:left#monthlySleepIQ"}
Number MasterBR_SleepIQ_MonthlyHeartRate_Alice "Monthly Heart Rate [%.0f]" { channel="sleepiq:dualBed:1:master:left#monthlyAverageHeartRate"}
Number MasterBR_SleepIQ_MonthlyRespRate_Alice "Monthly Respiration Rate [%.0f]" { channel="sleepiq:dualBed:1:master:left#monthlyAverageRespirationRate"}
Switch MasterBedroom_SleepIQ_InBed_Bob "In Bed [%s]" { channel="sleepiq:dualBed:1:master:right#inBed" }
Number MasterBedroom_SleepIQ_SleepNumber_Bob "Sleep Number [%s]" { channel="sleepiq:dualBed:1:master:right#sleepNumber" }
Number MasterBedroom_SleepIQ_Pressure_Bob "Pressure [%s]" { channel="sleepiq:dualBed:1:master:right#pressure" }
String MasterBedroom_SleepIQ_LastLink_Bob "Last Update [%s]" { channel="sleepiq:dualBed:1:master:right#lastLink" }
Number MasterBedroom_SleepIQ_AlertId_Bob "Alert ID [%s]" { channel="sleepiq:dualBed:1:master:right#alertId" }
String MasterBedroom_SleepIQ_AlertMessage_Bob "Alert Message [%s]" { channel="sleepiq:dualBed:1:master:right#alertDetailedMessage" }
Switch MasterBR_SleepIQ_InBed_Bob "In Bed [%s]" { channel="sleepiq:dualBed:1:master:right#inBed" }
Number MasterBR_SleepIQ_SleepNumber_Bob "Sleep Number [%s]" { channel="sleepiq:dualBed:1:master:right#sleepNumber" }
Number MasterBR_SleepIQ_SleepGoal_Alice "Sleep Goal [%d min]" { channel="sleepiq:dualBed:1:master:left#sleepGoalMinutes"
Number:Time MasterBR_SleepIQ_Pressure_Bob "Pressure [%s]" { channel="sleepiq:dualBed:1:master:right#pressure" }
Switch MasterBR_SleepIQ_PrivacyMode_Bob "Privacy Mode [%s]" { channel="sleepiq:dualBed:1:master:right#privacyMode" }
String MasterBR_SleepIQ_LastLink_Bob "Last Update [%s]" { channel="sleepiq:dualBed:1:master:right#lastLink" }
Number MasterBR_SleepIQ_AlertId_Bob "Alert ID [%s]" { channel="sleepiq:dualBed:1:master:right#alertId" }
String MasterBR_SleepIQ_AlertMessage_Bob "Alert Message [%s]" { channel="sleepiq:dualBed:1:master:right#alertDetailedMessage" }
Number MasterBR_SleepIQ_DailySleepIQ_Bob "Daily Sleep IQ [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepIQ" }
Number MasterBR_SleepIQ_DailyHeartRate_Bob "Daily Heart Rate [%.0f]" { channel="sleepiq:dualBed:1:master:right#todayAverageHeartRate" }
Number MasterBR_SleepIQ_DailyRespRate_Bob "Daily Respiration Rate [%.0f]" { channel="sleepiq:dualBed:1:master:right#todayAverageRespirationRate"}
String MasterBR_SleepIQ_DailyMessage_Bob "Daily Message [%s]" { channel="sleepiq:dualBed:1:master:right#todayMessage"}
Number:Time MasterBR_SleepIQ_DailyDuration_Bob "Daily Sleep Duration [%d s]" { channel="sleepiq:dualBed:1:master:right#todaySleepDurationSeconds"}
Number MasterBR_SleepIQ_MonthlySleepIQ_Bob "Monthly Sleep IQ [%.0f]" { channel="sleepiq:dualBed:1:master:right#monthlySleepIQ"}
Number MasterBR_SleepIQ_MonthlyHeartRate_Bob "Monthly Heart Rate [%.0f]" { channel="sleepiq:dualBed:1:master:right#monthlyAverageHeartRate"}
Number MasterBR_SleepIQ_MonthlyRespRate_Bob "Monthly Respiration Rate [%.0f]" { channel="sleepiq:dualBed:1:master:right#monthlyAverageRespirationRate"}
```

View File

@ -32,7 +32,8 @@ Each inverter requires the following configuration parameters:
| parameter | required | default | description |
| --------------- | -------- | ------- | -------------------------------------------------------------------- |
| host | yes | | hostname or IP address of the inverter |
| port | no | 12345 | Port number to connect to. This should be `12345` for most inverters |
| portNumber | no | 12345 | Port number to connect to. This should be `12345` for most inverters |
| deviceAddress | no | 1 | Device address for devices connected serially. |
| refreshInterval | no | 15 | Interval (in seconds) to refresh the channel values. |
## Properties
@ -75,7 +76,8 @@ _inverter.things:_
```java
Thing solarmax:inverter:solarmax "SolarMax Inverter" [
host="192.168.1.151",
port="12345",
portNumber="12345",
deviceAddress="1",
refresh="15"
]
```
@ -115,30 +117,11 @@ Number:Temperature heatSinkTemperature "Heat Sink Temperature in degrees celcius
```
_heatpump.sitemap:_
```perl
sitemap heatpump label="Heatpump" {
Frame label="Heatpump" {
Text item=HeatPump_State_Ext
Text item=HeatPump_Temperature_1
Text item=HeatPump_Outside_Avg
Text item=HeatPump_Hours_Heatpump
Text item=HeatPump_Hours_Heating
Text item=HeatPump_Hours_Warmwater
Switch item=HeatPump_heating_operation_mode mappings=[0="Auto", 1="Auxiliary heater", 2="Party", 3="Holiday", 4="Off"]
Setpoint item=HeatPump_heating_temperature minValue=-10 maxValue=10 step=0.5
Switch item=HeatPump_warmwater_operation_mode mappings=[0="Auto", 1="Auxiliary heater", 2="Party", 3="Holiday", 4="Off"]
Setpoint item=HeatPump_warmwater_temperature minValue=10 maxValue=65 step=1
}
}
```
### SolarMax Commands
During the implementation the SolarMax device was sent all possible 3 character commands and a number of 4 character commands, to see what it responded to.
The most interesting, identifiable and useful commands were implemented as channels above.
Here is a list of other commands, which are known to return some kind of value: ADR (DeviceAddress / Device Number - only used if the devices are linked serially), AMM, CID, CPG, CPL, CP1, CP2, CP3, CP4, CP5, CYC, DIN, DMO, ETH, FH2, FQR, FWV, IAA, IED, IEE, IEM, ILM, IP4, ISL, ITS, KFS, KHS, KTS, LAN (Language), MAC (MAC Address), PAE, PAM, PDA, PDC, PFA, PIN (Power Installed), PLR, PPC, PRL (AC Power Percent, PSF, PSR, PSS, QAC, QMO, QUC, RA1, RA2, RB1, RB2, REL, RH1, RH2, RPR, RSD, SAC, SAL, SAM, SCH, SNM (IP Broadcast Address??), SPS, SRD, SRS, SYS (Operating State), TCP (probably port number - 12345), TI1, TL1, TL3, TND, TNH, TNL, TP1, TP2, TP3, TV0, TV1, TYP (Type?), UA2, UB2, UGD, UI1, UI2, UI3, ULH, ULL, UMX, UM1, UM2, UM3, UPD, UZK, VCM
Here is a list of other commands, which are known to return some kind of value: ADR (Device Address), AMM, CID, CPG, CPL, CP1, CP2, CP3, CP4, CP5, CYC, DIN, DMO, ETH, FH2, FQR, FWV, IAA, IED, IEE, IEM, ILM, IP4, ISL, ITS, KFS, KHS, KTS, LAN (Language), MAC (MAC Address), PAE, PAM, PDA, PDC, PFA, PIN (Power Installed), PLR, PPC, PRL (AC Power Percent, PSF, PSR, PSS, QAC, QMO, QUC, RA1, RA2, RB1, RB2, REL, RH1, RH2, RPR, RSD, SAC, SAL, SAM, SCH, SNM (IP Broadcast Address??), SPS, SRD, SRS, SYS (Operating State), TCP (probably port number - 12345), TI1, TL1, TL3, TND, TNH, TNL, TP1, TP2, TP3, TV0, TV1, TYP (Type?), UA2, UB2, UGD, UI1, UI2, UI3, ULH, ULL, UMX, UM1, UM2, UM3, UPD, UZK, VCM
Valid commands which returned a null/empty value during testing: FFK, FRT, GCP, ITN, PLD, PLE, PLF, PLS, PPO, TV2, VLE, VLI, VLO

View File

@ -19,14 +19,14 @@
<description>Username of a registered SleepIQ account owner</description>
</parameter>
<parameter name="password" type="text" required="false">
<context>password</context>
<label>Password</label>
<description>Password of a registered SleepIQ account owner</description>
<context>password</context>
</parameter>
<parameter name="pollingInterval" type="integer" min="30" step="30" required="true">
<label>Polling Interval</label>
<description>Seconds between fetching values from the cloud service</description>
<default>60</default>
<default>120</default>
</parameter>
</config-description>
</bridge-type>
@ -86,6 +86,17 @@
<channel id="lastLink" typeId="lastLinkType"/>
<channel id="alertId" typeId="alertIdType"/>
<channel id="alertDetailedMessage" typeId="alertDetailedMessageType"/>
<channel id="firstName" typeId="firstNameType"/>
<channel id="sleepGoalMinutes" typeId="sleepGoalMinutesType"/>
<channel id="privacyMode" typeId="privacyMode"/>
<channel id="todaySleepIQ" typeId="todaySleepIQType"/>
<channel id="todayAverageHeartRate" typeId="todayAverageHeartRateType"/>
<channel id="todayAverageRespirationRate" typeId="todayAverageRespirationRateType"/>
<channel id="todayMessage" typeId="todayMessageType"/>
<channel id="todaySleepDurationSeconds" typeId="todaySleepDurationSecondsType"/>
<channel id="monthlySleepIQ" typeId="monthlySleepIQType"/>
<channel id="monthlyAverageHeartRate" typeId="monthlyAverageHeartRateType"/>
<channel id="monthlyAverageRespirationRate" typeId="monthlyAverageRespirationRateType"/>
</channels>
</channel-group-type>
@ -99,7 +110,7 @@
<item-type>Number</item-type>
<label>Sleep Number</label>
<description>The Sleep Number setting of the chamber</description>
<state readOnly="true"/>
<state readOnly="false" min="5" max="100" step="5" pattern="%d"/>
</channel-type>
<channel-type id="pressureType">
<item-type>Number</item-type>
@ -126,5 +137,71 @@
<description>A detailed message describing an alert condition with the chamber</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="firstNameType">
<item-type>String</item-type>
<label>First Name</label>
<description>The first name of the sleeper</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="sleepGoalMinutesType">
<item-type>Number:Time</item-type>
<label>Sleep Goal</label>
<description>The goal for the amount of sleep per night (in minutes)</description>
<state readOnly="true" pattern="%d %unit%"/>
</channel-type>
<channel-type id="privacyMode">
<item-type>Switch</item-type>
<label>Privacy Mode</label>
<description>Enable/disable privacy mode</description>
<state readOnly="false"/>
</channel-type>
<channel-type id="todaySleepIQType">
<item-type>Number</item-type>
<label>Today's Sleep IQ</label>
<description>The Sleep Quotient for today</description>
<state readOnly="true" pattern="%d"/>
</channel-type>
<channel-type id="todayAverageHeartRateType">
<item-type>Number</item-type>
<label>Today's Avg Heart Rate</label>
<description>The average heart rate for today</description>
<state readOnly="true" pattern="%d"/>
</channel-type>
<channel-type id="todayAverageRespirationRateType">
<item-type>Number</item-type>
<label>Today's Avg Respiration Rate</label>
<description>The average respiration rate for today</description>
<state readOnly="true" pattern="%d"/>
</channel-type>
<channel-type id="todayMessageType">
<item-type>String</item-type>
<label>Today's Message</label>
<description>The description of today's sleep quality</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="todaySleepDurationSecondsType">
<item-type>Number:Time</item-type>
<label>Today's Sleep Duration</label>
<description>The total duration of sleep for today in seconds</description>
<state readOnly="true" pattern="%d %unit%"/>
</channel-type>
<channel-type id="monthlySleepIQType">
<item-type>Number</item-type>
<label>Monthly Sleep IQ</label>
<description>The overall Sleep Quotient for the past month</description>
<state readOnly="true" pattern="%d"/>
</channel-type>
<channel-type id="monthlyAverageHeartRateType">
<item-type>Number</item-type>
<label>Monthly Avg Heart Rate</label>
<description>The average heart rate for the past month</description>
<state readOnly="true" pattern="%d"/>
</channel-type>
<channel-type id="monthlyAverageRespirationRateType">
<item-type>Number</item-type>
<label>Monthly Avg Respiration Rate</label>
<description>The average respiration rate for the past month</description>
<state readOnly="true" pattern="%d"/>
</channel-type>
</thing:thing-descriptions>

View File

@ -37,10 +37,15 @@
<description>Hostname or IP Address</description>
</parameter>
<parameter name="portNumber" type="integer" required="false">
<label>Port</label>
<label>Port Number</label>
<description>Port Number (defaults to 12345)</description>
<default>12345</default>
</parameter>
<parameter name="deviceAddress" type="integer" required="false">
<label>Device Address</label>
<description>Device address for devices connected serially (defaults to 1)</description>
<default>1</default>
</parameter>
<parameter name="refreshInterval" type="integer" required="false">
<label>Refresh Interval</label>
<description>Refresh Interval in seconds (defaults to 15)</description>