import java.util.Hashtable val defaultCover = "http://192.168.0.73:8080/static/img/default-release-cd.png" val _favoriten = new Hashtable() val _favoritenItems = new Hashtable() val _podcastItems = new Hashtable() val loggerName="Radio.rules" rule "Initialization" when System started then logInfo(fileName, "Initialization ...") _favoriten.put(0, "SRF 1 Aargau Solothurn"); _favoriten.put(1, "SRF 2 Kultur"); _favoriten.put(2, "SRF 3"); _favoriten.put(3, "SRF 4 News"); _favoriten.put(4, "Radio Argovia"); _favoriten.put(5, "Radio Swiss Pop"); _favoriten.put(6, "Radio Swiss Jazz"); _favoriten.put(7, "SwissGroove") _favoriten.put(8, "Gotha Lounge") _favoritenItems.put(ItemRadioControlSchlafzimmer, ItemSonosFavoriteSchlafzimmer) _favoritenItems.put(ItemRadioControlKueche, ItemSonosFavoriteKueche) _favoritenItems.put(ItemRadioControlBad, ItemSonosFavoriteBad) _favoritenItems.put(ItemRadioControlBastelzimmer, ItemSonosFavoriteBastelzimmer) _favoritenItems.put(ItemRadioControlBuero, ItemSonosFavoriteBuero) _podcastItems.put(0, ItemPodcastEchoDerZeit) _podcastItems.put(1, ItemPodcastRegionalJournal) _podcastItems.put(2, ItemPodcastPeterSchneider) _podcastItems.put(3, ItemPodcastPopRoutes) _podcastItems.put(4, ItemPodcastKontext) _podcastItems.put(5, ItemPodcastInput) _podcastItems.put(6, ItemPodcastForschungAktuell) _podcastItems.put(7, ItemPodcastWissenschaftImBrennpunkt) _podcastItems.put(8, ItemPodcastTatort) _uriItems.put(ItemRadioControlSchlafzimmer, ItemRadioPlayUriSchlafzimmer) _uriItems.put(ItemRadioControlKueche, ItemRadioPlayUriKueche) _uriItems.put(ItemRadioControlBad, ItemRadioPlayUriBad) _uriItems.put(ItemRadioControlBastelzimmer, ItemRadioPlayUriBastelzimmer) _uriItems.put(ItemRadioControlBuero, ItemRadioPlayUriBuero) ItemRadioSelectStation.postUpdate(-1) ItemRadioSelectPodcast.postUpdate(-1) end rule "Radio Station auswählen" when Item ItemRadioSelectStation changed then val stationKey = (ItemRadioSelectStation.state as DecimalType).intValue if (stationKey < 0) { return } val stationFavoriteValue = _favoriten.get(stationKey) logDebug(loggerName, "New station index: " + stationKey + ", Station: " + stationFavoriteValue) if (stationFavoriteValue !== null) { ItemRadioTitle.postUpdate("") ItemRadioAlbum.postUpdate("") ItemRadioArtist.postUpdate("") GroupRadioControl.members.filter[state == PLAY].forEach[ item | // ItemArtistInformation.postUpdate("") ItemRadioAlbum.postUpdate("") ItemRadioArtist.postUpdate("") ItemRadioTitle.postUpdate("") ItemCoverArtURL.postUpdate(defaultCover) val _item = _favoritenItems.get(item); if (_item !== null) { logInfo(loggerName, "Switching to station " + stationFavoriteValue) _item.sendCommand(stationFavoriteValue) } ] } ItemRadioSelectStation.postUpdate(-1) ItemRadioSelectPodcast.postUpdate(-1) end rule "Podcast auswählen" when Item ItemRadioSelectPodcast changed then val podcastIndex = (ItemRadioSelectPodcast.state as DecimalType).intValue if (podcastIndex >= 0) { ItemRadioTitle.postUpdate("") ItemRadioAlbum.postUpdate("") ItemRadioArtist.postUpdate("") val podcastItem = _podcastItems.get(podcastIndex) if (podcastItem !== null) { GroupRadioControl.members.filter[state == PLAY].forEach[ item | // ItemArtistInformation.postUpdate("") ItemRadioAlbum.postUpdate("") ItemRadioArtist.postUpdate("") ItemRadioTitle.postUpdate("") ItemCoverArtURL.postUpdate(defaultCover) var _item = _uriItems.get(item); if (_item !== null) { _item.sendCommand(podcastItem.state.toString()) return } ] ItemRadioSelectPodcast.postUpdate(-1) ItemRadioSelectStation.postUpdate(-1) } } end rule "Zusammenfassungsseite Steuerung" when Item ItemRadioControl changed then switch (ItemRadioControl.state) { case NEXT: GroupRadioControl.members.filter[state == PLAY].forEach[ item | item.sendCommand(NEXT)] case PREVIOUS: GroupRadioControl.members.filter[state == PLAY].forEach[ item | item.sendCommand(PREVIOUS)] case PAUSE: GroupRadioControl.members.filter[state == PLAY].forEach[ item | item.sendCommand(PAUSE)] } end rule "Eingeschaltete Radios" when Item GroupRadioControl changed then ItemRadioOnCount.postUpdate(GroupRadioControl.members.filter[state == PLAY].length) end // rule "Radios synchronisieren" // when // Item ItemSynchronizeAllPlayers changed // then // if (ItemSynchronizeAllPlayers.state == ON) { // ItemSonosMasterBastelzimmer.sendCommand("Bad") // // ItemSonosMasterBastelzimmer.sendCommand("Buero") // ItemSonosMasterBastelzimmer.sendCommand("Schlafzimmer") // } else { // ItemSonosStandaloneSchlafzimmer.sendCommand(ON) // // ItemSonosStandaloneKueche.sendCommand(ON) // ItemSonosStandaloneBad.sendCommand(ON) // ItemSonosStandaloneBastelzimmer.sendCommand(ON) // ItemSonosStandaloneBuero.sendCommand(ON) // } // end