From 6bef9ca9d79020dbc99eb444a20b7f3a8c404337 Mon Sep 17 00:00:00 2001 From: e2002 Date: Wed, 22 Feb 2023 09:57:58 +0300 Subject: [PATCH] v0.8.950 --- HA/custom_components/yoradio/media_player.py | 10 +++++----- yoRadio/src/core/mqtt.cpp | 8 +++++--- yoRadio/src/core/player.cpp | 4 ++-- yoRadio/src/core/player.h | 6 +++++- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/HA/custom_components/yoradio/media_player.py b/HA/custom_components/yoradio/media_player.py index db1c3e5..346ffa0 100644 --- a/HA/custom_components/yoradio/media_player.py +++ b/HA/custom_components/yoradio/media_player.py @@ -45,6 +45,7 @@ from homeassistant.const import ( SUPPORT_YORADIO = SUPPORT_PAUSE | SUPPORT_PLAY | SUPPORT_STOP |\ SUPPORT_VOLUME_SET | SUPPORT_VOLUME_STEP | \ + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ SUPPORT_SELECT_SOURCE | SUPPORT_BROWSE_MEDIA | SUPPORT_PLAY_MEDIA @@ -140,7 +141,10 @@ class yoradioDevice(MediaPlayerEntity): js = json.loads(msg.payload) self._media_title = js['title'] self._track_artist = js['name'] - self._state = STATE_PLAYING if js['status']==1 else STATE_IDLE + if js['on']==1: + self._state = STATE_PLAYING if js['status']==1 else STATE_IDLE + else: + self._state = STATE_OFF self._current_source = str(js['station']) + '. ' + js['name'] try: self.async_schedule_update_ha_state() @@ -246,10 +250,6 @@ class yoradioDevice(MediaPlayerEntity): async def async_media_previous_track(self): await self.api.set_command("prev") - async def async_turn_off(self): - await self.api.set_command("stop") - self._state = STATE_IDLE - async def async_media_stop(self): await self.api.set_command("stop") self._state = STATE_IDLE diff --git a/yoRadio/src/core/mqtt.cpp b/yoRadio/src/core/mqtt.cpp index 589a319..3d076ca 100644 --- a/yoRadio/src/core/mqtt.cpp +++ b/yoRadio/src/core/mqtt.cpp @@ -109,15 +109,17 @@ void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties } if (strcmp(buf, "turnoff") == 0) { uint8_t sst = config.store.smartstart; - player.stop(); + config.setDspOn(0); + player.mode = STOPPED; + telnet.info(); + delay(100); config.store.smartstart = sst; config.save(); - config.setDspOn(0); return; } if (strcmp(buf, "turnon") == 0) { config.setDspOn(1); - if (config.store.smartstart == 1) player.play(config.store.lastStation); + if (config.store.smartstart == 1) player.request.station = config.store.lastStation; return; } int volume; diff --git a/yoRadio/src/core/player.cpp b/yoRadio/src/core/player.cpp index bc9b42f..b6f8483 100644 --- a/yoRadio/src/core/player.cpp +++ b/yoRadio/src/core/player.cpp @@ -35,7 +35,7 @@ Player player; void Player::init() { Serial.print("##[BOOT]#\tplayer.init\t"); #ifdef MQTT_ROOT_TOPIC - memset(burl, 0, 400); + memset(burl, 0, MQTT_BURL_SIZE); #endif if(MUTE_PIN!=255) pinMode(MUTE_PIN, OUTPUT); #if I2S_DOUT!=255 @@ -197,7 +197,7 @@ void Player::browseUrl(){ }else{ telnet.printf("##ERROR#:\tError connecting to %s\n", burl); } - memset(burl, 0, 400); + memset(burl, 0, MQTT_BURL_SIZE); } #endif diff --git a/yoRadio/src/core/player.h b/yoRadio/src/core/player.h index 672d46c..6e1c7ff 100644 --- a/yoRadio/src/core/player.h +++ b/yoRadio/src/core/player.h @@ -8,6 +8,10 @@ #include "../audioVS1053/audioVS1053Ex.h" #endif +#ifndef MQTT_BURL_SIZE + #define MQTT_BURL_SIZE 512 +#endif + enum audioMode_e { PLAYING, STOPPED }; struct audiorequest_t @@ -30,7 +34,7 @@ class Player: public Audio { bool resumeAfterUrl = false; uint32_t sd_min, sd_max; #ifdef MQTT_ROOT_TOPIC - char burl[400]; /* buffer for browseUrl */ + char burl[MQTT_BURL_SIZE]; /* buffer for browseUrl */ #endif public: Player();