openHAB install after windows service feature install

This commit is contained in:
2019-11-08 16:28:55 -06:00
commit 6a5b2422b6
973 changed files with 22607 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,22 @@
'use strict';
scriptExtension.importPreset("RuleSupport");
scriptExtension.importPreset("RuleSimple");
var sRule = new SimpleRule() {
execute: function( module, input) {
print("This is a 'hello world!' from a Javascript rule.");
}
};
sRule.setTriggers([
TriggerBuilder.create()
.withId("aTimerTrigger")
.withTypeUID("timer.GenericCronTrigger")
.withConfiguration(
new Configuration({
"cronExpression": "0 * * * * ?"
})).build()
]);
automationManager.addRule(sRule);

View File

@@ -0,0 +1,133 @@
Group gFF "First Floor" <firstfloor> ["FirstFloor"]
Group gGF "Ground Floor" <groundfloor> ["GroundFloor"]
Group gC "Cellar" <cellar> ["Basement"]
Group Garden "Garden" <garden> ["Garden"]
Group Weather "Weather" <sun>
Group Status
Group Shutters
Group GF_Living "Living Room" <video> (gGF) ["LivingRoom"]
Group GF_Kitchen "Kitchen" <kitchen> (gGF) ["Kitchen"]
Group GF_Toilet "Toilet" <bath> (gGF) ["Bathroom"] { synonyms="Toilets,WC,Restroom" }
Group GF_Corridor "Corridor" <corridor> (gGF) ["Corridor"]
Group FF_Bath "Bathroom" <bath> (gFF) ["Bathroom"]
Group FF_Office "Office" <office> (gFF) ["Room"] { synonyms="Study" }
Group FF_Son "Oliver's Room" <boy_1> (gFF) ["Bedroom"] { synonyms="Oli's Room" }
Group FF_Daughter "Amelia's Room" <girl_1> (gFF) ["Bedroom"] { synonyms="Amy's Room" }
Group FF_Bed "Bedroom" <bedroom> (gFF) ["Bedroom"] { synonyms="Master Bedroom" }
Group FF_Corridor "Corridor" <corridor> (gFF) ["Corridor"]
/* active groups */
Group:Switch:OR(ON, OFF) Lights "All Lights [(%d)]"
Group:Switch:OR(ON, OFF) Heating "No. of Active Heatings [(%d)]" <heating>
Group:Number:AVG Temperature "Avg. Room Temperature [%.1f °C]" <temperature> (Status)
Group:Contact:OR(OPEN, CLOSED) Windows "Open windows [(%d)]" <contact>
/* Lights */
Dimmer Light_GF_Living_Table "Table" (GF_Living, Lights) ["Light", "Lighting"]
Switch Light_GF_Corridor_Ceiling "Ceiling" (GF_Corridor, Lights) ["Light"]
Switch Light_GF_Kitchen_Ceiling "Ceiling" (GF_Kitchen, Lights) ["Light"]
Switch Light_GF_Kitchen_Table "Table" (GF_Kitchen, Lights) ["Light"]
Switch Light_GF_Corridor_Wardrobe "Wardrobe" (GF_Corridor, Lights) ["Light"]
Switch Light_GF_Toilet_Ceiling "Ceiling" (GF_Toilet, Lights) ["Light"]
Switch Light_GF_Toilet_Mirror "Mirror" (GF_Toilet, Lights) ["Light"]
Switch Light_FF_Bath_Ceiling "Ceiling" (FF_Bath, Lights) ["Light"]
Switch Light_FF_Bath_Mirror "Mirror" (FF_Bath, Lights) ["Light"]
Switch Light_FF_Corridor_Ceiling "Corridor" (FF_Corridor, Lights) ["Light"]
Switch Light_FF_Office_Ceiling "Ceiling" (FF_Office, Lights) ["Light"]
Switch Light_FF_Son_Ceiling "Ceiling" (FF_Son, Lights) ["Light"]
Switch Light_FF_Daughter_Ceiling "Ceiling" (FF_Daughter, Lights) ["Light"]
Switch Light_FF_Bed_Ceiling "Ceiling" (FF_Bed, Lights) ["Light"]
Switch Light_C_Corridor_Ceiling "Ceiling" (gC, Lights) ["Light"]
Switch Light_C_Staircase "Staircase" (gC, Lights) ["Light"]
Switch Light_C_Washing_Ceiling "Washing" (gC, Lights) ["Light"]
Switch Light_C_Workshop "Workshop" (gC, Lights) ["Light", "Lighting"]
Switch Light_Garden_Garage "Garage" (Garden, Lights) ["Light", "Lighting"]
Switch Light_Garden_Terrace "Terrace" (Garden, Lights) ["Light"]
/* Heating */
Switch Heating_GF_Corridor "Corridor" <heating> (GF_Corridor, Heating) ["HVAC"]
Switch Heating_GF_Toilet "Toilet" <heating> (GF_Toilet, Heating) ["HVAC"]
Switch Heating_GF_Living "Livingroom" <heating> (GF_Living, Heating) ["HVAC"]
Switch Heating_GF_Kitchen "Kitchen" <heating> (GF_Kitchen, Heating) ["HVAC"]
Switch Heating_FF_Bath "Bath" <heating> (FF_Bath, Heating) ["HVAC"]
Switch Heating_FF_Office "Office" <heating> (FF_Office, Heating) ["HVAC"]
Switch Heating_FF_Son "Oliver's Room" <heating> (FF_Son, Heating) ["HVAC"]
Switch Heating_FF_Daughter "Amelia's Room" <heating> (FF_Daughter, Heating) ["HVAC"]
Switch Heating_FF_Bed "Bedroom" <heating> (FF_Bed, Heating) ["HVAC"]
/* Rollershutters */
Rollershutter Shutter_GF_Toilet "Toilet" (GF_Toilet, Shutters) ["Blinds"]
Rollershutter Shutter_GF_Kitchen "Kitchen" (GF_Kitchen, Shutters) ["Blinds"]
Rollershutter Shutter_GF_Living "Livingroom" (GF_Living, Shutters) ["Blinds"]
Rollershutter Shutter_FF_Bed "Bedroom" (FF_Bed, Shutters) ["Blinds"]
Rollershutter Shutter_FF_Bath "Bath" (FF_Bath, Shutters) ["Blinds"]
Rollershutter Shutter_FF_Office_Window "Office Window" (FF_Office, Shutters) ["Blinds"]
Rollershutter Shutter_FF_Office_Door "Office Door" (FF_Office, Shutters) ["Blinds"]
Switch Shutter_all
/* Indoor Temperatures */
Number Temperature_GF_Corridor "Corridor [%.1f °C]" <temperature> (Temperature, GF_Corridor) ["Temperature", "Measurement"]
Number Temperature_GF_Toilet "Toilet [%.1f °C]" <temperature> (Temperature, GF_Toilet) ["Temperature", "Measurement"]
Number Temperature_GF_Living "Living Room [%.1f °C]" <temperature> (Temperature, GF_Living) ["Temperature", "Measurement"]
Number Temperature_GF_Kitchen "Kitchen [%.1f °C]" <temperature> (Temperature, GF_Kitchen, Thermostat) ["Temperature", "Measurement", "CurrentTemperature"]
Number Temperature_FF_Bath "Bath [%.1f °C]" <temperature> (Temperature, FF_Bath) ["Temperature", "Measurement"]
Number Temperature_FF_Office "Office [%.1f °C]" <temperature> (Temperature, FF_Office) ["Temperature", "Measurement"]
Number Temperature_FF_Son "Oliver's Room [%.1f °C]" <temperature> (Temperature, FF_Son) ["Temperature", "Measurement"]
Number Temperature_FF_Daughter "Amelia's Room [%.1f °C]" <temperature> (Temperature, FF_Daughter) ["Temperature", "Measurement"]
Number Temperature_FF_Bed "Bedroom [%.1f °C]" <temperature> (Temperature, FF_Bed) ["Temperature", "Measurement"]
/* Windows */
Contact Window_GF_Frontdoor "Frontdoor [MAP(en.map):%s]" <frontdoor> (GF_Corridor, Windows) ["FrontDoor"]
Contact Window_GF_Kitchen "Kitchen [MAP(en.map):%s]" (GF_Kitchen, Windows) ["Window"]
Contact Window_GF_Living "Terrace door [MAP(en.map):%s]" <door> (GF_Living, Windows) ["Door"]
Contact Window_GF_Toilet "Toilet [MAP(en.map):%s]" (GF_Toilet, Windows) ["Window"]
Contact Window_FF_Bath "Bath [MAP(en.map):%s]" (FF_Bath, Windows) ["Window"]
Contact Window_FF_Bed "Bedroom [MAP(en.map):%s]" (FF_Bed, Windows) ["Window"]
Contact Window_FF_Office_Window "Office Window [MAP(en.map):%s]" (FF_Office, Windows) ["Window"]
Contact Window_FF_Office_Door "Balcony Door [MAP(en.map):%s]" <door> (FF_Office, Windows) ["Door"]
Contact Garage_Door "Garage Door [MAP(en.map):%s]" <garagedoor> (Garden, Windows) ["GarageDoor"]
Group Weather_Chart
Number Weather_Temperature "Outside Temperature [%.1f °C]" <temperature> (Weather, Weather_Chart) { channel="yahooweather:weather:berlin:temperature" }
Number Weather_Temp_Max "Todays Maximum [%.1f °C]" <temperature> (Weather, Weather_Chart)
Number Weather_Temp_Min "Todays Minimum [%.1f °C]" <temperature> (Weather, Weather_Chart)
Number Weather_Chart_Period "Chart Period"
DateTime Weather_LastUpdate "Last Update [%1$ta %1$tR]" <clock>
Number:Angle Sun_Elevation "Sun Elevation" <sun> { channel = "astro:sun:home:position#elevation" }
Number:Angle Sun_Azimuth "Sun Azimuth" <sun> { channel = "astro:sun:home:position#azimuth" }
DateTime Sunrise_Time "Sunrise [%1$tH:%1$tM]" <sunrise> { channel = "astro:sun:home:rise#start" }
DateTime Sunset_Time "Sunset [%1$tH:%1$tM]" <sunset> { channel = "astro:sun:home:set#start" }
Number:Angle Moon_Elevation "Moon Elevation" <moon> { channel = "astro:moon:home:position#elevation" }
Number:Angle Moon_Azimuth "Moon Azimuth" <moon> { channel = "astro:moon:home:position#azimuth" }
String Moon_Phase "Moon Phase" <moon> { channel = "astro:moon:home:phase#name" }
/* Demo items */
DateTime CurrentDate "Date [%1$tA, %1$td.%1$tm.%1$tY]" <calendar> { channel="ntp:ntp:demo:dateTime" }
Switch DemoSwitch "Switch"
Dimmer DimmedLight "Dimmer [%d %%]" <slider>
Color RGBLight "RGB Light" <slider>
Rollershutter DemoShutter "Roller Shutter"
Dimmer DemoBlinds "Blinds [%d %%]" <rollershutter>
Number Scene_General "Scene" <sofa>
Number Radio_Station "Radio" <network>
Dimmer Volume "Volume [%.1f %%]"
Location DemoLocation "Brandenburg Gate Berlin"
Number Wifi_Level "Wifi Level [%d/4]" <signal> (FF_Office)
String ImageURL "Image URL [%s]"
Group Thermostat "Thermostat" <temperature> ["Thermostat"]
Dimmer Temperature_Setpoint "Temperature [%.1f °C]" <temperature> (Thermostat) ["TargetTemperature", "Setpoint", "Temperature"] { habot="" [ control="knob", min=15, max=35, leftIcon="mdi-thermometer", leftInverted=true ] }
String Thermostat_Mode "Thermostat Mode [%s]" <temperature> (Thermostat) ["homekit:HeatingCoolingMode", "Control"]
// vim: syntax=Xtend

View File

@@ -0,0 +1,14 @@
// persistence strategies have a name and a definition and are referred to in the "Items" section
Strategies {
// for rrd charts, we need a cron strategy
everyMinute : "0 * * * * ?"
}
Items {
DemoSwitch, NoOfLights, Window_GF_Toilet, Heating* : strategy = everyChange, everyMinute, restoreOnStartup
// let's only store temperature values in rrd
Temperature*, Weather_Chart* : strategy = everyMinute, restoreOnStartup
}
// vim: syntax=Xtend

View File

@@ -0,0 +1,164 @@
import java.util.Random
var Timer timer = null
val resList = newArrayList("640/480", "320/240", "480/360")
val urlList = newArrayList("https://www.fillmurray.com", "https://www.fillmurray.com/g",
"https://www.placecage.com", "https://www.placecage.com/c", "https://www.placecage.com/g")
val Random random = new Random()
/**
* This is a demo rule which simulates a real dimmer by reacting to increase/decrease commands
* and posting an updated state on the bus
*/
rule "Dimmed Light"
when
Item DimmedLight received command
then
if ((receivedCommand == INCREASE) || (receivedCommand == DECREASE)) {
var Number percent = 0
if (DimmedLight.state instanceof DecimalType) percent = DimmedLight.state as DecimalType
if (receivedCommand == INCREASE) percent = percent + 5
if (receivedCommand == DECREASE) percent = percent - 5
if (percent < 0) percent = 0
if (percent > 100) percent = 100
postUpdate(DimmedLight, percent);
}
end
rule "Timer Demo"
when
Item Light_GF_Corridor_Ceiling received command
then
if (receivedCommand == ON) {
if (timer === null) {
// first ON command, so create a timer to turn the light off again
timer = createTimer(now.plusSeconds(10)) [|
sendCommand(Light_GF_Corridor_Ceiling, OFF)
]
} else {
// subsequent ON command, so reschedule the existing timer
timer.reschedule(now.plusSeconds(10))
}
} else if (receivedCommand == OFF) {
// remove any previously scheduled timer
if (timer !== null) {
timer.cancel
timer = null
}
}
end
/**
* The following rules help initializing the demo items with some helpful states.
*/
rule "Initialize light states"
when
System started
then
Lights?.members.forEach(light|
postUpdate(light, if (Math::random > 0.7) ON else OFF)
)
end
rule "Initialize heating states"
when
System started
then
Heating?.members.forEach(heating|
postUpdate(heating, if (Math::random > 0.8) ON else OFF)
)
postUpdate(Temperature_Setpoint, 22)
end
rule "Initialize contact states"
when
System started
then
Windows?.members.forEach(window|
postUpdate(window, if (Math::random > 0.5) OPEN else CLOSED)
)
end
rule "Initialize Location"
when
System started
then
DemoLocation.postUpdate(new PointType("52.5200066,13.4049540"))
end
rule "Set random room temperatures"
when
System started or
Time cron "0 0/5 * * * ?"
then
Temperature?.members.forEach(temperature|
postUpdate(temperature, 20.0 + (25.0 - (Math::random * 50.0).intValue) / 10.0)
)
end
rule "Set daily max and min temperature"
when
Item Weather_Temperature changed or
Time cron "0 0 0 * * ?" or
System started
then
val max = Weather_Temperature.maximumSince(now.withTimeAtStartOfDay)
val min = Weather_Temperature.minimumSince(now.withTimeAtStartOfDay)
if (max !== null && min !== null) {
postUpdate(Weather_Temp_Max, max.state)
postUpdate(Weather_Temp_Min, min.state)
}
end
// Creates an item that stores the last update time of this item
rule "Records last weather update time"
when
Item Weather_Temperature received update
then
postUpdate(Weather_LastUpdate, new DateTimeType())
end
rule "Set random wifi variations"
when
System started or
Time cron "/20 * * * * ?"
then
postUpdate(Wifi_Level, (Math::random * 4.0).intValue)
end
rule "Set random image URLs"
when
Time cron "/10 * * * * ?"
then
val url = urlList.get(random.nextInt(urlList.length))
val res = resList.get(random.nextInt(resList.length))
postUpdate(ImageURL, url + "/" + res)
end
rule "Volume"
when
Item Volume received command
then
if (receivedCommand instanceof PercentType) {
setMasterVolume(receivedCommand)
} else {
if (receivedCommand == INCREASE) increaseMasterVolume(20)
if (receivedCommand == DECREASE) decreaseMasterVolume(20)
}
end
rule "Select Radio Station"
when
Item Radio_Station received command
then
switch(receivedCommand) {
case 0 : playStream(null)
case 1 : playStream("http://metafiles.gl-systemhaus.de/hr/hr3_2.m3u")
case 2 : playStream("http://mp3-live.swr3.de/swr3_m.m3u")
}
end
// vim: syntax=Xtend

View File

@@ -0,0 +1,3 @@
say("Demo script has been called!")
// vim: syntax=Xtend

View File

@@ -0,0 +1,5 @@
# Defining the default sitemap to use
org.eclipse.smarthome.basicui:defaultSitemap=demo
# The icon type to use, either png or svg
org.eclipse.smarthome.basicui:iconType=svg

View File

@@ -0,0 +1,9 @@
# Defining the default sitemap to use
org.eclipse.smarthome.classicui:defaultSitemap=demo
# The icon type to use, either png or svg
#org.eclipse.smarthome.classicui:iconType=
# Disable in-memory caching of html fragments
# If this is true, on every request the html files are loaded from disk (default is false)
#org.eclipse.smarthome.classicui:disableHtmlCache=false

View File

@@ -0,0 +1 @@
pattern=%date{ISO8601} - %-25logger: %msg%n

View File

@@ -0,0 +1,78 @@
sitemap demo label="Main Menu"
{
Frame {
Group item=gFF label="First Floor" icon="firstfloor"
Group item=gGF label="Ground Floor" icon="groundfloor"
Group item=gC label="Cellar" icon="cellar"
Group item=Garden icon="garden"
}
Frame label="Weather" {
Text item=Weather_Temperature valuecolor=[Weather_LastUpdate=="NULL"="lightgray",Weather_LastUpdate>90="lightgray",>25="orange",>15="green",>5="orange",<=5="blue"] {
Frame {
Text item=Weather_Temp_Max valuecolor=[>25="orange",>15="green",>5="orange",<=5="blue"]
Text item=Weather_Temp_Min valuecolor=[>25="orange",>15="green",>5="orange",<=5="blue"]
Text item=Weather_LastUpdate visibility=[Weather_LastUpdate>30] valuecolor=[Weather_LastUpdate>120="orange", Weather_LastUpdate>300="red"]
}
Frame {
Switch item=Weather_Chart_Period label="Chart Period" icon="chart" mappings=[0="Hour", 1="Day", 2="Week"]
Chart item=Weather_Chart period=h refresh=600000 visibility=[Weather_Chart_Period==0, Weather_Chart_Period=="NULL"]
Chart item=Weather_Chart period=D refresh=3600000 visibility=[Weather_Chart_Period==1]
Chart item=Weather_Chart period=W refresh=3600000 visibility=[Weather_Chart_Period==2]
}
}
Text label="Astronomical Data" icon="sun" {
Text item=Sun_Elevation
Text item=Sun_Azimuth
Text item=Sunrise_Time
Text item=Sunset_Time
Text item=Moon_Elevation
Text item=Moon_Azimuth
Text item=Moon_Phase
}
}
Frame label="Demo" {
Text item=CurrentDate
Text label="Group Demo" icon="firstfloor" {
Switch item=Lights mappings=[OFF="All Off"]
Group item=Heating
Group item=Windows
Text item=Temperature
}
Text label="Widget Overview" icon="chart" {
Frame label="Binary Widgets" {
Switch item=DemoSwitch label="Toggle Switch"
Switch item=DemoSwitch label="Button Switch" mappings=[ON="On"]
}
Frame label="Discrete Widgets" {
Selection item=Scene_General label="Scene Selection" mappings=[0=off, 1=TV, 2=Dinner, 3=Reading]
Switch item=Scene_General label="Scene" mappings=[1=TV, 2=Dinner, 3=Reading]
Setpoint item=Temperature_Setpoint minValue=16 maxValue=28 step=0.5
}
Frame label="Percent-based Widgets" {
Slider item=DimmedLight switchSupport
Colorpicker item=RGBLight icon="slider"
Switch item=DemoShutter
Slider item=DemoBlinds
}
Frame label="Map/Location" {
Mapview item=DemoLocation icon=movecontrol height=10
}
}
Text label="Multimedia" icon="video" {
Frame label="Radio Control" {
Selection item=Radio_Station label="Radio" mappings=[0=off, 1=HR3, 2=SWR3]
Slider item=Volume icon="soundvolume"
}
Frame label="Multimedia Widgets" {
Image url="https://raw.github.com/wiki/openhab/openhab/images/features.png" label="openHAB" {
Text label="https://www.openHAB.org" icon="icon"
}
Video url="https://www.openhab.org/assets/smarthome.mp4"
Webview url="https://en.m.wikipedia.org/w/index.php?title=Main_Page" height=8
Image url="http://fpoimg.com/320x240?text=openHAB" item=ImageURL
}
}
}
}
// vim: syntax=Xtend

View File

@@ -0,0 +1,8 @@
yahooweather:weather:berlin [ location=638242 ]
astro:sun:home [ geolocation="52.5200066,13.4049540", interval=60 ]
astro:moon:home [ geolocation="52.5200066,13.4049540", interval=60 ]
ntp:ntp:demo [ hostname="nl.pool.ntp.org", refreshInterval=60, refreshNtp=30 ]
// vim: syntax=Xtend

View File

@@ -0,0 +1,5 @@
OPEN=open
CLOSED=closed
ON=on
OFF=off
NULL=unknown

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.5.0" name="overrides-2.4.0">
<feature name="openhab-overrides" description="force to bundle packages" hidden="true" version="2.4.0">
<bundle dependency="true">mvn:org.apache.karaf.shell/org.apache.karaf.shell.ssh/4.2.1-sp1</bundle>
</feature>
</features>