[sleepiq] Add functionality to control the bed foundation (#14714)

* Add foundation functionality

Signed-off-by: Mark Hilbush <mark@hilbush.com>
This commit is contained in:
Mark Hilbush
2023-03-28 11:27:31 -04:00
committed by GitHub
parent 1983bc36f1
commit 0a3d9ece3c
40 changed files with 2069 additions and 142 deletions

View File

@@ -19,6 +19,9 @@ Currently, only dual-chamber beds are supported by this binding.
The SleepIQ cloud thing must be added manually with the username and password used to register with the service.
After that, beds are discovered automatically by querying the service.
If the bed has a foundation, it will be auto-discovered by the binding.
If a foundation is discovered, the channels for controlling presets, position and outlets can be operated.
The thing properties will show whether or not a foundation is installed.
## Binding Configuration
@@ -72,7 +75,6 @@ All channels within this group are read-only, except for the sleepNumber and pri
|-----------------------------------|----------------|---------------------------------------------------------------------------------------------------------------------|
| 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 |
@@ -91,52 +93,66 @@ All channels within this group are read-only, except for the sleepNumber and pri
| 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 |
| foundationPreset | Number | Sets the head and foot position to one of the 6 available presets (1-6) (foundation required) |
| foundationPositionHead | Dimmer | Sets the head position (foundation required) |
| foundationPositionFoot | Dimmer | Sets the foot position (foundation required) |
| nightStandOutlet | Switch | Turn on/off the night stand outlet (foundation required) |
| underBedLight | Switch | Turn on/off the under bed light (foundation required) |
## Items
Here is a sample item configuration:
```java
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:Time MasterBR_SleepIQ_DailyDuration_Alice "Daily Sleep Duration [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepDurationSeconds"}
Number:Time MasterBR_SleepIQ_DailyInBed_Alice "Daily Sleep In Bed [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepInBedSeconds"}
Number:Time MasterBR_SleepIQ_DailyOutOfBed_Alice "Daily Sleep Out Of Bed [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepOutOfBedSeconds"}
Number:Time MasterBR_SleepIQ_DailyRestful_Alice "Daily Sleep Restful [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepRestfulSeconds"}
Number:Time MasterBR_SleepIQ_DailyRestless_Alice "Daily Sleep Restless [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepRestlessSeconds"}
Number 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 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:Time MasterBR_SleepIQ_DailyDuration_Alice "Daily Sleep Duration [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepDurationSeconds"}
Number:Time MasterBR_SleepIQ_DailyInBed_Alice "Daily Sleep In Bed [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepInBedSeconds"}
Number:Time MasterBR_SleepIQ_DailyOutOfBed_Alice "Daily Sleep Out Of Bed [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepOutOfBedSeconds"}
Number:Time MasterBR_SleepIQ_DailyRestful_Alice "Daily Sleep Restful [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepRestfulSeconds"}
Number:Time MasterBR_SleepIQ_DailyRestless_Alice "Daily Sleep Restless [%.0f]" { channel="sleepiq:dualBed:1:master:left#todaySleepRestlessSeconds"}
Number 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"}
Number MasterBR_SleepIQ_FoundationPreset_Alice "Foundation Preset [%d]" { channel="sleepiq:dualBed:1:master:left#foundationPreset"}
Dimmer MasterBR_SleepIQ_FoundationHead_Alice "Head Position [%d]" { channel="sleepiq:dualBed:1:master:left#foundationPositionHead"}
Dimmer MasterBR_SleepIQ_FoundationFoot_Alice "Foot Position [%d]" { channel="sleepiq:dualBed:1:master:left#foundationPositionFoot"}
Switch MasterBR_SleepIQ_FoundationNightStand_Alice "Night Stand [%d]" { channel="sleepiq:dualBed:1:master:left#nightStandOutlet"}
Switch MasterBR_SleepIQ_FoundationNightLight_Alice "Night Light [%d]" { channel="sleepiq:dualBed:1:master:left#nightLightOutlet"}
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:Time MasterBR_SleepIQ_DailyInBed_Bob "Daily Sleep In Bed [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepInBedSeconds"}
Number:Time MasterBR_SleepIQ_DailyOutOfBed_Bob "Daily Sleep Out Of Bed [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepOutOfBedSeconds"}
Number:Time MasterBR_SleepIQ_DailyRestful_Bob "Daily Sleep Restful [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepRestfulSeconds"}
Number:Time MasterBR_SleepIQ_DailyRestless_Bob "Daily Sleep Restless [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepRestlessSeconds"}
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"}
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_Bob "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:Time MasterBR_SleepIQ_DailyInBed_Bob "Daily Sleep In Bed [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepInBedSeconds"}
Number:Time MasterBR_SleepIQ_DailyOutOfBed_Bob "Daily Sleep Out Of Bed [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepOutOfBedSeconds"}
Number:Time MasterBR_SleepIQ_DailyRestful_Bob "Daily Sleep Restful [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepRestfulSeconds"}
Number:Time MasterBR_SleepIQ_DailyRestless_Bob "Daily Sleep Restless [%.0f]" { channel="sleepiq:dualBed:1:master:right#todaySleepRestlessSeconds"}
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"}
Number MasterBR_SleepIQ_FoundationPreset_Bob "Foundation Preset [%d]" { channel="sleepiq:dualBed:1:master:right#foundationPreset"}
Dimmer MasterBR_SleepIQ_FoundationHead_Bob "Head Position [%d]" { channel="sleepiq:dualBed:1:master:right#foundationPositionHead"}
Dimmer MasterBR_SleepIQ_FoundationFoot_Bob "Foot Position [%d]" { channel="sleepiq:dualBed:1:master:right#foundationPositionFoot"}
Switch MasterBR_SleepIQ_FoundationNightStand_Bob "Night Stand [%d]" { channel="sleepiq:dualBed:1:master:right#nightStandOutlet"}
Switch MasterBR_SleepIQ_FoundationNightLight_Bob "Night Light [%d]" { channel="sleepiq:dualBed:1:master:right#nightLightOutlet"}
```