Ankündigung

Einklappen
Keine Ankündigung bisher.

Zufällige Schreibbefehle bei openhab2-Dienst Neustart

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zufällige Schreibbefehle bei openhab2-Dienst Neustart

    Servus zusammen!
    Ich hab's schon im openhab Forum versucht, aber ohne Antwort. Vielleicht kann ja hier jemand helfen oder hat eine Idee.
    Installiert ist laut dpkg --list | grep
    openhab2: openhab2 2.0.0-1 all openhab2

    Solange ich den Dienst bzw. den rpi nicht neustarte klappt alles erst einmal soweit ganz ok.
    Sobald ich aber den openhab Dienst neustarte kommen zufällige Schreibbefehle auf dem Bus.
    Im Klartext bedeutet es, dass irgendwo im Haus Licht angeht oder ähnliches.
    Das ist wirklich ärgerlich, weil ich so nix an der Konfig ändern kann ohne hinterher wieder alles ausschalten zu müssen.
    Kommt besonders schlecht an, wenn Kids und Frau nachts vom Licht geweckt werden.

    1) Soetwas schon einmal gehört?
    2) Grundlagenfrage: Wenn ich die Konfig ändere, müss ich überhaupt neustarten oder wird das automatisch übernommen?

    Hier mal ein paar wichtige Konfig-Files:
    knx.cfg
    Code:
    # KNX gateway IP address
    # (optional, if serialPort or connection type 'ROUTER' is specified)
    ip=192.168.177.9
    
    # Local KNX Binding bus address.
    # Use it, when two or more openHAB Instances are connected to the same KNX bus.
    # (optional, defaults to 0.0.0)
    busaddr=1.1.254
    
    # Ignore local KNX Events, prevents internal events coming from
    # 'openHAB event bus' a second time to be sent back to the 'openHAB event bus'.
    # Note: To send back events second time is a Bug, but for backward compatibility, the behavior is not changed.
    # For new installations, its recommend to set "ignorelocalevents=true"
    # (optional, defaults to false)
    ignorelocalevents=true
    
    # KNX IP connection type. Could be either TUNNEL or ROUTER (optional, defaults to TUNNEL)
    # Note: If you cannot get the ROUTER mode working (even if it claims it is connected),
    # use TUNNEL mode instead with setting both the ip of the KNX gateway and the localIp.
    type=TUNNEL
    
    # KNX gateway port (optional, defaults to 3671)
    # Note: If you use eibd, setting to 6720
    port=3671
    
    # Local endpoint to specify the multicast interface, no port is used (optional)
    localIp=192.168.177.88
    
    # Serial port of FT1.2 KNX interface (ignored, if ip is specified)
    # Valid values are e.g. COM1 for Windows and /dev/ttyS0 or /dev/ttyUSB0 for Linux
    #serialPort=
    
    # Pause in milliseconds between two read requests on the KNX bus during
    # initialization (optional, defaults to 50)
    #pause=
    
    # Timeout in milliseconds to wait for a response from the KNX bus (optional,
    # defaults to 10000)
    #timeout
    
    # Number of read retries while initialization items from the KNX bus (optional,
    # defaults to 3)
    #readRetries
    
    # Seconds between connect retries when KNX link has been lost
    # 0 means never retry, it will only reconnect on next write or read request
    # Note: without periodic retries all events will be lost up to the next read/write
    # request
    # (optional, default is 0)
    #autoReconnectPeriod=30
    
    ### Auto refresh feature
    # Number of entries permissible in the item refresher queue.
    # (optional, defaults to 10000)
    #maxRefreshQueueEntries=
    
    # Number of parallel threads for refreshing items. (optional, defaults to 5)
    #numberOfThreads=
    
    # Seconds to wait for an orderly shutdown of the auto refresher's
    # ScheduledExecutorService. (optional, defaults to 5)
    #scheduledExecutorServiceShutdownTimeoutString=
    
    # Use NAT (Network Address Translation)
    # (optional; defaults to false)
    #useNAT=true

    items
    Code:
    Group gKG "Keller" <cellar>
    Group gEG "EG" <groundfloor>
    Group gOG "OG" <firstfloor>
    Group gDG "DG" <secondfloor>
    Group Garden "Garten" <garden>
    Group gTemps "Temperaturen" <temperature>
    Group Weather "Weather" <sun>
    
    Group Status
    Group Shutters
    
    Group KG_HWR "HWR" <video> (gKG)
    Group KG_Vorrat "Vorrat" <kitchen> (gKG)
    Group KG_Hobby "Hobby" <kitchen> (gKG)
    Group KG_Flur "Flur" <corridor> (gKG)
    
    Group EG_Wohn "Wohnzimmer" <video> (gEG)
    Group EG_Kueche "Küche" <kitchen> (gEG)
    Group EG_Essen "Essbereich" <kitchen> (gEG)
    Group EG_Toilette "Gäste WC" <bath> (gEG)
    Group EG_Flur "Flur" <corridor> (gEG)
    
    Group OG_Bath "Bedezimmer" <bath> (gOG)
    Group OG_Kind "Lina" <boy_1> (gOG)
    Group OG_Bed "Schlafzimmer" <bedroom> (gOG)
    Group OG_Allgemein "Allgemein" <corridor> (gOG)
    
    Group DG_Bad "Bedezimmer" <bath> (gDG)
    Group DG_Studio "Studio groß" <boy_1> (gDG)
    Group DG_Buero "Büro" <bedroom> (gDG)
    Group DG_Flur "Flur" <corridor> (gDG)
    
    
    /* 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 */
    Switch Licht_KG_Flur "Flur" (KG_Flur, Lights) {knx="1.001:1/1/2"}
    Switch Licht_KG_Treppe "Treppe" (gKG, Lights) {knx="1.001:1/1/4"}
    Switch Licht_KG_HWR "HWR" (KG_HWR, Lights) {knx="1.001:1/1/10"}
    Switch Licht_KG_Vorrat "Vorrat" (KG_Vorrat, Lights) {knx="1.001:1/1/1"}
    Switch Licht_KG_Hobby "Hobby" (KG_Hobby, Lights) {knx="1.001:1/1/3"}
    
    Switch Licht_EG_Kueche "Küche" (EG_Kueche, Lights) {knx="1.001:2/1/13"}
    Switch Licht_EG_Esstisch_Decke "Esstisch Decke" (EG_Essen, Lights) {knx="1.001:2/1/3"}
    Switch Licht_EG_Esstisch_Wand "Esstisch Wand" (EG_Essen, Lights) {knx="1.001:2/1/6"}
    Switch Licht_EG_CouchVoute "Couch voute" (EG_Wohn, Lights) {knx="1.001:2/1/5"}
    Switch Licht_EG_CouchDecke "Couch Decke" (EG_Wohn, Lights) {knx="1.001:2/1/10"}
    Switch Licht_EG_Kellerwand "Kellerwand" (EG_Wohn, Lights) {knx="1.001:2/1/4"}
    Switch Licht_EG_Flur "Flur" (EG_Flur, Lights) {knx="1.001:2/1/2"}
    Switch Licht_EG_GaesteWC "GästeWC" (EG_Toilette, Lights) {knx="1.001:2/1/0"}
    Switch Licht_EG_Treppe "Treppe" (EG_Flur, Lights) {knx="1.001:2/1/7"}
    
    Switch Licht_OG_BadDecke "Bad Decke" (OG_Bath, Lights)
    Switch Licht_OG_BadSpiegel "Bad Spiegle" (OG_Bath, Lights)
    Switch Licht_OG_BadWand "Bad Wand" (OG_Bath, Lights)
    Switch Licht_OG_Flur "Flur" (OG_Allgemein, Lights)
    Switch Licht_OG_Lina "Lina" (OG_Kind, Lights)
    Switch Licht_OG_Schlafzimmer "Schlafzimmer" (OG_Bed, Lights)
    
    Switch Licht_DG_Spiegelschrank "Spiegelschrank" (DG_Bad, Lights) {knx="1.001:4/1/4"}
    Switch Licht_DG_BadWand "Bad Wand" (DG_Bad, Lights) {knx="1.001:4/1/4"}
    Switch Licht_DG_Flur "Flur" (DG_Flur, Lights) {knx="1.001:4/1/2"}
    Switch Licht_DG_Studio "Decke" (DG_Studio, Lights) {knx="1.001:4/1/0"}
    Switch Licht_DG_Buero "Deckenlampe" (DG_Buero, Lights) {knx="1.001:4/1/3"}
    Switch Licht_DG_Testtimer "Test" (DG_Office, Lights)
    
    Switch Light_Garden_Garage "Garage" (Garden, Lights)
    Switch Light_Garden_Terrace "Terrace" (Garden, Lights)
    
    /* Rollershutters */
    Rollershutter Shutter_GF_Toilet "Toilet" (GF_Toilet, Shutters)
    Rollershutter Shutter_GF_Kitchen "Kitchen" (GF_Kitchen, Shutters)
    Rollershutter Shutter_GF_Living "Livingroom" (GF_Living, Shutters)
    Rollershutter Shutter_FF_Bed "Bedroom" (FF_Bed, Shutters)
    Rollershutter Shutter_FF_Bath "Bath" (FF_Bath, Shutters)
    Rollershutter Shutter_FF_Office_Window "Office Window" (FF_Office, Shutters)
    Rollershutter Shutter_FF_Office_Door "Office Door" (FF_Office, Shutters)
    
    Switch Shutter_all
    
    /* Temperaturen soll */
    Number Temperatur_SOLL_KG_Treppe "KG Soll Treppe [%.1f °C]" <temperature> (gTemps) {knx="9.001:1/3/51"}
    Number Temperatur_SOLL_KG_Hobby "KG Soll Hobbyraum [%.1f °C]" <temperature> (gTemps) {knx="9.001:1/3/50"}
    Number Temperatur_SOLL_EG_Wohnzimmer "EG Soll Wohnzimmer [%.1f °C]" <temperature> (gTemps) {knx="9.001:2/3/50"}
    Number Temperatur_SOLL_EG_Kueche "EG Soll Küche [%.1f °C]" <temperature> (gTemps) {knx="9.001:2/3/51"}
    Number Temperatur_SOLL_EG_GeasteWC "EG Soll GästeWC [%.1f °C]" <temperature> (gTemps) {knx="9.001:2/3/52"}
    Number Temperatur_SOLL_OG_Bad "OG Soll Bad [%.1f °C]" <temperature> (gTemps) {knx="9.001:3/3/50"}
    Number Temperatur_SOLL_OG_Schlafzimmer "OG Soll Schlafzimmer [%.1f °C]" <temperature> (gTemps) {knx="9.001:3/3/51"}
    Number Temperatur_SOLL_OG_Lina "OG Soll Lina [%.1f °C]" <temperature> (gTemps) {knx="9.001:3/3/52"}
    Number Temperatur_SOLL_DG_Bad "DG Soll Bad [%.1f °C]" <temperature> (gTemps) {knx="9.001:4/3/50"}
    Number Temperatur_SOLL_DG_Buero "DG Soll Büro [%.1f °C]" <temperature> (gTemps) {knx="9.001:4/3/51"}
    Number Temperatur_SOLL_DG_Studio "DG Soll Studio [%.1f °C]" <temperature> (gTemps) {knx="9.001:4/3/52"}
    /* Temperaturen ist */
    Number Temperature_IST_KG_Hobby "KG IST Hobbyraum [%.1f °C]" <temperature> (gTemps) {knx="9.001:1/3/0"}
    Number Temperature_IST_KG_Vorrat "KG IST Vorrat [%.1f °C]" <temperature> (gTemps) {knx="9.001:1/3/1"}
    Number Temperature_IST_KG_HWR "KG IST HWR [%.1f °C]" <temperature> (gTemps) {knx="9.001:1/3/2"}
    Number Temperature_IST_EG_Wohnzimmer "EG IST Wohnzimmer [%.1f °C]" <temperature> (gTemps) {knx="9.001:2/3/0"}
    Number Temperature_IST_EG_Kueche "EG IST Küche [%.1f °C]" <temperature> (gTemps) {knx="9.001:2/3/1"}
    Number Temperature_IST_EG_GaesteWC "EG IST GästeWC [%.1f °C]" <temperature> (gTemps) {knx="9.001:2/3/2"}
    Number Temperature_IST_OG_Bad "OG IST Bad [%.1f °C]" <temperature> (gTemps) {knx="9.001:3/3/0"}
    Number Temperature_IST_OG_Schlafzimmer "OG IST Schlafzimmer [%.1f °C]" <temperature> (gTemps) {knx="9.001:3/3/1"}
    Number Temperature_IST_OG_Lina "OG IST Lina [%.1f °C]" <temperature> (gTemps) {knx="9.001:3/3/2"}
    Number Temperature_IST_DG_Bad "DG IST Bad [%.1f °C]" <temperature> (gTemps) {knx="9.001:4/3/0"}
    Number Temperature_IST_DG_Buero "DG IST Büro [%.1f °C]" <temperature> (gTemps) {knx="9.001:4/3/1"}
    Number Temperature_IST_DG_Studio "DG IST Studio [%.1f °C]" <temperature> (gTemps) {knx="9.001:4/3/2"}
    
    
    
    /* Windows
    Contact Window_EG_Frontdoor "Frontdoor [MAP(en.map):%s]" (GF_Corridor, Windows)
    Contact Window_GF_Kitchen "Kitchen [MAP(en.map):%s]" (GF_Kitchen, Windows)
    Contact Window_GF_Living "Terrace door [MAP(en.map):%s]" (GF_Living, Windows)
    Contact Window_GF_Toilet "Toilet [MAP(en.map):%s]" (GF_Toilet, Windows)
    Contact Window_FF_Bath "Bath [MAP(en.map):%s]" (FF_Bath, Windows)
    Contact Window_FF_Bed "Bedroom [MAP(en.map):%s]" (FF_Bed, Windows)
    Contact Window_FF_Office_Window "Office Window [MAP(en.map):%s]" (FF_Office, Windows)
    Contact Window_FF_Office_Door "Balcony Door [MAP(en.map):%s]" (FF_Office, Windows)
    Contact Garage_Door "Garage Door [MAP(en.map):%s]" (Garden, Windows)
    */
    
    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 Sun_Elevation "Sun Elevation" <sun> { channel = "astro:sun:home:position#elevation" }
    Number 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 Moon_Elevation "Moon Elevation" <moon> { channel = "astro:moon:home:position#elevation" }
    Number 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"]
    Number Temperature_Setpoint "Temperature [%.1f °C]" <temperature> (Thermostat) ["TargetTemperature"]
    String Thermostat_Mode "Thermostat Mode [%s]" <temperature> (Thermostat) ["homekit:HeatingCoolingMode"]
    
    // vim: syntax=Xtend
    sitemap
    Code:
    sitemap demo label="Main Menu"
    {
    Frame {
    Group item=gKG label="Keller" icon="cellar"
    Group item=gEG label="Erdgeschoss" icon="groundfloor"
    Group item=gOG label="Obergeschoss" icon="firstfloor"
    Group item=gDG label="Dachgeschoss" icon="firstfloor"
    Group item=Garden icon="garden"
    }
    Frame label="Temperaturen" {
    Text label="Soll/ist" icon="temperature" {
    Frame label="Temperatur soll" {
    Setpoint item=Temperatur_SOLL_KG_Treppe label="KG Treppe [%.1f °C]" step=0.2 minValue=16 maxValue=28
    Setpoint item=Temperatur_SOLL_KG_Hobby label="KG Hobby [%.1f °C]" step=0.2 minValue=16 maxValue=28
    Setpoint item=Temperatur_SOLL_EG_Wohnzimmer label="EG Wohnzimmer [%.1f °C]" step=0.2 minValue=18 maxValue=28
    Setpoint item=Temperatur_SOLL_EG_Kueche label="EG Küche [%.1f °C]" step=0.2 minValue=18 maxValue=28
    Setpoint item=Temperatur_SOLL_EG_GeasteWC label="EG Gäste WC [%.1f °C]" step=0.2 minValue=18 maxValue=28
    Setpoint item=Temperatur_SOLL_OG_Bad label="OG Bad [%.1f °C]" step=0.2 minValue=18 maxValue=28
    Setpoint item=Temperatur_SOLL_OG_Schlafzimmer label="OG Schlafzimmer [%.1f °C]" step=0.2 minValue=18 maxValue=28
    Setpoint item=Temperatur_SOLL_OG_Lina label="OG Lina [%.1f °C]" step=0.2 minValue=16 maxValue=28
    Setpoint item=Temperatur_SOLL_DG_Bad label="DG Bad [%.1f °C]" step=0.2 minValue=16 maxValue=28
    Setpoint item=Temperatur_SOLL_DG_Buero label="DG Büro [%.1f °C]" step=0.2 minValue=16 maxValue=28
    Setpoint item=Temperatur_SOLL_DG_Studio label="DG Studio [%.1f °C]" step=0.2 minValue=16 maxValue=28
    }
    Frame label="Temperatur ist" {
    Text item=Temperature_IST_KG_Hobby label="KG Hobby"
    Text item=Temperature_IST_KG_Vorrat label="KG Vorrat"
    Text item=Temperature_IST_KG_HWR label="KG HWR"
    Text item=Temperature_IST_EG_Wohnzimmer label="EG Wohnzimmer"
    Text item=Temperature_IST_EG_Kueche label="EG Küche"
    Text item=Temperature_IST_EG_GaesteWC label="EG GästeWC"
    Text item=Temperature_IST_OG_Bad label="OG Bad"
    Text item=Temperature_IST_OG_Schlafzimmer label="OG Schlafzimmer"
    Text item=Temperature_IST_OG_Lina label="OG Lina"
    Text item=Temperature_IST_DG_Bad label="DG Bad"
    Text item=Temperature_IST_DG_Buero label="DG Büro"
    Text item=Temperature_IST_DG_Studio label="DG Studio"
    }
    }
    }
    Frame label="Wetter" {
    Text item=Weather_Temperature valuecolor=[Weather_LastUpdate=="NULL"="lightgray",Weather_Las tUpdate>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=600 visibility=[Weather_Chart_Period==0, Weather_Chart_Period=="NULL"]
    Chart item=Weather_Chart period=D refresh=3600 visibility=[Weather_Chart_Period==1]
    Chart item=Weather_Chart period=W refresh=3600 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 height=10
    // }
    // }
    // Text label="Multimedia" icon="video" {
    // Frame label="Radio Control" {
    // Selection item=Radio_Station mappings=[0=off, 1=HR3, 2=SWR3, 3=FFH]
    // 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="http://www.openHAB.org" icon="icon"
    // }
    // Video url="http://www.openhab.org/assets/smarthome.mp4"
    // Webview url="http://heise-online.mobi/" height=8
    // Image url="http://fpoimg.com/320x240?text=openHAB" item=ImageURL
    // }
    // }
    // }
    }
    
    // vim: syntax=Xtend
    rules
    Code:
    import java.util.Random
    
    var Timer timer = null
    val resList = newArrayList("640/480", "320/240", "480/360")
    val urlList = newArrayList("http://www.fillmurray.com", "http://www.fillmurray.com/g",
    "http://www.placecage.com", "http://www.placecage.com/c", "http://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
    
    /**
    * 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.withTimeAtSta rtOfDay)
    val min = Weather_Temperature.minimumSince(now.withTimeAtSta rtOfDay)
    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 as PercentType)
    // } 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")
    // case 3 : playStream("http://edge.live.mp3.mdn.newmedia.nacamar.net/radioffh/livestream.mp3.m3u")
    // case 4 : playStream("http://stream.laut.fm/club93")
    // }
    //end
    
    
    //
    //rule "Timer Test"
    //when
    // Item Light_DG_Testtimer changed from OFF to ON
    //then
    // if(Light_DG_Testtimer.state==ON) {
    // sendCommand(Light_DG_Office_Ceiling, ON)
    // if(timer==null) {
    // // first ON command, so create a timer to turn the light off again
    // timer = createTimer(now.plusSeconds(10)) [| sendCommand(Light_DG_Office_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
    
    
    
    rule "Timer Test"
    when
    Item Light_DG_Testtimer changed from OFF to ON
    then
    sendCommand(Light_DG_Office_Ceiling, ON)
    if(timer==null) {
    // first ON command, so create a timer to turn the light off again
    timer = createTimer(now.plusSeconds(3)) [|
    sendCommand(Light_DG_Office_Ceiling, OFF)
    sendCommand(Light_DG_Testtimer, OFF)
    timer = null
    ]
    
    }
    end
    
    
    rule "Init virtual Items"
    when
    System started
    then
    if (Temperatur_SOLL_KG_Treppe.state == NULL) {
    Temperatur_SOLL_KG_Treppe.postUpdate(18)
    }
    if (Temperatur_SOLL_KG_Hobby.state == NULL) {
    Temperatur_SOLL_KG_Hobby.postUpdate(18)
    }
    if (Temperatur_SOLL_EG_Wohnzimmer.state == NULL) {
    Temperatur_SOLL_EG_Wohnzimmer.postUpdate(23)
    }
    if (Temperatur_SOLL_EG_Kueche.state == NULL) {
    Temperatur_SOLL_EG_Kueche.postUpdate(22)
    }
    if (Temperatur_SOLL_EG_GeasteWC.state == NULL) {
    Temperatur_SOLL_EG_GeasteWC.postUpdate(22)
    }
    if (Temperatur_SOLL_OG_Bad.state == NULL) {
    Temperatur_SOLL_OG_Bad.postUpdate(23)
    }
    if (Temperatur_SOLL_OG_Schlafzimmer.state == NULL) {
    Temperatur_SOLL_OG_Schlafzimmer.postUpdate(20)
    }
    if (Temperatur_SOLL_OG_Lina.state == NULL) {
    Temperatur_SOLL_OG_Lina.postUpdate(20)
    }
    if (Temperatur_SOLL_DG_Bad.state == NULL) {
    Temperatur_SOLL_DG_Bad.postUpdate(23)
    }
    if (Temperatur_SOLL_DG_Buero.state == NULL) {
    Temperatur_SOLL_DG_Buero.postUpdate(18)
    }
    if (Temperatur_SOLL_DG_Studio.state == NULL) {
    Temperatur_SOLL_DG_Studio.postUpdate(18)
    }
    end
    
    
    // vim: syntax=Xtend

    #2
    Also, der erste Schritt wäre mal, alle Rules zu entfernen, die noch vom Demo Mode übrig sind (ebenso die entsprechenden Items)

    In meiner knx Installation hatte ich ein paar kleinere Fehler, die genau die gleiche Wirkung hatten, und zwar waren teilweise die RückmeldeGA als erste Adresse eingetragen. Deshalb hat ein Read Request auf bestimmte GA teilweise dazu geführt, dass die Antwort dann andere Aktoren geschaltet hat. Das fiel aber erst auf, als ich mit "Smarthome" anfing.

    Kommentar


      #3
      hi udo1toni.
      In der Tat! Kaum hat man den Müll bereinigt, schon klappt es
      Danke!

      Jetzt habe ich aber noch eine andere Frage: Wie bekomme ich es nach einem Neustart vom openhab Dienst hin, dass alle Schalter in openhab den korrekten Status haben?

      Kommentar


        #4
        Bei knx Items kannst Du zusätzlich die Rückmeldeadresse eintragen, also z.B.
        Code:
        Switch MySwitch "Mein Label [%s]" {knx="1/1/1 + <1/1/2"}
        wobei 1/1/1 die GA ist, mit der der Aktor angesteuert wird und 1/1/2 die RückmeldeGA, über die der Aktor seinen Status verkündet. Genauso funktioniert das auch mit allen anderen Items. Das < vor der RückmeldeGA sorgt dafür, dass openHAB beim Start einen Read Request auf genau dieser GA schickt. Natürlich muss die knx Seite korrekt konfiguriert sein, also darf z.B. nur exakt ein Aktor auf diesen Read Request reagieren und jeder Kanal benötigt seine eigene RückmeldeGA.
        Wichtig zu wissen ist auch, dass, falls man den DPT bei einer GA angegeben hat, man den DPT auch bei der RückmeldeGA angeben sollte.

        Bei Items, die nicht an knx gebunden sind, kommt es darauf an, ob (und wenn ja, wie) Zustandsmeldungen erzwungen werden können. Falls alle Stricke reißen, kannst Du mit einem Persistence Service arbeiten, der beim Systemstart den letzten bekannten Wert in das Item schreibt. da kommt es dann natürlich drauf an, wie lange das System stand, aber meist geht es ja nur um einen Neustart, der innerhalb einer Minute erledigt ist.

        Schau Dir mal die offizielle Dokumentation an, dort ist eigentlich alles recht genau erklärt.

        Kommentar


          #5
          Oh man! Klappt in der Tat ebenfalls.
          DANKE!

          Kommentar

          Lädt...
          X