diff --git a/HA/custom_components/yoradio/media_player.py b/HA/custom_components/yoradio/media_player.py index 27223e1..95af1ac 100644 --- a/HA/custom_components/yoradio/media_player.py +++ b/HA/custom_components/yoradio/media_player.py @@ -20,7 +20,7 @@ from homeassistant.components.media_player import ( RepeatMode, ) -VERSION = '0.9.410' +VERSION = '0.9.553' _LOGGER = logging.getLogger(__name__) @@ -137,16 +137,19 @@ class yoradioDevice(MediaPlayerEntity): await mqtt.async_subscribe(self.api.hass, self.api.root_topic+'/volume', self.volume_listener, 0, "utf-8") async def status_listener(self, msg): - js = json.loads(msg.payload) - self._media_title = js['title'] - self._track_artist = js['name'] - if js['on']==1: - self._state = MediaPlayerState.PLAYING if js['status']==1 else MediaPlayerState.IDLE - else: - self._state = MediaPlayerState.PLAYING if js['status']==1 else MediaPlayerState.OFF - self._current_source = str(js['station']) + '. ' + js['name'] try: - self.async_schedule_update_ha_state() + js = json.loads(msg.payload) + self._media_title = js['title'] + self._track_artist = js['name'] + if js['on']==1: + self._state = MediaPlayerState.PLAYING if js['status']==1 else MediaPlayerState.IDLE + else: + self._state = MediaPlayerState.PLAYING if js['status']==1 else MediaPlayerState.OFF + self._current_source = str(js['station']) + '. ' + js['name'] + try: + self.async_schedule_update_ha_state() + except: + pass except: pass diff --git a/README.md b/README.md index 0b47392..014f772 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,12 @@ Work is in progress... --- ## Version history +### 0.9.553 +- fix "No 'Access-Control-Allow-Origin' header is present on the requested resource" on saving playlist\ + just reupload the file `script.js.gz` with Webboard uploader +- fixed error "assert failed: udp_new_ip_type /IDF/components/lwip/lwip/src/core/udp.c:1278 (Required to lock TCPIP core functionality!)" +- fixed error "Exception in status_listener when handling msg" in HA component + ### 0.9.552 - fixed compilation error for ESP cores version below 3.0.0\ Thanks to @salawalas ! https://github.com/e2002/yoradio/pull/197/ diff --git a/yoRadio/data/www/script.js.gz b/yoRadio/data/www/script.js.gz index bc97896..4787539 100644 Binary files a/yoRadio/data/www/script.js.gz and b/yoRadio/data/www/script.js.gz differ diff --git a/yoRadio/src/core/options.h b/yoRadio/src/core/options.h index 1a308c7..f893323 100644 --- a/yoRadio/src/core/options.h +++ b/yoRadio/src/core/options.h @@ -1,7 +1,7 @@ #ifndef options_h #define options_h -#define YOVERSION "0.9.552" +#define YOVERSION "0.9.553" /******************************************************* DO NOT EDIT THIS FILE. diff --git a/yoRadio/src/core/timekeeper.cpp b/yoRadio/src/core/timekeeper.cpp index a2b60b6..e7810de 100644 --- a/yoRadio/src/core/timekeeper.cpp +++ b/yoRadio/src/core/timekeeper.cpp @@ -53,36 +53,11 @@ bool TimeKeeper::loop0(){ // core0 (display) _last2s = currentTime; _upRSSI(); } - if (currentTime - _last5s >= 5000) { // 2sec + if (currentTime - _last5s >= 5000) { // 5sec _last5s = currentTime; //HEAP_INFO(); } - #ifdef DUMMYDISPLAY - return true; - #endif - static uint32_t lastWeatherTime = 0; - if (currentTime - lastWeatherTime >= WEATHER_SYNC_INTERVAL) { - lastWeatherTime = currentTime; - forceWeather = true; - } - static uint32_t lastTimeTime = 0; - if (currentTime - lastTimeTime >= TIME_SYNC_INTERVAL) { - lastTimeTime = currentTime; - forceTimeSync = true; - } - if (!busy && (forceWeather || forceTimeSync) && network.status == CONNECTED) { - busy = true; - //config.setTimeConf(); - xTaskCreatePinnedToCore( - _syncTask, - "syncTask", - SYNC_STACK_SIZE, - NULL, // Params - SYNC_TASK_PRIORITY, - NULL, // Descriptor - SYNC_TASK_CORE - ); - } + return true; // just in case } @@ -106,6 +81,35 @@ bool TimeKeeper::loop1(){ // core1 (player) if (currentTime - _last2s >= 2000) { // 2sec _last2s = currentTime; } + + #ifdef DUMMYDISPLAY + return true; + #endif + // Sync weather & time + static uint32_t lastWeatherTime = 0; + if (currentTime - lastWeatherTime >= WEATHER_SYNC_INTERVAL) { + lastWeatherTime = currentTime; + forceWeather = true; + } + static uint32_t lastTimeTime = 0; + if (currentTime - lastTimeTime >= TIME_SYNC_INTERVAL) { + lastTimeTime = currentTime; + forceTimeSync = true; + } + if (!busy && (forceWeather || forceTimeSync) && network.status == CONNECTED) { + busy = true; + //config.setTimeConf(); + xTaskCreatePinnedToCore( + _syncTask, + "syncTask", + SYNC_STACK_SIZE, + NULL, // Params + SYNC_TASK_PRIORITY, + NULL, // Descriptor + SYNC_TASK_CORE + ); + } + return true; // just in case } @@ -217,7 +221,6 @@ void TimeKeeper::weatherTask(){ bool _getWeather(char *wstr) { #if (DSP_MODEL!=DSP_DUMMY || defined(USE_NEXTION)) && !defined(HIDE_WEATHER) - WiFiClient client; const char* host = "api.openweathermap.org"; if (!client.connect(host, 80)) {