OpenHAB is a server for Home Automation tasks. It is written in Java and makes use of some OOB properties and syntax.
Rules are configured in one or more text files, “when change happens, then invoke the configuration block”
The goal here was in my East facing apartment, if the Sun is north of 110 degrees or if the TV is on, then close the blinds using the RFXCOM binding instead of the radio remote and the Omnia Go roller shade motor.
http://www.rfxcom.com/WebRoot/StoreNL2/Shops/78165469/MediaGallery/Downloads/RFXtrx_User_Guide.pdf
rule "Daylight Start Summer" when Item astro_sun_local_phase_name changed to DAYLIGHT then var int _azimuth = astro_sun_local_position_azimuth.getStateAs(QuantityType).toUnit('°').intValue if (_azimuth < 110) rfxcom_socket_Socket_1_0_2298B1K0117_state.sendCommand(ON) end rule "TV turned ON" when Item network_pingdevice_tv_online changed to ON then if (astro_sun_local_phase_name.state == "DAYLIGHT") rfxcom_socket_Socket_1_0_2298B1K0117_state.sendCommand(ON) end rule "Sun Moved or TV turned OFF" when Item astro_sun_local_position_azimuth changed or Item network_pingdevice_tv_online changed to OFF then var int _azimuth = astro_sun_local_position_azimuth.getStateAs(QuantityType).toUnit('°').intValue logInfo("Sun Moved", "Azimuth: {}", _azimuth) if (astro_sun_local_phase_name.state == "DAYLIGHT" && _azimuth > 110 && network_pingdevice_tv_online.state == OFF) rfxcom_socket_Socket_1_0_2298B1K0117_state.sendCommand(OFF) end rule "Daylight End" when Item astro_sun_local_phase_name changed from DAYLIGHT then rfxcom_socket_Socket_1_0_2298B1K0117_state.sendCommand(OFF) end