Use format macro instead of directly concating
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
8511cde67e
commit
6c8b73f60f
|
@ -140,7 +140,7 @@ impl PresenceDeviceConfig {
|
|||
|
||||
// @TODO This is not perfect, if the topic is some/+/thing/# this will fail
|
||||
let offset = config.presence.topic.find('+').or(config.presence.topic.find('#')).unwrap();
|
||||
let topic = config.presence.topic[..offset].to_owned() + class + "/" + identifier;
|
||||
let topic = format!("{}/{class}/{identifier}", &config.presence.topic[..offset-1]);
|
||||
trace!("Setting presence mqtt topic: {topic}");
|
||||
self.mqtt = Some(MqttDeviceConfig { topic });
|
||||
}
|
||||
|
@ -245,9 +245,9 @@ impl Device {
|
|||
Device::AudioSetup { mqtt, mixer, speakers } => {
|
||||
trace!(id = identifier, "AudioSetup [{}]", identifier);
|
||||
// Create the child devices
|
||||
let mixer_id = identifier.to_owned() + ".mixer";
|
||||
let mixer_id = format!("{}.mixer", identifier);
|
||||
let mixer = (*mixer).create(&mixer_id, config, client.clone()).await?;
|
||||
let speakers_id = identifier.to_owned() + ".speakers";
|
||||
let speakers_id = format!("{}.speakers", identifier);
|
||||
let speakers = (*speakers).create(&speakers_id, config, client.clone()).await?;
|
||||
|
||||
AudioSetup::build(&identifier, mqtt, mixer, speakers, client).await
|
||||
|
|
|
@ -48,7 +48,7 @@ pub fn start(mut presence_rx: presence::Receiver, mut light_sensor_rx: light_sen
|
|||
impl OnPresence for DebugBridge {
|
||||
async fn on_presence(&mut self, presence: bool) {
|
||||
let message = PresenceMessage::new(presence);
|
||||
let topic = self.topic.clone() + "/presence";
|
||||
let topic = format!("{}/presence", self.topic);
|
||||
self.client.publish(topic, rumqttc::QoS::AtLeastOnce, true, serde_json::to_string(&message).unwrap())
|
||||
.await
|
||||
.map_err(|err| warn!("Failed to update presence on {}/presence: {err}", self.topic))
|
||||
|
@ -60,7 +60,7 @@ impl OnPresence for DebugBridge {
|
|||
impl OnDarkness for DebugBridge {
|
||||
async fn on_darkness(&mut self, dark: bool) {
|
||||
let message = DarknessMessage::new(dark);
|
||||
let topic = self.topic.clone() + "/darkness";
|
||||
let topic = format!("{}/darkness", self.topic);
|
||||
self.client.publish(topic, rumqttc::QoS::AtLeastOnce, true, serde_json::to_string(&message).unwrap())
|
||||
.await
|
||||
.map_err(|err| warn!("Failed to update presence on {}/presence: {err}", self.topic))
|
||||
|
|
|
@ -23,11 +23,13 @@ pub struct AudioSetup {
|
|||
impl AudioSetup {
|
||||
pub async fn build(identifier: &str, mqtt: MqttDeviceConfig, mixer: DeviceBox, speakers: DeviceBox, client: AsyncClient) -> Result<Self, DeviceError> {
|
||||
// We expect the children devices to implement the OnOff trait
|
||||
let mixer_id = mixer.get_id().to_owned();
|
||||
let mixer = AsOnOff::consume(mixer)
|
||||
.ok_or_else(|| DeviceError::OnOffExpected(identifier.to_owned() + ".mixer"))?;
|
||||
.ok_or_else(|| DeviceError::OnOffExpected(mixer_id))?;
|
||||
|
||||
let speakers_id = speakers.get_id().to_owned();
|
||||
let speakers = AsOnOff::consume(speakers)
|
||||
.ok_or_else(|| DeviceError::OnOffExpected(identifier.to_owned() + ".speakers"))?;
|
||||
.ok_or_else(|| DeviceError::OnOffExpected(speakers_id))?;
|
||||
|
||||
client.subscribe(mqtt.topic.clone(), rumqttc::QoS::AtLeastOnce).await?;
|
||||
|
||||
|
|
|
@ -37,10 +37,11 @@ impl IkeaOutlet {
|
|||
async fn set_on(client: AsyncClient, topic: &str, on: bool) {
|
||||
let message = OnOffMessage::new(on);
|
||||
|
||||
let topic = format!("{}/set", topic);
|
||||
// @TODO Handle potential errors here
|
||||
client.publish(topic.to_owned() + "/set", rumqttc::QoS::AtLeastOnce, false, serde_json::to_string(&message).unwrap())
|
||||
client.publish(topic.clone(), rumqttc::QoS::AtLeastOnce, false, serde_json::to_string(&message).unwrap())
|
||||
.await
|
||||
.map_err(|err| warn!("Failed to update state on {topic}/set: {err}"))
|
||||
.map_err(|err| warn!("Failed to update state on {topic}: {err}"))
|
||||
.ok();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user