diff --git a/hasspy/mqtt.py b/hasspy/mqtt.py
index 75fec3b..e50a0fc 100644
--- a/hasspy/mqtt.py
+++ b/hasspy/mqtt.py
@@ -74,14 +74,17 @@ class HassClient(Client):
     def on_command(self, client: Client, userdata: Any, message: MQTTMessage) -> None:
         payload = message.payload.decode("utf-8")
 
-        if not self.power_on and payload == "POWER_ON":
-            log.info("Cancelling shutdown…")
-            self.power_on = True
-            run(["systemctl", "poweroff", "--when=cancel"])
-        elif self.power_on and payload == "POWER_OFF":
-            log.info("Powering off…")
-            self.power_on = False
-            run(["systemctl", "poweroff", "--when=+1m"])
+        match payload:
+            case "POWER_ON":
+                if not self.power_on:
+                    log.info("Cancelling shutdown…")
+                    self.power_on = True
+                    run(["systemctl", "poweroff", "--when=cancel"])
+            case "POWER_OFF":
+                if self.power_on:
+                    log.info("Powering off…")
+                    self.power_on = False
+                    run(["systemctl", "poweroff", "--when=+1m"])
 
         self.publish_state()