updated generated content

Signed-off-by: Kai Kreuzer <kai@openhab.org>
pull/675/head
Kai Kreuzer 2018-05-09 10:57:39 +02:00
parent 33b5b3b782
commit 94952bf804
No known key found for this signature in database
GPG Key ID: 5110767B6248D3C0
10 changed files with 486 additions and 67 deletions

View File

@ -0,0 +1,188 @@
---
id: ftpupload
label: FTP Upload
title: FTP Upload - Bindings
type: binding
description: "This binding can be used to receive image files from FTP clients."
since: 2x
install: auto
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# FTP Upload Binding
This binding can be used to receive image files from FTP clients.
The binding acts as a FTP server.
Images stored on the FTP server are not saved to the file system, therefore the binding shouldn't cause any problems on flash based openHAB installations.
## Supported Things
This binding supports Things of type ```ftpupload```.
Every Thing is identified by FTP user name.
Therefore, every thing should use unique user name to login FTP server.
## Discovery
Automatic discovery is not supported.
## Binding Configuration
The binding has the following configuration options:
| Parameter | Name | Description | Required | Default value |
|-------------|--------------|------------------------------------------------------------------------------------------------------------------------|----------|---------------|
| port | TCP Port | TCP port of the FTP server | no | 2121 |
| idleTimeout | Idle timeout | The number of seconds before an inactive client is disconnected. If this value is set to 0, the idle time is disabled. | no | 60 |
## Channels
This binding currently supports the following channels:
| Channel Type ID | Item Type | Description |
|-----------------|--------------|----------------------------------------------------------------------------------------|
| image | Image | Image file received via FTP. |
When an image file is uploaded to FTP server, the binding tries to find the channel whose filename matches the uploaded image filename.
If no match is found, no channel is updated.
The filename parameter supports regular expression patterns.
See more details in the Things example.
Image channel supports following options:
| Parameter | Name | Description | Required | Default value |
|-------------|--------------|--------------------------------------------------------------------------|----------|---------------|
| filename | Filename | Filename to match received files. Supports regular expression patterns. | yes | .* |
### Trigger Channels
| Channel Type ID | Options | Description |
|-----------------|------------------------|-----------------------------------------------------|
| image-received | IMAGE_RECEIVED | Triggered when image file received from FTP client. |
When an image file is uploaded to FTP server, the binding tries to find the trigger channel whose filename matches the upload image filename.
If no match is found, no channel is updated.
The filename parameter supports regular expression patterns.
See more details in the Things example.
Trigger channels supports following options:
| Parameter | Name | Description | Required | Default value |
|-------------|--------------|--------------------------------------------------------------------------|----------|---------------|
| filename | Filename | Filename to match received files. Supports regular expression patterns. | yes | .* |
## Full Example
Things:
```
Thing ftpupload:imagereceiver:images1 [ userName="test1", password="12345" ] {
Thing ftpupload:imagereceiver:images2 [ userName="test2", password="12345" ] {
Channels:
Type image-channel : my_image1 "My Image channel 1" [
filename="test12[0-9]{2}.png" // match to filename test12xx.png, where xx can be numbers between 00-99
]
Type image-channel : my_image2 "My Image channel 2" [
filename="test.jpg"
]
Trigger String : my_image_trigger1 [
filename="test12[0-9]{2}.png"
]
Trigger String : my_image_trigger2 [
filename="test.jpg"
]
}
```
Items:
```
Image Image1 { channel="ftpupload:imagereceiver:images1:image" }
Image Image2 { channel="ftpupload:imagereceiver:images2:my_image1" }
```
Rules:
```
rule "example trigger rule 1"
when
Channel 'ftpupload:imagereceiver:images1:image-received' triggered IMAGE_RECEIVED
then
logInfo("Test","Image received")
end
rule "example trigger rule 2"
when
Channel 'ftpupload:imagereceiver:images2:my_image_trigger1' triggered IMAGE_RECEIVED
then
logInfo("Test","Image received")
end
```
Sitemap:
```
Frame label="FTP images" {
Image item=Image1
Image item=Image2
}
```
## Use case example
The binding can be used to receive images from network cameras that send images to a FTP server when motion or sound is detected.
Things:
```
Thing ftpupload:imagereceiver:garagecamera [ userName="garage", password="12345" ]
```
Items:
```
Image Garage_NetworkCamera_Motion_Image { channel="ftpupload:imagereceiver:garagecamera:image" }
```
Rules:
```
rule "example trigger rule"
when
Channel 'ftpupload:imagereceiver:garagecamera:image-received' triggered IMAGE_RECEIVED
then
logInfo("Test","Garage motion detected")
end
```
Sitemap:
```
Frame label="Garage network camera" icon="camera" {
Image item=Garage_NetworkCamera_Motion_Image
}
```
## Logging and Problem Solving
For problem solving, if binding logging is not enough, Apache FTP server logging can also be enabled by the following command in the karaf console:
```
log:set DEBUG org.apache.ftpserver
```
and set back to default level:
```
log:set DEFAULT org.apache.ftpserver
```
If you meet any problems to receive images from the network cameras, you could test connection to binding with any FTP client.
You can send image files via FTP client and thing channels should be updated accordingly.

View File

@ -155,6 +155,9 @@ The port number of the CUxD daemon (default = 8701)
- **installModeDuration**
Time in seconds that the controller will be in install mode when a device discovery is initiated (default = 60)
- **unpairOnDeletion**
If true, devices are automatically unpaired from a gateway when the corresponding thing is deleted (default = false)
The syntax for a bridge is:
```java

View File

@ -0,0 +1,123 @@
---
id: logreader
label: Log Reader
title: Log Reader - Bindings
type: binding
description: "This binding reads and analyzes log files. Search patterns are fully configurable, therefore different kind of log files should be possible to monitor by this binding."
since: 2x
install: auto
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Log Reader Binding
This binding reads and analyzes log files. Search patterns are fully configurable, therefore different kind of log files should be possible to monitor by this binding.
When certain log events is recognized, openHAB rules can be used to send notification about the event e.g by email for further analysis.
## Supported Things
This binding supports one ThingType: `reader`.
A reader supports 3 separate channels; One for errors, one for warnings and one custom channel for other purposes.
## Thing Configuration
The `reader` Thing has the following configuration parameters:
| Parameter | Type | Required | Default if omitted | Description |
| ------------------------------| ------- | -------- | -------------------------------- |-----------------------------------------------------------------------------------------|
| `filePath` | String | yes | `${OPENHAB_LOGDIR}/openhab.log` | Path to log file. ${OPENHAB_LOGDIR} is automatically replaced by the correct directory. |
| `refreshRate` | integer | no | `1000` | Time in milliseconds between individual log reads. |
| `errorPatterns` | String | no | `ERROR+` | Search patterns separated by \| character for warning events. |
| `errorBlacklistingPatterns` | String | no | | Search patterns for blacklisting unwanted error events separated by \| character. |
| `warningPatterns` | String | no | `WARN+` | Search patterns separated by \| character for error events. |
| `warningBlacklistingPatterns` | String | no | | Search patterns for blacklisting unwanted warning events separated by \| character. |
| `customPatterns` | String | no | | Search patterns separated by \| character for custom events. |
| `customBlacklistingPatterns` | String | no | | Search patterns for blacklisting unwanted custom events separated by \| character. |
Search patterns follows Java regular expression syntax. See https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html.
## Channels
List of channels
| Channel Type ID | Item Type | Description |
| ------------------ | ------------ | -------------------------------------------------------------- |
| `lastErrorEvent` | `String` | Displays contents of last [ERROR] event |
| `lastWarningEvent` | `String` | Displays contents of last [WARN] event |
| `lastCustomEvent` | `String` | Displays contents of last custom event |
| `errorEvents` | `Number` | Displays number of [ERROR] lines matched to search pattern |
| `warningEvents` | `Number` | Displays number of [WARN] lines matched to search pattern |
| `customEvents` | `Number` | Displays number of custom lines matched to search pattern |
| `logRotated` | `DateTime` | Last time when log rotated recognized |
| `newErrorEvent` | - | Trigger channel for last [ERROR] line |
| `newWarningEvent` | - | Trigger channel for last [ERROR] line |
| `newCustomEvent` | - | Trigger channel for last [ERROR] line |
## Examples
### example.things
```xtend
logreader:reader:openhablog[ refreshRate=1000, errorPatterns="ERROR+", errorBlacklistingPatterns="annoying error which should ignored|Another annoying error which should ignored" ]
```
### example.items
```xtend
String logreaderLastError "Last error [%s]" { channel="logreader:reader:openhablog:lastErrorEvent" }
String logreaderLastWarning "Last warning [%s]" { channel="logreader:reader:openhablog:lastWarningEvent" }
Number logreaderErrors "Error events matched [%d]" { channel="logreader:reader:openhablog:errorEvents" }
Number logreaderWarnings "Warning events matched [%d]" { channel="logreader:reader:openhablog:warningEvents" }
DateTime logreaderLogRotated "Last Log Rotation [%1$tY.%1$tm.%1$te %1$tR]" { channel="logreader:reader:openhablog:logRotated" }
```
### example.sitemap
```xtend
sitemap logreader_example label="Example" {
Frame label="LogReader" {
Text item=logreaderLastError
Text item=logreaderLastWarning
Text item=logreaderErrors
Text item=logreaderWarnings
Text item=logreaderLogRotated
}
}
```
### example.rules
```xtend
rule "LogReader"
when
Channel "logreader:reader:openhablog:newErrorEvent" triggered
then
// do something
end
```
Be careful when sending e.g. email notifications.
You could easily send thousand of *spam* emails in short period if e.g. one binding is in error loop.
### Thing status
Check thing status for errors.
### Verbose logging
Enable DEBUG logging in karaf console to see more precise error messages:
`log:set DEBUG org.openhab.binding.logreader`
See [openHAB2 logging docs](http://docs.openhab.org/administration/logging.html#defining-what-to-log) for more help.

View File

@ -72,6 +72,10 @@ The account Thing Type does not have any channels.
### Camera Channels
**Camera group channels**
Information about the camera.
| Channel Type ID | Item Type | Description | Read Write |
|-----------------------|-----------|---------------------------------------------------|:----------:|
| app_url | String | The app URL to see the camera | R |
@ -84,6 +88,24 @@ The account Thing Type does not have any channels.
| video_history_enabled | Switch | If the video history is currently enabled | R |
| web_url | String | The web URL to see the camera | R |
**Last event group channels**
Information about the last camera event (requires Nest Aware subscription).
| Channel Type ID | Item Type | Description | Read Write |
|--------------------|-----------|------------------------------------------------------------------------------------|:----------:|
| activity_zones | String | Identifiers for activity zones that detected the event (comma separated) | R |
| animated_image_url | String | The URL showing an animated image for the camera event | R |
| app_url | String | The app URL for the camera event, allows you to see the camera event in an app | R |
| end_time | DateTime | Timestamp when the camera event ended | R |
| has_motion | Switch | If motion was detected in the camera event | R |
| has_person | Switch | If a person was detected in the camera event | R |
| has_sound | Switch | If sound was detected in the camera event | R |
| image_url | String | The URL showing an image for the camera event | R |
| start_time | DateTime | Timestamp when the camera event started | R |
| urls_expire_time | DateTime | Timestamp when the camera event URLs expire | R |
| web_url | String | The web URL for the camera event, allows you to see the camera event in a web page | R |
### Smoke Detector Channels
| Channel Type ID | Item Type | Description | Read Write |
@ -108,36 +130,39 @@ The account Thing Type does not have any channels.
| peak_period_start_time | DateTime | Peak period start for the Rush Hour Rewards program | R |
| postal_code | String | Postal code of the structure | R |
| rush_hour_rewards_enrollment | Switch | If rush hour rewards system is enabled or not | R |
| security_state | String | Security state of the structure (OK, DETER) | R |
| smoke_alarm_state | String | Smoke alarm state (OK, EMERGENCY, WARNING) | R |
| time_zone | String | The time zone for the structure ([IANA time zone format](http://www.iana.org/time-zones)) | R |
### Thermostat Channels
| Channel Type ID | Item Type | Description | Read Write |
|-----------------------------|--------------------|---------------------------------------------------------------------------------------------|:----------:|
| can_cool | Switch | If the thermostat can actually turn on cooling | R |
| can_heat | Switch | If the thermostat can actually turn on heating | R |
| fan_timer_active | Switch | If the fan timer is engaged | R/W |
| fan_timer_duration | Number | Length of time (in minutes) that the fan is set to run (15, 30, 45, 60, 120, 240, 480, 960) | R/W |
| fan_timer_timeout | DateTime | Timestamp when the fan stops running | R |
| has_fan | Switch | If the thermostat can control the fan | R |
| has_leaf | Switch | If the thermostat is currently in a leaf mode | R |
| humidity | Number | Indicates the current relative humidity | R |
| last_connection | DateTime | Timestamp of the last successful interaction with Nest | R |
| locked | Switch | If the thermostat has the temperature locked to only be within a set range | R |
| locked_max_set_point | Number:Temperature | The locked range max set point temperature | R/W |
| locked_min_set_point | Number:Temperature | The locked range min set point temperature | R/W |
| max_set_point | Number:Temperature | The max set point temperature | R/W |
| min_set_point | Number:Temperature | The min set point temperature | R/W |
| mode | String | Current mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R/W |
| previous_mode | String | The previous mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R |
| state | String | The active state of the Nest thermostat (HEATING, COOLING, OFF) | R |
| temperature | Number:Temperature | Current temperature | R |
| time_to_target_mins | Number | Time left to the target temperature (mins) approximately | R |
| set_point | Number:Temperature | The set point temperature | R/W |
| sunlight_correction_active | Switch | If sunlight correction is active | R |
| sunlight_correction_enabled | Switch | If sunlight correction is enabled | R |
| using_emergency_heat | Switch | If the system is currently using emergency heat | R |
| Channel Type ID | Item Type | Description | Read Write |
|-----------------------------|----------------------|----------------------------------------------------------------------------------------|:----------:|
| can_cool | Switch | If the thermostat can actually turn on cooling | R |
| can_heat | Switch | If the thermostat can actually turn on heating | R |
| eco_max_set_point | Number:Temperature | The eco range max set point temperature | R |
| eco_min_set_point | Number:Temperature | The eco range min set point temperature | R |
| fan_timer_active | Switch | If the fan timer is engaged | R/W |
| fan_timer_duration | Number:Time | Length of time that the fan is set to run (15, 30, 45, 60, 120, 240, 480, 960 minutes) | R/W |
| fan_timer_timeout | DateTime | Timestamp when the fan stops running | R |
| has_fan | Switch | If the thermostat can control the fan | R |
| has_leaf | Switch | If the thermostat is currently in a leaf mode | R |
| humidity | Number:Dimensionless | Indicates the current relative humidity | R |
| last_connection | DateTime | Timestamp of the last successful interaction with Nest | R |
| locked | Switch | If the thermostat has the temperature locked to only be within a set range | R |
| locked_max_set_point | Number:Temperature | The locked range max set point temperature | R |
| locked_min_set_point | Number:Temperature | The locked range min set point temperature | R |
| max_set_point | Number:Temperature | The max set point temperature | R/W |
| min_set_point | Number:Temperature | The min set point temperature | R/W |
| mode | String | Current mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R/W |
| previous_mode | String | The previous mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R |
| state | String | The active state of the Nest thermostat (HEATING, COOLING, OFF) | R |
| temperature | Number:Temperature | Current temperature | R |
| time_to_target | Number:Time | Time left to the target temperature approximately | R |
| set_point | Number:Temperature | The set point temperature | R/W |
| sunlight_correction_active | Switch | If sunlight correction is active | R |
| sunlight_correction_enabled | Switch | If sunlight correction is enabled | R |
| using_emergency_heat | Switch | If the system is currently using emergency heat | R |
Note that the Nest API rounds Thermostat values so they will differ from what shows up in the Nest App.
The Nest API applies the following rounding:
@ -169,15 +194,26 @@ Bridge nest:account:demo_account [ productId="8fdf9885-ca07-4252-1aa3-f3d5ca9589
```
/* Camera */
String Cam_App_URL "App URL [%s]" { channel="nest:camera:demo_account:fish_cam:app_url" }
Switch Cam_Audio_Input_Enabled "Audio Input Enabled" { channel="nest:camera:demo_account:fish_cam:audio_input_enabled" }
DateTime Cam_Last_Online_Change "Last Online Change [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:camera:demo_account:fish_cam:last_online_change" }
String Cam_Snapshot_URL "Snapshot URL [%s]" { channel="nest:camera:demo_account:fish_cam:snapshot_url" }
Switch Cam_Streaming "Streaming" { channel="nest:camera:demo_account:fish_cam:streaming" }
Switch Cam_Public_Share_Enabled "Public Share Enabled" { channel="nest:camera:demo_account:fish_cam:public_share_enabled" }
String Cam_Public_Share_URL "Public Share URL [%s]" { channel="nest:camera:demo_account:fish_cam:public_share_url" }
Switch Cam_Video_History_Enabled "Video History Enabled" { channel="nest:camera:demo_account:fish_cam:video_history_enabled" }
String Cam_Web_URL "Web URL [%s]" { channel="nest:camera:demo_account:fish_cam:web_url" }
String Cam_App_URL "App URL [%s]" { channel="nest:camera:demo_account:fish_cam:camera#app_url" }
Switch Cam_Audio_Input_Enabled "Audio Input Enabled" { channel="nest:camera:demo_account:fish_cam:camera#audio_input_enabled" }
DateTime Cam_Last_Online_Change "Last Online Change [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:camera:demo_account:fish_cam:camera#last_online_change" }
String Cam_Snapshot_URL "Snapshot URL [%s]" { channel="nest:camera:demo_account:fish_cam:camera#snapshot_url" }
Switch Cam_Streaming "Streaming" { channel="nest:camera:demo_account:fish_cam:camera#streaming" }
Switch Cam_Public_Share_Enabled "Public Share Enabled" { channel="nest:camera:demo_account:fish_cam:camera#public_share_enabled" }
String Cam_Public_Share_URL "Public Share URL [%s]" { channel="nest:camera:demo_account:fish_cam:camera#public_share_url" }
Switch Cam_Video_History_Enabled "Video History Enabled" { channel="nest:camera:demo_account:fish_cam:camera#video_history_enabled" }
String Cam_Web_URL "Web URL [%s]" { channel="nest:camera:demo_account:fish_cam:camera#web_url" }
String Cam_LE_Activity_Zones "Last Event Activity Zones [%s]" { channel="nest:camera:demo_account:fish_cam:last_event#activity_zones" }
String Cam_LE_Animated_Image_URL "Last Event Animated Image URL [%s]" { channel="nest:camera:demo_account:fish_cam:last_event#animated_image_url" }
String Cam_LE_App_URL "Last Event App URL [%s]" { channel="nest:camera:demo_account:fish_cam:last_event#app_url" }
DateTime Cam_LE_End_Time "Last Event End Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:camera:demo_account:fish_cam:last_event#end_time" }
Switch Cam_LE_Has_Motion "Last Event Has Motion" { channel="nest:camera:demo_account:fish_cam:last_event#has_motion" }
Switch Cam_LE_Has_Person "Last Event Has Person" { channel="nest:camera:demo_account:fish_cam:last_event#has_person" }
Switch Cam_LE_Has_Sound "Last Event Has Sound" { channel="nest:camera:demo_account:fish_cam:last_event#has_sound" }
String Cam_LE_Image_URL "Last Event Image URL [%s]" { channel="nest:camera:demo_account:fish_cam:last_event#image_url" }
DateTime Cam_LE_Start_Time "Last Event Start Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:camera:demo_account:fish_cam:last_event#start_time" }
DateTime Cam_LE_URLs_Expire_Time "Last Event URLs Expire Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:camera:demo_account:fish_cam:last_event#urls_expire_time" }
String Cam_LE_Web_URL "Last Event Web URL [%s]" { channel="nest:camera:demo_account:fish_cam:last_event#web_url" }
/* Smoke Detector */
String Smoke_CO_Alarm "CO Alarm [%s]" { channel="nest:smoke_detector:demo_account:hallway_smoke:co_alarm_state" }
@ -191,12 +227,14 @@ String Smoke_UI_Color "UI Color [%s]"
/* Thermostat */
Switch Thermostat_Can_Cool "Can Cool" { channel="nest:thermostat:demo_account:living_thermostat:can_cool" }
Switch Thermostat_Can_Heat "Can Heat" { channel="nest:thermostat:demo_account:living_thermostat:can_heat" }
Number:Temperature Therm_EMaxSP "Eco Max Set Point [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:eco_max_set_point" }
Number:Temperature Therm_EMinSP "Eco Min Set Point [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:eco_min_set_point" }
Switch Thermostat_FT_Active "Fan Timer Active" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_active" }
Number Thermostat_FT_Duration "Fan Timer Duration" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_duration" }
Number:Time Thermostat_FT_Duration "Fan Timer Duration [%d %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_duration" }
DateTime Thermostat_FT_Timeout "Fan Timer Timeout [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_timeout" }
Switch Thermostat_Has_Fan "Has Fan" { channel="nest:thermostat:demo_account:living_thermostat:has_fan" }
Switch Thermostat_Has_Leaf "Has Leaf" { channel="nest:thermostat:demo_account:living_thermostat:has_leaf" }
Number Thermostat_Humidity "Humidity [%.1f %%]" { channel="nest:thermostat:demo_account:living_thermostat:humidity" }
Number:Dimensionless Therm_Hum "Humidity [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:humidity" }
DateTime Thermostat_Last_Conn "Last Connection [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:thermostat:demo_account:living_thermostat:last_connection" }
Switch Thermostat_Locked "Locked" { channel="nest:thermostat:demo_account:living_thermostat:locked" }
Number:Temperature Therm_LMaxSP "Locked Max Set Point [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:locked_max_set_point" }
@ -210,7 +248,7 @@ Number:Temperature Thermostat_SP "Set Point [%.1f %unit%]"
Switch Thermostat_Sunlight_CA "Sunlight Correction Active" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_active" }
Switch Thermostat_Sunlight_CE "Sunlight Correction Enabled" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_enabled" }
Number:Temperature Therm_Temp "Temperature [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:temperature" }
Number Thermostat_Time_To_Target "Time To Target [%s]" { channel="nest:thermostat:demo_account:living_thermostat:time_to_target_mins" }
Number:Time Therm_Time_To_Target "Time To Target [%d %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:time_to_target" }
Switch Thermostat_Using_Em_Heat "Using Emergency Heat" { channel="nest:thermostat:demo_account:living_thermostat:using_emergency_heat" }
/* Structure */
@ -222,6 +260,7 @@ DateTime Home_PP_End_Time "PP End Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%
DateTime Home_PP_Start_Time "PP Start Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:structure:demo_account:home:peak_period_start_time" }
String Home_Postal_Code "Postal Code [%s]" { channel="nest:structure:demo_account:home:postal_code" }
Switch Home_Rush_Hour_Rewards "Rush Hour Rewards" { channel="nest:structure:demo_account:home:rush_hour_rewards_enrollment" }
String Home_Security_State "Security State [%s]" { channel="nest:structure:demo_account:home:security_state" }
String Home_Smoke_Alarm_State "Smoke Alarm State [%s]" { channel="nest:structure:demo_account:home:smoke_alarm_state" }
String Home_Time_Zone "Time Zone [%s]" { channel="nest:structure:demo_account:home:time_zone" }
```

View File

@ -100,6 +100,7 @@ String NestHome_time_zone "Time Zone [%s]" {nest="<[structures(Home).
String NestHome_away "Away [%s]" {nest="=[structures(Home).away]"}
String NestHome_structure_id "Structure Id [%s]" {nest="<[structures(Home).structure_id]"}
Switch NestHome_rhr_enrollment "Rush Hour Rewards Enrollment [%s]" {nest="<[structures(Home).rhr_enrollment]"} // as of 1.9
String NestHome_wwn_security_state "Structure security state [%s]" {nest="<[structures(Home).wwn_security_state]"} // "ok" or "deter"
String NestHome_co_alarm_state "Home CO [%s]" {nest="<[structures(Home).co_alarm_state]"} // as of 1.9
String NestHome_smoke_alarm_state "Home Smoke [%s]" {nest="<[structures(Home).smoke_alarm_state]"} // as of 1.9

View File

@ -0,0 +1,64 @@
---
id: solarlog
label: Solar-Log
title: Solar-Log - Bindings
type: binding
description: "The [Solar-Log Family](http://www.solar-log.com/en/home.html) of monitoring devices for PV installations provide a MODBUS (TCP) and JSON-based API to access a number of internal data related to power generation and consumption. This binding implements access to the data via the JSON API."
since: 2x
install: auto
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Solar-Log Binding
The [Solar-Log Family](http://www.solar-log.com/en/home.html) of monitoring devices for PV installations provide a MODBUS (TCP) and JSON-based API to access a number of internal data related to power generation and consumption. This binding implements access to the data via the JSON API.
## Use of the binding
The Solar-Log is exposed as one thing with a number of channels that can be used to read the values for different aspects of your Solar-Log installation.
## Setup of the binding
You can either configure the Thing via the openHAB UI or via a `*.things` file, according to the following example:
`Thing solarlog:meter:pv "Solar-Log 300" @ "Utility Room" [ url="http://solar-log" refreshInterval=15]`
The parameters to be used are simple:
* `url` denotes the URL of your Solar-Log. If you have not changed anything, this defaults to `http://solar-log`.
* `refreshInterval` is the interval to fetch new data. Solar-Log updates its data every 15 - 60 seconds. `15` is the default value. Values lower than this will return the result from the last 15 seconds period. No value lower than this can be set in the UI.
Currently, the binding does not support authenticated access to the Solar-Log JSON API (which was introduced with newer firmwares). If must set the API access to `Open` in the Solar-Log configuration in order for the binding to work.
## Available channels
The following table is taken from the official manual and contains all available channels. If you want to manually define Items, this can for example be done as follows:
`Number solarlog_meter_pv_yieldday "Yield Day [% W]" (gSolarLog, gUtilityRoom) { channel="solarlog:meter:pv:yieldday" }`
Data point | Unit | Index Description
------------------- | --------------------- | -----------------
lastupdate | Time in the format dd.mm.yy; hh.minmin, secsec | 100 Time
pac | W | 101 Total output PAC from all of the inverters and meters in inverter mode
pdc | W | 102 Total output PAC from all of the inverters
uac | V | 103 Average voltage UAC from the inverter
udc | V | 104 Average voltage UDC from the inverter
yieldday | Wh | 105 Total yield for the day from all of the inverters
yieldyesterday | Wh | 106 Total yield for the previous day from all of the inverters
yieldmonth | Wh | 107 Total yield for the month from all of the inverters
yieldyear | Wh | 108 Total yield for the year from all of the inverters
yieldtotal | Wh | 109 Total yield from all of the inverters
conspac | W | 110 Current total consumption PAC from all of the consumption meters
consyieldday | Wh | 111 Total consumption from all of the consumption meters
consyieldyesterday | Wh | 112 Total consumption for the previous day; all of the consumption meters
consyieldmonth | Wh | 113 Total consumption for the month; all of the consumption meters
consyieldyear | Wh | 114 Total consumption for the year; all of the consumption meters
consyieldtotal | Wh | 115 Accumulated total consumption, all Consumption meter
totalPower | Wp | 116 Installed generator power
## More information
More information about the Solar-Log Data interfaces and the exact meaning of the various channels and the documentation of the JSON API can be found in the [Manual](https://www.solar-log.com/manuals/manuals/en_GB/SolarLog_Manual_3x_EN.pdf).

View File

@ -27,18 +27,18 @@ Given a retrieved XML
```xml
<?xml version="1.0" encoding="UTF-8"?>
<PTZStatus version="2.0" >
<AbsoluteHigh>
<elevation>0</elevation>
<azimuth>450</azimuth>
<absoluteZoom>10</absoluteZoom>
</AbsoluteHigh>
<AbsoluteHigh>
<elevation>0</elevation>
<azimuth>450</azimuth>
<absoluteZoom>10</absoluteZoom>
</AbsoluteHigh>
</PTZStatus>
```
The XPath `/PTZStatus/AbsoluteHigh/azimuth/text()` returns the document
```
<azimuth>450</azimuth>
450
```
## Advanced Example
@ -50,11 +50,11 @@ Given a retrieved XML (e.g. from an HIK Vision device with the namespace `xmlns=
```xml
<?xml version="1.0" encoding="UTF-8"?>
<PTZStatus version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<AbsoluteHigh>
<elevation>0</elevation>
<azimuth>450</azimuth>
<absoluteZoom>10</absoluteZoom>
</AbsoluteHigh>
<AbsoluteHigh>
<elevation>0</elevation>
<azimuth>450</azimuth>
<absoluteZoom>10</absoluteZoom>
</AbsoluteHigh>
</PTZStatus>
```
@ -79,7 +79,7 @@ returns
**.items**
```csv
String Temperature_xml "Temperature [JSONPATH([name()='PTZStatus']/*[name()='AbsoluteHigh']/*[name()='azimuth']/):%s °C]" {...}
String Temperature_xml "Temperature [XPATH(/*[name()='PTZStatus']/*[name()='AbsoluteHigh']/*[name()='azimuth']/):%s °C]" {...}
Number Temperature "Temperature [%.1f °C]"
```
@ -89,24 +89,24 @@ Number Temperature "Temperature [%.1f °C]"
rule "Convert XML to Item Type Number"
when
Item Temperature_xml changed
then
then
// use the transformation service to retrieve the value
// Simple
val mytest = transform("XPATH", "/*[name()='PTZStatus']
/*[name()='AbsoluteHigh']
/*[name()='azimuth']
/text()",
Temperature_xml.state.toString )
// Fully qualified
val mytest = transform("XPATH", "/*[local-name()='PTZStatus' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']
/*[local-name()='AbsoluteHigh' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']
/*[local-name()='azimuth' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']
/text()",
Temperature_xml.state.toString )
// Simple
val mytest = transform("XPATH", "/*[name()='PTZStatus']
/*[name()='AbsoluteHigh']
/*[name()='azimuth']
/text()",
Temperature_xml.state.toString )
// Fully qualified
val mytest = transform("XPATH", "/*[local-name()='PTZStatus' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']
/*[local-name()='AbsoluteHigh' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']
/*[local-name()='azimuth' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']
/text()",
Temperature_xml.state.toString )
// post the new value to the Number Item
Temperature.postUpdate( newValue )
end
end
```
Now the resulting Number can also be used in the label to [change the color](https://docs.openhab.org/configuration/sitemaps.html#label-and-value-colors) or in a rule as value for comparison.

View File

@ -11,20 +11,21 @@ HVAC,"Air condition devices, Fans",
Inverter,"Power inverter, such as solar inverters etc.",
LawnMower,"Lawn mowing robots, etc.",lawnmower.png
Lightbulb,"Devices that illuminate something, such as bulbs, etc.",lightbulb.png
Lock,"Devices whose primary pupose is locking something",lock.png
Lock,"Devices whose primary purpose is locking something",lock.png
MotionDetector,"Motion sensors/detectors",
NetworkAppliance,"Bridges/Gateway need to access other devices like used by Philips Hue for example, Routers, Switches",
PowerOutlet,"Small devices to be plugged into a power socket in a wall which stick there",poweroutlet.png
Projector,"Devices that project a picture somewhere",projector.png
RadiatorControl,"Controls on radiators used to heat up rooms",
Receiver,"Audio/Video receivers, i.e. radio receivers, satelite or cable receivers, recorders, etc.",receiver.png
Receiver,"Audio/Video receivers, i.e. radio receivers, satellite or cable receivers, recorders, etc.",receiver.png
RemoteControl,"Any portable or hand-held device that controls the status of something, e.g. remote control, keyfob etc."
Screen,"Devices that are able to show a picture",screen.png
Sensor,"Device used to measure something",
Siren,"Siren used by Alarm systems",siren.png
SmokeDetector,"Smoke detectors",
Speaker,"Devices that are able to play sounds",
WallSwitch,"Any device attached to the wall that controls the status of something, for ex. a light switch, dimmer",wallswitch.png
Valve,"Valves used to control water or gas. e.g. a flow stop valve.",
WallSwitch,"Any device attached to the wall that controls the status of something, e.g. a light switch, dimmer",wallswitch.png
WebService,"Account with credentials for a website",
Window,"Window",window.png
WhiteGood,"Devices that look like Waschingmachines, Dishwashers, Dryers, Fridges, Ovens, etc.",whitegood.png

Can't render this file because it has a wrong number of fields in line 21.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 48 KiB