config('mqtt.max_payload_bytes', 1048576)) { throw new \InvalidArgumentException('MQTT payload exceeds the configured size limit.'); } if (!in_array($qos, [0, 1, 2], true)) { throw new \InvalidArgumentException('MQTT QoS must be 0, 1, or 2.'); } $traceId = bin2hex(random_bytes(8)); ChannelClient::connect(); ChannelClient::publish('mqtt.publish', compact('topic', 'payload', 'qos', 'retain', 'traceId')); return $traceId; } }